【发布时间】:2021-04-10 22:49:04
【问题描述】:
我有两个代理,agentA(evStations)(初始位置和号码从数据库加载)和一个 AgentB(eVs)(最初为空,代理的数量由用户指定)。
在模型启动时,我想将 AgentsB 放置在 AgentA 的位置(精确的纬度和经度)。我怎样才能做到这一点? 知道 AgentB 的数量远大于 AgnetA。
我尝试过的(基于现有的 anylogic 示例),在 main> 代理操作> 在启动时
for(EV ev: eVs){
ev.set_lat(
selectFrom(evstations)
.where(evstations.id.eq(ev.getIndex()))
.firstResult(evstations.latitude)
);
ev.set_lon(
selectFrom(evstations)
.where(evstations.id.eq(ev.getIndex()))
.firstResult(evstations.logtitude)
);
ev.setLocation(ev.lat, ev.lon);
}
[enter image description here][1]
我不确定如何正确执行此操作,我认为这仅在两个代理具有相同大小时才有效。 请指教?
谢谢
【问题讨论】:
-
如果 agentAs 为 100,agentB 为 150,则可以将前 100 个放在相同的位置,但其他 50 个要放在哪里?
-
反之,agentA大约有10个位置,而agenB是50个。我希望B的50个agent随机分布在agent B的10个位置中。
-
那不是相反的:P
-
哦,是的,你是对的。
-
agentA 大约有 10 个位置,而 agenB 是 50。我希望 B 的 50 个代理分布在代理 B 的 10 个位置中。不一定是随机分布的,例如一个 agnetB 有 10 个和其他只有 3. 我该怎么做?