模拟退火的本地搜索调度
该存储库包含我的模拟退火本地搜索调度算法的Java实现。 给该算法提供了一组任务,这些任务需要在一组计算机上进行调度。 每个任务都有一个可以安排其时间的时间窗口。 该算法然后调度尽可能多的高优先级随机生成的任务。 查看解决方案历史记录图,以了解模拟退火算法如何随着时间的推移提高分数。
该算法通过排列所有任务来表示时间表。 然后,通过按任务排列指定的顺序将任务插入机器插槽中,此排列可用于创建时间表。 任何不合适的任务都被排除在外。 然后,在每次迭代中,该算法通过排列当前计划的任务排列来生成邻居计划。 如果该邻居的得分更高,我们将选择该邻居为最佳,并转移到下一代。 如果邻居的分数较差,我们仍会以一定的概率接受,随着时间的推移会降低。
该算法可在1分钟内用1000个任务,3台机器和50个时间单位执行100,000次迭代。