1 简介
产品自动排序问题是个NP-hard问题,针对该问题的求解过程中存在容易陷入局部最优、效率不高的不足,提出了双种群遗传算法解决车间调度问题。该算法用两个种群的分工协作来解决上述的不足:一个种群负责探索可能存在最优值的区域;另一种群是在第一种群所探索区域中寻找最优解。通过仿真实验表明该算法是可行的、高效的。

2 部分代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Function: Decoding.m% Description: 译码函数% Input: Population % 待译码种群% Time % 各工位所需时间% Num_Work % 装配线工位数% Output: dec_result % 译码结果% Return: None% Referred:None% Variable: RESULT % 加工顺序矩阵% RESULT_Time % 加工时间矩阵% SUM % 加工总时间% AVE % 平均加工时间% AVE1 % 最小工位节拍(理论)% WORKSPACE % 增量计算前工位安排% WORKSPACE1 % 增量计算后工位安排% c1 % 改进前结果% c2 % 改进后结果% Others: 利用潜在增量算法实现%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [dec_result]=Decoding(Population,Time,Num_Work)RESULT=Population;RESULT_Time=Time(RESULT); % 将加工顺序转换为加工时间[a,b]=size(RESULT_Time); %RESULT_Time是100行,66列的矩阵,a=100,b=66.SUM=sum(Time); % 所有工序总加工时间AVE=SUM/Num_Work; % 每个工位平均加工时间 ,理论生产节拍CT'AVE1=max(AVE,max(Time)); % 最小工位节拍(理论) .去每个工位最大的时间和工序最大时间的最大者,但是一般很少有单个作业单元的值大于工位平均加工时间的吧。所以这函数AVEfor k=1:1:aAVE1=max(AVE,max(Time));RESULT_Time1=[RESULT_Time(k,:) 0]; % 为了便于迭代,随着迭代,在RESULT_Time每一行的末尾补0c2=0;c1=SUM; %C1为工序加总时间% 利用潜在增量方法迭代while c2<c1 % 如果存在潜在增量则进行迭代j=1;WORKSPACE=zeros(1,b); %workspce为1行b,即1行66列的列。for i=1:1:b % 将加工单元分配到工作站if WORKSPACE(j)+RESULT_Time1(i)>AVE1 %RESULT_Time1(i)没有问题,因为RESULT_Time(k,:) 0,就是一行行得c3(j)=i; %这啥东西j=j+1;endWORKSPACE(j)=WORKSPACE(j)+RESULT_Time1(i);endWORKSPACE(Num_Work)=SUM-sum(WORKSPACE(1:Num_Work-1)); %最后一个工位的时间等于所有工位时间减去前几个工位总时间% 计算潜在增量 ,,这个要怎么理解??WORKSPACE1=WORKSPACE; %把workspce的工位及排序赋予workspacesi=1:1:Num_Work-1; %i等于 1到工位数 ,这里是不是要用一个for循环???WORKSPACE1(i)=WORKSPACE1(i)+RESULT_Time1(c3(i)); % 计算潜在增量,以一个作业的时间值作为增量c1=max(WORKSPACE(1:Num_Work)); % 改进前结果 ,workspace。。CTc2=min(WORKSPACE1(1:Num_Work-1)); % 改进后结果 ,workspace1。CT’AVE1=min(c1,c2); %取c1,c2二者中较小的那个数值,作为生产线节拍enddec_result(k,:)=WORKSPACE(1:Num_Work); % 译码结果 ,k=1时,的工位分布。k=2时的工位分布。。。直到k=100时的工位分布。endend
3 仿真结果


4 参考文献
[1]张茂堂等. "双种群遗传算法解决车间调度问题." 湖南农机 (2011).
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
本文提出了一种双种群遗传算法来解决产品自动排序的车间调度问题,旨在克服传统方法可能陷入局部最优和效率低下的问题。算法通过两个种群协作,一个种群负责搜索可能的最优解区域,另一个种群在此区域内寻找最佳解。仿真实验验证了该算法的有效性和高效率。算法中使用了潜在增量方法进行迭代优化,以确定最佳的工位分配。
599

被折叠的 条评论
为什么被折叠?



