【问题标题】:Anylogic: How to create multiple orders at one moment?Anylogic:如何同时创建多个订单?
【发布时间】:2022-01-27 03:08:33
【问题描述】:

我在“客户”代理群体中的 Anylogic 中创建了一个时间表,客户必须在其中创建订单并将其发送到“终端”。每天,每个客户必须发送到终端的订单数量都不同。我想一次创建多个订单(每天,即时间表中的 start 列),我要创建的数量是时间表中的 value 列.如何做到这一点?

正如您在下面看到的,现在每天只创建一个订单(以金额作为参数),但我想在那一天/时刻创建这个数量的订单。感谢您的帮助!

时间表数据如下:

【问题讨论】:

  • 请显示时间表数据的截图。
  • 谢谢,我添加了日程数据的截图

标签: action anylogic schedule orders agent


【解决方案1】:

你可以这样做:

您必须在源代码和退出块上设置代理的参数send(agent,main.terminals(0))

如果您的值中缺少数据而不是 0,请在每次到达时在您的代理中使用它:

selectFrom(db_table)
    .where(db_table.name.eq(name))
    .where(db_table.start.eq(getDayOfWeek()-1))
    .count()>0

?

selectFrom(db_table)
    .where(db_table.name.eq(name))
    .where(db_table.start.eq(getDayOfWeek()-1))
    .uniqueResult(db_table.value, int.class)
 :
 0

【讨论】:

  • 感谢您的回答!我试过了,但我得到了一个错误,因为有一些“空数据库值”,因为有些客户的某些日子,要下订单的数量是 0。你知道如何解决这个问题吗?
  • 我添加了您需要添加到主要答案@Ella的代码
【解决方案2】:

我会在我的日程安排数据中添加日期,例如 28-12-2021 15:28。然后在Repeat every 部分输入一些大的东西。我就是这样做的(我的单位始终为 1,但您可以使用任何数字):

【讨论】:

  • 我不确定你在 Repeat every 部分中提到的 something big 是什么意思
  • 与 365 一样,因此如果您的模拟运行 1 年,您将不会有重复的时间表。
  • 但是我怎样才能同时创建多个订单呢? (所以如果单位是例如8),如何在Action字段中创建8个订单?
  • 要创建的代理数量由value 列定义。如果要一个一个生成它们,则需要循环遍历它。 getValue() 将为您提供当时的单位数量,您可以循环直到达到该值并创建您的订单。
  • 哦,如果操作是Order order = new Order(customer, terminal),您认为订单数量是由value 列自动生成的吗?我在运行模型时感觉每天只下 1 个订单(而不是 value 个订单),但我可能是错的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 2022-01-08
  • 1970-01-01
  • 2021-08-27
  • 2020-05-30
  • 2021-04-17
  • 1970-01-01
相关资源
最近更新 更多