Anylogic - 基于处理时间的队列 DB

Anylogic - queue based on processing times DB

我正在使用 anylogic 进行作业车间调度。我有 20 个作业(每个作业都有一个机器序列数据库的代理)和 5 台机器(资源)。

This is what I have right now. Source creates the 20 jobs and in the exit block i have the 'nextmachine' function, that sends each job to the correct machine of its sequence.

现在我想使用其他数据库table,即每个作业序列机器中每个作业的处理时间。我想对所有队列进行排序,以便处理时间最短。我创建了一个新代理 'processingTimes',使用新数据库 table,我正在尝试将作业 ID 与 processingTimes 相关联,以便正确关联处理时间。

Processing times table.

I created this collection, inside my new agent, containing the processing times of each job.

Did this, trying to associate both agents id but I think it is not correct.

Finally, this is the condition I put so that I can order my jobs in relation to their processing times. I also think the code is not correct.

我做错了什么提示?

新:

This is my iterator but gives me the errors showed

New collection properties.

需要进行以下更改:

  1. 从数据库
  2. 加载processingTimes时删除选择条件
  3. 创建一个 int->ProcessingTime 类型的 LinkedHashMap 集合,我们称之为 col_jobProcTimes
  4. Main->On startup - 遍历 processingTimes[] population 并将它们放入 col_jobProcTimes 地图以供稍后查找
  5. Queue“agent1 is preferred to agent2”字段中的两个 agent 是 Jobs,因此对于您需要做的每项工作:col_jobProcTimes.get((job)agent.jobpt).col_processSequence.get((job)agent.counter) 以获得双倍延迟值并比较两者

更新。

关于pt。 3 以上,代码应该是:

for (ProcessingTimes pt : processingTimes) {
    col_jobProcTimes.put(pt.jobpt, pt);
}

AnyLogic 帮助网站提供了使用 java here 的良好参考。