【问题标题】:Read Anylogic schedule exceptions from database table从数据库表中读取 Anylogic 计划异常
【发布时间】:2021-12-12 21:43:45
【问题描述】:

如何从 Excel 文件中读取时间表的例外日期列表,而不必分别采用文件中的每个日期?我正在尝试制定一个轮班计划,其中考虑到未来 5 年的假期等。为此,我创建了一个包含假期日期列表的 Excel 表格,我现在想在我的 AnyLogic 模拟中使用它。我尝试了我的计划对象的异常部分,但没有找到将此部分连接到我的 excel 文件的方法。我到这里的唯一选择是手动输入每个日期......因为这将非常乏味,我正在寻找一种解决方法(Java 代码?)。有人可以帮忙吗?

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java simulation anylogic


【解决方案1】:

确实,没有内置的方法可以做到这一点。您需要对您的日程安排进行编码。这允许以编程方式添加异常,请参阅https://anylogic.help/anylogic/data/schedule.html#creating-and-initializing-schedule-from-code-on-model-startup

具体来说:

【讨论】:

【解决方案2】:

假设您有一个整数类型的计划对象和一个充满异常日期的数据库表,您希望计划的整数值在一整天内为 0。

然后您可以使用以下代码以编程方式将例外添加到您的日程安排中

List<Tuple> rows = selectFrom(db_table).list();

for (Tuple row : rows) {
    Date exceptionDate = row.get( db_table.db_column );
    schedule.addException(exceptionDate.getYear(), exceptionDate.getMonth(), exceptionDate.getDay(), exceptionDate.getHours(), exceptionDate.getMinutes(), exceptionDate.getSeconds(), 
                        exceptionDate.getYear(), exceptionDate.getMonth(), exceptionDate.getDay()+1, exceptionDate.getHours(), exceptionDate.getMinutes(), exceptionDate.getSeconds(),
0, false);
}

添加异常的格式有点繁琐但是是:

schedule.addException(startYear, startMonth, startDay, startHour, startMinute, startSecond, endYear, endMonth, endDay, endHour, endMinute, endSecond, value, annually);

value 对象是您的计划类型的值

【讨论】:

  • 谢谢! - 你会说哪里是插入代码的最佳位置?在“操作”字段的计划属性下?
  • 您在模型开始时运行的单独函数。请记住确保数据库中的所有数据只能从模型中访问一次,最好在模型开始时将其全部读取,然后以某种形式存储,然后从那里使用它。如果您觉得我的回答有帮助,请记得点赞并接受它;-)
  • 再次感谢 -JFYI:我已经尝试过为您的答案投票,但似乎我还没有足够的“声誉”积分来做这件事......对不起!
猜你喜欢
  • 2020-02-14
  • 2021-12-19
  • 1970-01-01
  • 2022-01-24
  • 2012-12-23
  • 2021-07-09
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多