欢迎访问
GreenSim
团队主页
?/p>
http://blog.sina.com.cn/greensim
邮箱?/p>
****************
?/p>
1
?/p>
车间作业调度问题?/p>
JSP
)的遗传算法通用
MATLAB
源代?/p>
车间作业调度问题?/p>
JSP
)是一类满足任务配置和顺序约束要求的资源分?/p>
问题?/p>
是最难的组合优化问题之一?/p>
下面?/p>
MATLAB
源代码可用于求解标准
JSP
问题?/p>
虽然采用的是最普通的遗传算法?/p>
但在编解码环节,
采用了十分巧妙的?/p>
计,可以大幅提高搜索效率?/p>
function [S_best,T_min,LC]=JSPGA(M,N,Pc,Pm,Q,W)
%%
车间作业调度问题遗传算法
%
GreenSim
团队——专业级算法设计
&
代写程序
%
欢迎访问
GreenSim
团队主页
→http://blog.sina.com.cn/greensim
%%
输入参数列表
%
M
遗传算法进化代数
%
N
种群规模
%
Pc
交叉概率
%
Pm
变异概率
%
Q
机器序号矩阵
%
W
操作时间矩阵
%%
输出参数列表
%
S_best
最优调度方案,
m
×
1
的细胞结构,每个细胞单元?/p>
La
×
2
的矩?/p>
%
T_min
最优调度方案对应的最短调度时?/p>
%
LC
历史最优适应值收敛曲?/p>
%%
第一步:参数初始?/p>
[n,k]=size(Q);%n
为工件总数?/p>
k
为工序总数
m=max(max(Q));%m
为机器总数
S_best=cell(m,1);
T_min=inf;
LC=zeros(1,M);
%%
第二步:产生初始种群
farm=InitPop(N,Q,W,n,k,m);%
调用产生初始种群的子函数
%%
counter=0;%
设置迭代计数?/p>
while counter<M%
停止条件为达到最大迭代次?/p>
%%
第三步:交叉
FARM=Cross(farm,Pc,m);%
调用交叉子函?/p>
%%
第四步:变异
FARM=Mutate(FARM,Pm,m);%
调用变异子函?/p>
%%
第五步:修正算子
FARM=Modify(FARM,Q,W,n,k);%
调用修正子函?/p>