转运体是否能够检测到其他病原体?



我正在模拟挖掘机的公用事业罢工。我将挖掘机建模为具有自由空间运动的运输工具。我还有一个叫Utility的代理。Utility的人口被称为utilities。

我想计算运输工人的公用事业罢工。运输船有检测能力,例如如果|Z(transporter) - Z(utility)| <= 3就不会有任何事故!但是如果|Z(transporter) - Z(utility)| > 3发生罢工,传送器需要停止工作一段时间,例如2分钟,然后重新开始工作。

我创建了一个名为v_utilitystrikennumber的变量和一个名为e_checkuutilitystrike的事件。这是@Benjamin给别人的建议。我为事件Action编写了以下代码:

for (Utility u: main.utilities){
dist = distanceTo(u);
return dist; 
}
if (dist <= 3){
main.utilities_remove(u);
}
else{
v_utilityStrikeNumber += 1; 
u.v_isUtilityStrike = true; 
state_excavator.receiveMessage("interrupt"); 
}

我收到以下错误:

  1. u无法解析为变量
  2. dist无法解析为变量
  3. 类型u不可见

你能告诉我怎么解决吗?谢谢你。

这些错误大多是编码错误。让我们逐一解决它们:

  1. u只能在第一个for循环中访问,不能在for循环之外再次使用。U在每个循环迭代中都是不同的实用程序。那么,当您退出循环时,您指的是哪个实用程序?如果您打算在for循环中继续,例如检查每个实用程序的dist是否小于3,则在结束之前不要关闭for循环。

  2. 似乎你没有一个变量叫dist在你的模型?因此,只需在第一次引入dist之前添加double即可。

  3. 我相信我应该解决这个问题。

那么你的代码应该是这样的:

for (Utility u: main.utilities){
double dist = 0;
dist = distanceTo(u);

if (dist <= 3){
main.remove_utilities(u);
}
else{
v_utilityStrikeNumber += 1; 
u.v_isUtilityStrike = true; 
state_excavator.receiveMessage("interrupt"); 
}
}

试试这个,如果你仍然有错误,让我知道。

最新更新