Anylogic:如何向特定代理发送订单?
Anylogic: how to send order to specific agent?
我是 Anylogic 的新手,我有这些代理人:
- 客户(参数:姓名、纬度、经度)
- 航站楼(参数:名称、纬度、经度)
- 订单(参数:客户、终端)
- 卡车(状态图先移动到order.terminal然后移动到order.customer)
对于每个不同的终端(我有 5 个),每个客户的订单率都不同。因此,我(在客户内部)为每个终端的订单率创建了五个时间表。现在我想在 Customer 中创建一个事件来创建订单(每个终端一个事件)。我现在有这个用于名称为 terminalA 的终端:
Order order = new Order(this, terminal.name("terminalA"));
Truck truck = getNearestAgentByRoute(filter(main.trucks,
v -> v.inState(Truck.Free)));
if (truck != null)
send(order, truck);
但是,terminal.name("terminalA") 部分不起作用,因为它无法解析为变量。我如何为每个终端创建订单并告诉 Anylogic 它应该为哪个终端(使用什么名称)创建订单?
在此先感谢您的帮助!
亲切的问候,
艾拉
您不需要使用 terminal.name("terminalA")
,如果您已将该特定代理命名为 terminalA
,则只需使用 terminalA
;否则你需要通过索引访问它们,例如 main.terminals(0)
。 Order 代理中的参数类型应设置为 Terminal
。例如,下面我创建了一个订单代理,其中包含许多不同的参数和变量,每个参数和变量都有一个自定义类型。
编辑。您还需要确保您的代理列表不为空:
我是 Anylogic 的新手,我有这些代理人:
- 客户(参数:姓名、纬度、经度)
- 航站楼(参数:名称、纬度、经度)
- 订单(参数:客户、终端)
- 卡车(状态图先移动到order.terminal然后移动到order.customer)
对于每个不同的终端(我有 5 个),每个客户的订单率都不同。因此,我(在客户内部)为每个终端的订单率创建了五个时间表。现在我想在 Customer 中创建一个事件来创建订单(每个终端一个事件)。我现在有这个用于名称为 terminalA 的终端:
Order order = new Order(this, terminal.name("terminalA"));
Truck truck = getNearestAgentByRoute(filter(main.trucks,
v -> v.inState(Truck.Free)));
if (truck != null)
send(order, truck);
但是,terminal.name("terminalA") 部分不起作用,因为它无法解析为变量。我如何为每个终端创建订单并告诉 Anylogic 它应该为哪个终端(使用什么名称)创建订单?
在此先感谢您的帮助!
亲切的问候, 艾拉
您不需要使用 terminal.name("terminalA")
,如果您已将该特定代理命名为 terminalA
,则只需使用 terminalA
;否则你需要通过索引访问它们,例如 main.terminals(0)
。 Order 代理中的参数类型应设置为 Terminal
。例如,下面我创建了一个订单代理,其中包含许多不同的参数和变量,每个参数和变量都有一个自定义类型。
编辑。您还需要确保您的代理列表不为空: