m基于遗传优化的复杂工序调度matlab仿真,输出甘特图和优化收敛图

简介: m基于遗传优化的复杂工序调度matlab仿真,输出甘特图和优化收敛图

1.算法描述

    遗传算法 (Genetic Algorithm,GA) 是一种基于规律进化的随机优化搜索算法,该算法最早是由Holland在1975年提出的。遗传算法的主要优势是通过对目标对象进行优化操作,并通过基于概率的搜索方法,获得相应的搜索空间,因此GA算法具有较强的全局搜索能力。由于遗传算法特有的全局搜索能力,其被广泛使用在各个领域,包括信号处理,机器学习以及控制域等。遗传优化的主要算法流程图如下图所示:

1.png

   遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。遗传算法的实现过程实际上就像自然界的进化过程那样。

遗传算法的一般步骤:

1.随机产生种群

2.根据策略判断个体的适应度,是否符合优化准则,若符合,输出最佳个体及其最优解,结束。否则,进行下一步

3.依据适应度选择父母,适应度高的个体被选中的概率高,适应度低的个体被淘汰

4.用父母的染色体按照一定的方法进行交叉,生成子代

5.对子代染色体进行变异

由交叉和变异产生新一代种群,返回步骤2,直到最优解产生

基本遗传算法的具体过程如下:

2.png

2.仿真效果预览
matlab2022a仿真如下:

3.png
4.png
5.png
6.png

3.MATLAB核心程序

Lens = data(:,2);
 
NUM  = length(Lens);%x,y
%间隔
SCALE= 45/60;%转换为小时
Sums = 29;   %每一行的最大值不大于29
Sums2= 24;   %每一行的总和不大于24
%纵坐标最大范围
Ymax = 24;
%放射变换
%根据遗传算法进行参数的拟合
MAXGEN = 400;
NIND   = 2000;
Chrom  = crtbp(NIND,NUM*10);
%49个变量的区间
Areas  = [];
for i = 1:NUM
    Areas  = [Areas,[1;Ymax]];%最多24行
end
 
FieldD = [rep([10],[1,NUM]);Areas;rep([0;0;0;0],[1,NUM])];
 
Error  = zeros(1,MAXGEN);
Error2 = zeros(1,MAXGEN);
for a=1:1:NIND 
    J(a,1)  = 0;
end
Objv  = (J+eps);
gen   = 0; 
 
 
 
while gen < MAXGEN;   
      gen
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,0.995);   
      Selch=mut( Selch,0.005);   
      phen1=bs2rv(Selch,FieldD);   
      
      for a=1:1:NIND  
          YY  = round(phen1(a,:));
 
          flag= [];
          %设置约束条件,间隔
          for i = 1:Ymax
              indx{i} = find(YY == i);%找到每一行的序列号
          end
 
          Xs=[];
          Ys=[];
          Ls=[];
 
          
          flag = zeros(1,Ymax);
          Numss= 0;
          for i = 1:Ymax
              NO   = indx{i};
              X0   = [];
              Ltmps= Lens(NO);
              Ytmps= YY(NO);
              for j = 1:length(NO)
                  if j == 1
                     X0(j) = 0;
                  else
                     X0(j) = X0(j-1)+Ltmps(j-1)+SCALE; 
                  end
              end
              Xs=[Xs,X0];
              Ys=[Ys,Ytmps]; 
              Ls=[Ls,Ltmps'];
              if  isempty(NO)==0
                  Numss = Numss+1; 
                  if X0(end) + Ltmps(end) <= Sums & sum(Ltmps) <= Sums2
                     flag(i)=1;
                  else
                     flag(i)=0;
                  end
              end
          end
          epls = func_obj(Xs,Ys,Ls,Ymax);
          
          
          %符合约束条件的进行输出
          E       = epls;
          JJ(a,1) = E;
          
          XX_{a}  = Xs;
          YY_{a}  = Ys;
          LL_{a}  = Ls;
      end
      Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,0,Objv,Objvsel);   
      gen=gen+1; 
      
      Error(gen)=min(JJ);
      
      if gen <= 64
         Error2(gen) = mean(Error(1:gen));
      else
         Error2(gen) = mean(Error(gen-64:gen)); 
      end
end 
figure;
plot(Error2,'b-o');
xlabel('迭代次数');
ylabel('优化目标值');
grid on
%得到最优坐标
[V,I] = min(JJ);
X_opt = XX_{I};
Y_opt = YY_{I};
L_opt = LL_{I};
%画出甘特图
for i = 1:length(L_opt)
    indx   = find(Lens==L_opt(i))
    NO2_(i)= indx(1);
end
figure;
for i=1:length(X_opt)  
    hold on;
    plotRec(X_opt(i),X_opt(i)+L_opt(i),Y_opt(i)); 
    text((X_opt(i)+X_opt(i)+L_opt(i))/2,Y_opt(i)-0.5,num2str(NO2_(i)));
end
xlabel('时间');
ylabel('序号');
title('甘特图');
02_053m
相关文章
|
14小时前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
|
18天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
18天前
|
算法
通过matlab对比遗传算法优化前后染色体的变化情况
该程序使用MATLAB2022A实现遗传算法优化染色体的过程,通过迭代选择、交叉和变异操作,提高染色体适应度,优化解的质量,同时保持种群多样性,避免局部最优。代码展示了算法的核心流程,包括适应度计算、选择、交叉、变异等步骤,并通过图表直观展示了优化前后染色体的变化情况。
|
20天前
|
算法 决策智能
基于遗传优化算法的TSP问题求解matlab仿真
本项目使用遗传算法解决旅行商问题(TSP),目标是在四个城市间找到最短路径。算法通过编码、选择、交叉、变异等步骤,在MATLAB2022A上实现路径优化,最终输出最优路径及距离。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
225 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
141 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
111 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
7月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)

热门文章

最新文章