使用 gotoPopulation 时将代理保持在同一位置

Keeping agent in the same location when using gotoPopulation

我在另一个代理人(船)中有大量代理人(容器)。这是必需的,这样集装箱才能随船移动。船停靠后,我希望容器从 'ship' 中的人口变为 'main' 中的人口。当我使用以下

gotoPopulation(main.containers_main);

发送容器代理到主环境中的容器人口,容器将移动到主环境中的0,0。

以上代码放在容器代理中。

有没有办法改变代理的人口但保持在同一位置?

谢谢

我不这么认为。至于代理,没有“相同位置”,它们总是相对于某物(以前是相对于Ship,现在是相对于main)。

但您可以通过以下方式手动将它们定位在相同的(明显的)位置:

  1. 获取容器在 main 上的相对位置,同时仍在 Ship 中:getX() + ship.getX()(与 Y 相同,假设 ship 嵌入 Main 中,container 嵌入 Ship 中)--> store短暂地双 myPosX
  2. 像上面那样移动到 main 上的新人口
  3. 设置相对于 Main 的“新”位置:setX(myPosX)

这听起来很麻烦但很有意义,一旦您了解嵌入式代理位置总是相对于它们的父位置。删除父项,您需要考虑调整相对位置以将它们保持在(看似)“相同”的位置