资源简介
用matlab程序解决作业车间调度问题的小例子,程序可运行,可画出进化图与甘特图。内附算例与程序说明。

代码片段和文件信息
function [ ret ] = Cross( pxchromlenchromn )
%本函数完成交叉操作
%px input:交叉概率
%chrom input:染色体群
%sizepop input:种群规模
%lenchrom input:染色体长度
%ret output:交叉后的染色体
sizepop=size(chrom1);
i=1;
randjob=4; %变动工件数
while i<=sizepop %是否进行交叉操作由交叉概率决定(continue控制)
%随机选择两个染色体进行交叉
temp=randperm(sizepop);
index=temp(1:2);
s1=chrom(index(1):);
s2=chrom(index(2):);
%初始化中间片段
s11=zeros(1n*2);
s22=zeros(1n*2);
index=zeros(2n*2);
%交叉概率决定是否交叉
pick=rand;
while pick==0
pick=rand;
end
id1=1;
id2=1;
if pick %随机选择两个工件
tempjob=randperm(n);
job1=tempjob(11);
job2=tempjob(12);
job3=tempjob(13);
job4=tempjob(14);
%job5=tempjob(15);
for j=1:lenchrom
if s1(1j)==job1
index(1id1)=j;
s11(1id1)=job1;
id1=id1+1;
end
if s1(1j)==job2
index(1id1)=j;
s11(1id1)=job2;
id1=id1+1;
end
if s1(1j)==job3
index(1id1)=j;
s11(1id1)=job3;
id1=id1+1;
end
if s1(1j)==job4
index(1id1)=j;
s11(1id1)=job4;
id1=id1+1;
end
end
for j=1:lenchrom
if s2(1j)==job1
index(2id2)=j;
s22(1id2)=job1;
id2=id2+1;
end
if s2(1j)==job2
index(2id2)=j;
s22(1id2)=job2;
id2=id2+1;
end
if s2(1j)==job3
index(2id2)=j;
s22(1id2)=job3;
id2=id2+1;
end
if s2(1j)==job4
index(2id2)=j;
s22(1id2)=job4;
id2=id2+1;
end
end
%交叉后的第一条染色体
for j=1:(randjob*n)
id1=index(1j);
s1(1id1)=s22(1j);
end
%交叉后的第二条染色体
for j=1:(randjob*n)
id2=index(2j);
s2(1id2)=s11(1j);
end;
end
if i==sizepop %调整ret染色体数目,控制为奇数
ret(i:)=s1;
else
ret(i:)=s1;
ret((i+1):)=s2;
end
i=i+2;
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2617 2017-12-24 15:59 GA_JSP\Cross.m
文件 5399 2018-05-25 23:06 GA_JSP\gant.m
文件 3297 2018-06-04 20:09 GA_JSP\main.m
文件 4251 2018-06-04 20:01 GA_JSP\makespan.m
文件 738 2018-01-15 14:17 GA_JSP\Mutation.m
文件 382 2018-06-04 20:04 GA_JSP\remain.m
文件 1142 2018-06-04 20:00 GA_JSP\Select.m
文件 422 2018-06-04 19:59 GA_JSP\time.m
文件 233 2018-06-04 20:14 GA_JSP\程序说明.txt
文件 1019 2017-12-21 13:05 GA_JSP\算例.txt
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论