遗传算法的一个例子(C/C++)
作者:newsuppy
摘要: m 个工件分配给 m 架机床的效益最优化问题,使用一种遗传算法解决。
一,已知效益矩阵 E
e
ij
M
1
M
2
M
3
M
4
M
5
J
1
5
6
4
8
3
J
2
6
4
9
8
5
J
3
4
3
2
5
4
J
4
7
2
4
5
3
J
5
3
6
4
5
5
J
n
为工件,
M
n
为机床,矩阵对应的一格即为,某工件分配给某机床的效益。效益
指花费的时间,金钱等,数值越大越差。产生一个分配序列 C=(5,2,3,4,1)指将
5 号工件分配给 1 号机床,2 号工件分配给 2 号机床,以此类推求得当前分配对
应的效益为 3+4+2+5+3=17。最佳化问题就是要求该效益值最小时对应的分配序
列。下面采用一种遗传算法,具体算法这里不再复述,可以参考[1]或其他相关
书籍。要注意由于工件与机床是一一对应的,算法与一些常见的遗传算法在某些
细节上有所不同,如染色体编码,到位,变异。
下面是算法实现,由于某些原因,不得不采用 C/C++混合编码,C++代码主要在
文件输入输出部分。另外要让程序正常运行需要包括几个支持文件(与程序在同
一路径):
benefit.txt 输入效益矩阵
num_of_gen.txt 最后产生的代序
numofcolony.txt 为群体中个体总数
numoftm.txt 为工件数与机床数
内容可以如下:
benefit.txt
评论1