我想从Point转换为Agent,以便为我提供正确的位置

时间:2019-07-20 09:38:09

标签: anylogic

我正在基于代理的建模中创建一个函数,该函数在区域内生成一个随机点,然后将该点转换为代理。但是,当我稍后使用此功能时,这些点在地图上无法为我提供适当的位置以进行进一步的计算。我想知道我在做什么错吗?或者如何改善这一点。

该函数的返回类型为ArrayList

ArrayList<DeliveryHouse> House = new ArrayList<DeliveryHouse>();
int i;
Point p;
DeliveryHouse h;
 for(i=0;i<packagesC2C;i++)
   {
    p = main.Region2.randomPointInside();
    h = main.deliveryHouse.setLocation(p);
    House.add(i, h);
   };
return House;

1 个答案:

答案 0 :(得分:0)

我在代码中看到的主要问题是您没有初始化代理“ h”,而是将其指向您主要拥有的一个代理,这意味着您不断更改其在循环中的位置,并且只会反映最后一个位置。您创建的阵列列表将具有对同一代理的多个引用,而不是每个位置一个代理。

如果要在每个位置创建一个代理,则需要创建一个名为“ deliveryHouse”的代理,其代理类型为“ DeliveryHouse”,并将代码更改为以下内容。请注意,总体将具有所有代理,因此您不需要该函数的任何输出。

int i;
Point p;
for(i=0;i<packagesC2C;i++)
   {
    DeliveryHouse h = main.add_deliveryHouses();
    p = main.Region2.randomPointInside();
    h.setLocation(p);
   }