本文来源于公众号【程序猿声】,作者舟寒丶
作业车间调度问题
问题模型
举个栗子
有关禁忌搜索算法的内容,公众号内有详细教程:
干货 |【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例
禁忌搜索算法求解带时间窗的车辆路径规划问题详解(附Java代码)
大家可以点击超链接回顾相关知识,这里就不再细说了。
一般而言,用禁忌搜索算法解决问题时,需要注意的点无非就是以下几个:初始解的生成;禁忌对象的选择;邻域动作算子的选择。
我们简单介绍代码中使用的算子:
代码展示
代码是github上的开源代码,作者是Thiebout Dewitte。具体代码比较长,讲解需要花很长的篇幅,但是注解比较详细,因此就不在此展示了。我们简单介绍一下输入输出,感兴趣的朋友可以文末看到下载方式,自行下载研究。
输入部分
输入算例格式如下:
第一行为注释部分,第二行数字分别为工件数、机器数。
输出部分
运行代码时,可以多种运行方式:
在Main.java文件内选择所需运行模式,算例设置也在同一文件中。
测试单一算例:使用opendeurdagKulak()方法。将测试算例路径放入Main.java中:
测试算例附带在代码内。
结果生成在编译器内部:
前三行按照机器顺序排列,cost表示总耗时,最后一行表示最长耗时的加工顺序。
测试多个算例,分别生成table1、2:
在上方输入算例所在文件夹,下方输入输出部分文件名。
table输出可放置在LaTeX环境中,在此就不展示了。
代码下载
进入公众号输入【JSPTS】不带【】,即可下载对应Java代码。