您现在的位置:首页 >> 智能优化 >> 内容

基于模拟退火算法的车间调度优化matlab仿真,输出甘特图

时间:2023/2/11 21:14:09 点击:

  核心提示:A356,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJWTmphr

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览

 

3.算法概述

        模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis [1]  等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI、生产调度、控制工程、机器学习、神经网络、信号处理等领域。

4.部分源码

.........................................................................

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,

    step

    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 

 

 

error(step)=min(fitlist);

 

end

gant(bestparticle,swarminitLong,restrictmatrixM,restrictmatrixT,b)

figure;

plot(error);

A356

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168