【车间调度】基于模拟退火结合粒子群算法求解车间调度问题含Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

​一种求解作业车间调度问题的混合粒子群算法,该算法适用于作业车间调度技术领域,该算法将粒子群算法与模拟退火算法结合,不仅增加了粒子的多样性,提高了寻找最优解的概率,而且由于粒子的特性而快速收敛,显著减少了搜索时间.该混合算法的执行步骤如下:步骤1:初始化算法参数,包括PSO粒子的数目,位置和速度等信息.步骤2:执行改进的PSO算法并更新粒子的位置和速度转移.步骤3:执行模拟退火算子并更新粒子信息.步骤4:执行干扰算子,如果循环中全局最优解保持不变,保留原始粒子信息,并生成一个随机粒子.步骤5:判断是否到达停止条件,是则返回最优解,否则返回步骤2.该发明结合实际情况,具有实用性强的特点.

⛄ 部分代码

%对时间矩阵,机器矩阵进行解码。

function  [FlowTimeAvg]=timedecode(particle,restrictmatrixM,restrictmatrixT,machineNum)

%particle=[1.0 1.0 3.0 2.0 3.0 4.0 2.0 6.0 4.0 3.0 1.0 6.0 5.0 5.0 6.0 4.0 3.0 2.0 4.0 3.0 2.0 5.0 4.0 6.0 1.0 2.0 1.0 5.0 5.0 6.0 1.0 4.0 2.0 6.0 3.0 5.0];

% 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];

%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];

%machineNum=6;

[particleLong1 particleLong]=size(particle);

for i=1:machineNum,

    counter(i)=[1] ;  %位置计数器;

    s(i)=[0]   ;      %工件上一工序结束时间;

    t(i)=[0]   ;

    t1(i)=[0]  ;      %每台机器的开始时间;

    WaitTime(i)=[0];      %机器等待时间;

end  

for j=1:particleLong,

    k=particle(j);

    time(k,counter(k))=restrictmatrixT(k ,counter(k))  ;     

    %时间矩阵解码

    machine(k,counter(k))=restrictmatrixM(k,counter(k));

    %机器矩阵解码;

    

    

    [rom]=max( s(k), t(machine(k,counter(k))) );

    if s(k)>t(machine(k,counter(k)))&t(machine(k,counter(k)))~=0,

        WaitTime(machine(k,counter(k)))=WaitTime(machine(k,counter(k)))+s(k)-t(machine(k,counter(k)));

    end

    s(k)=rom+time(k,counter(k));

    if t(machine(k,counter(k)))==0,

        t1(machine(k,counter(k)))=rom;

    end

    t(machine(k,counter(k)))=rom+time(k,counter(k));

    %计算每台机器上加工时间

  

    counter(k)=counter(k)+1   ;

end

    [tmax]=max(t);

    p=sum(WaitTime);

    FlowTimeAvg=sum(t-t1)/machineNum;

    %机器最长加工时间

⛄ 运行结果

⛄ 参考文献

[1] 付振奥. 粒子群算法求解车间调度问题研究[D]. 合肥工业大学, 2009.

[2] 张龙, 徐本柱, 刘晓平. 求解作业车间调度问题的混合粒子群算法[J]. 内蒙古大学学报:自然科学版, 2014, 45(1):7.

[3] 张静, 王万良, 徐新黎,等. 基于改进粒子群算法求解柔性作业车间批量调度问题[J]. 控制与决策, 2012, 027(004):513-518.

[4] 黄超杰, 胡成华. 一种求解作业车间调度问题的混合粒子群算法:.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值