【优化调度】基于蚁群算法求解无等待流水线调度优化问题含Matlab源码

1 简介

无等待流水线调度问题

【优化调度】基于蚁群算法求解无等待流水线调度优化问题含Matlab源码_第1张图片

  1. 一台机器最多只能同时加工一个工件。

  2. 每个工件在每台机器上最多只会加工一次。

  3. 每台机器加工工件的顺序相同。

  4. 每个工件在给定机器上的加工时间固定。对于所有此类以及以此为基础的调度问题,研究目标都是找到一个特定的工件序列,使得序列的总加工时间最短。

蚂蚁算法

蚂蚁算法本质上是一种用于解决组合优化问题的概率型算法。它的仿生学基础源自于蚂蚁觅食过程中的路径搜索行为。该算法具有并行计算、启发式搜索和信息正反馈的特点。蚂蚁算法被大量应用于TCP问题去求解旅行商的最优路线正是利用了其寻找优化路径的概率型算法的特点,而无等待流水线调度问题中最优工件序列的搜索也可以量化为一种路径搜索的过程。从第一个工件开始,蚂蚁根据信息素、启发函数等信息依次选择下一个工件,根据序列中给定两工件之间的完工时间之差的计算公式,我们可以得出任意给定序列的一个“路径长度”,以总加工时间为目标函数值,就可以求出“最短路径”。

正交测试

【优化调度】基于蚁群算法求解无等待流水线调度优化问题含Matlab源码_第2张图片

算法总览

【优化调度】基于蚁群算法求解无等待流水线调度优化问题含Matlab源码_第3张图片

2 部分代码

% 搜索局部更优解

function localSolution = localSearch(model_R_best, model_L_best)

    global fragmentNum;

    for q=1:fragmentNum

       for p=q:fragmentNum

           isBreak = 0;

           if q~=p

                new_R = insertSerialnumber(model_R_best,q,p);

                new_L = totaltime(new_R);

                if new_L < model_L_best   %如果新序列比当前最佳序列完工时间更少

                    localSolution = [new_L new_R]; %更新最佳路线

                    isBreak = 1;

                    break;

                end

           end

       end

       if isBreak == 1

           break;

       end

    end

    if isBreak == 0

        localSolution = [model_L_best model_R_best];

    end

end

3 仿真结果

【优化调度】基于蚁群算法求解无等待流水线调度优化问题含Matlab源码_第4张图片

4 参考文献

[1]何利娟, 李欣. 基于蚁群算法的资源均衡优化决策及其MATLAB实现[J]. 工业工程, 2015, 18(6):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

你可能感兴趣的:(车间调度,算法,matlab,开发语言)