clc
clear
%=========数据录入,参数调整=================
swarminitNum=20;%初始生成的粒子数;
MM=[1 2 3 4 5 6
6 6 6 6 6 6];%工件、工序数量矩阵,MM第一行表示工件,第二行表示每个工件的工序数;
machineNum=6; %加工机器数;
initT=1000; %模拟退火初始温度;
gen=500; %循环迭代数;
w1=0.35; %变异率;
changeNum=3; %变异变换对数;
restrictmatrixM=[3 1 2 4 6 5
2 3 5 6 1 4
3 4 6 1 2 5
2 1 3 4 5 6
3 2 5 6 1 4
2 4 6 1 5 3];%job-shop机器约束矩阵;
restrictmatrixT=[1 3 6 7 3 6
8 5 10 10 10 4
5 4 8 9 1 7
5 5 5 3 8 9
9 3 5 4 3 1
3 3 9 10 4 1];%job-shop时间约束矩阵;
%===============PSO算法==========================
swarminit=cell(1,swarminitNum);
swarminitLong=sum(MM(2,:)); %所有工序数即粒子长度;
for i=1:swarminitNum,
swarminit{i}=randomparticle(MM) ;
end %随机生成初始粒子群体
[popu,s] = size(swarminit);
trace = ones(1,gen);
trace(1) = 10000; % 初始全局最佳适应度设为足够大
for i = 1:s,
bestfit(i) = 10000; % 初始个体历史最佳适应度设为足够大
end
bestpar = swarminit; % 个体历史最佳粒子初始化
for u=1:swarminitNum,
fitlist=[0];
end
T=initT;
for step = 1:gen,
for q=1:swarminitNum,
fitlist(q)=timedecode(swarminit{q},restrictmatrixM,restrictmatrixT,machineNum) ;
end % 计算当前粒子群每个粒子的适应度
[minval,sub] = min(fitlist); % 求得这代粒子的适应度最小值及其下标
if(trace(step) > minval) ,
trace(step) = minval;
bestparticle = swarminit{sub};
end
if(step~= gen) ,
trace(step + 1) = trace(step); % 全局最佳适应度及最佳粒子调整
end
T=0.97*T;
for i = 1:s,
tt=fitlist(i)-bestfit(i);
if(tt<0)|(min(1,exp(-tt/T))>=rand(1,1));
bestfit(i) = fitlist(i);
bestpar{i} = swarminit{i};
end
end % 个体历史最佳粒子及适应度调整 ;
for j = 1:s,
if rand(1,1)<w1,
bestparticle1=bianyi(bestparticle,changeNum,swarminitLong);
else
bestparticle1=bestparticle;
end %粒子变异;
l1=1000;
l2=1;
l3=1000;
l4=1;
while (l1-l2)>swarminitLong,
m=fix(swarminitLong*rand(1,1));
n=fix(swarminitLong*rand(1,1));
l1=max(m,n)+1;
l2=min(m,n)+1;
end
while (l3-l4)>swarminitLong,
m1=fix(swarminitLong*rand(1,1));
n1=fix(swarminitLong*rand(1,1));
l3=max(m1,n1)+1;
l4=min(m1,n1)+1;
end
swarminit{j}=cross(bestpar{j},swarminit{j},l2,l1);
swarminit{j}=cross(bestparticle1,swarminit{j},l4,l3);%粒子交叉;
end
end
[a,b,c]=timedecode2(bestparticle,restrictmatrixM,restrictmatrixT,machineNum);
disp(['优化目标: 最大完工时间'])
disp(['粒子数:' int2str(swarminitNum) ' 循环代数:' int2str(gen)])
disp(['变异率:' num2str(w1) ' 变异变换对数:' int2str(changeNum)])
disp(['模拟退火初始值:' int2str(initT) ' 模拟退火终值:' int2str(T)])
disp(['迭代循环值:' int2str(trace)])
disp(['最小平均流动时间:' int2str(a) ' 最大完工时间:' int2str(b) ' 最小间隙时间:' int2str(c) ])
disp(['最优粒子' int2str(bestparticle)])
gant(bestparticle,swarminitLong,restrictmatrixM,restrictmatrixT,b)
没有合适的资源?快使用搜索试试~ 我知道了~
Matlab车间动态调度PSO微粒群算法程序最后输出优化结果和甘特图-源码
共8个文件
m:7个
jpg:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 177 浏览量
2021-10-01
22:49:57
上传
评论
收藏 64KB ZIP 举报
温馨提示
Matlab车间动态调度PSO微粒群算法程序最后输出优化结果和甘特图_源码
资源推荐
资源详情
资源评论
收起资源包目录
Matlab车间动态调度PSO微粒群算法程序最后输出优化结果和甘特图_源码.zip (8个子文件)
Matlab车间动态调度PSO微粒群算法程序最后输出优化结果和甘特图_源码
运行对比图.jpg 71KB
randomparticle.m 593B
bianyi.m 287B
cross.m 497B
timedecode2.m 2KB
JSPmain.m 4KB
gant.m 2KB
timedecode.m 2KB
共 8 条
- 1
资源评论
- weixin_483792662024-04-06内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
- weiqi64292022-02-18用户下载后在一定时间内未进行评价,系统默认好评。
mYlEaVeiSmVp
- 粉丝: 1926
- 资源: 19万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功