首页 > 编程语言 >m基于遗传算法的城市生活垃圾回收网络优化matlab仿真

m基于遗传算法的城市生活垃圾回收网络优化matlab仿真

时间:2023-01-29 19:55:24浏览次数:67  
标签:仿真 global 回收 分拣 matlab 遗传算法 gen best 垃圾

1.算法描述

       目前,城市生活垃圾成为困扰我国大多数城市健康发展的痼疾.与国外相关国家相比,我国垃圾回收处理模式存在资源化程度低,处理方式单一等弊端,很多城市在积极探索新的垃圾回收模式.鉴于中国与巴西国情比较接近,巴西的塞普利模式具有较高参考意义.从文献阅读来看,将垃圾回收问题视为单独的选址-运输问题或垃圾收集车辆路径问题(VRP),很少将两者结合起来考虑,也很少考虑垃圾的回收利用.基于此背景下,本文提出如何在混合回收,集中分拣的回收模式下构建城市生活垃圾回收网络的决策问题。在阐明城市生活垃圾的基础上,分析城市生活垃圾回收物流和回收网络构建的原则,内容,构成要素,并介绍典型的垃圾回收网络构建模型和垃圾收集车辆路径模型,为本文的数学建模奠定理论基础. 文章借鉴巴西塞普利回收模式,提出构建具有分拣中心的城市生活垃圾回收网络,通过分拣中心实现垃圾的分类回收.由于城市生活垃圾回收网络问题涉及到设施选址和收集车辆路径优化问题,

 

遗传算法的原理

 

       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

 

       其主要步骤如下:

 

1.初始化

 

       选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。

 

       通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

 

2.选择

 

      根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

 

给出目标函数f,则f(bi)称为个体bi的适应度。以

 

为选中bi为下一代个体的次数。

 

显然.从式(3—86)可知:

 

(1)适应度较高的个体,繁殖下一代的数目较多。

 

(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。

 

这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。

 

3.交叉

 

       对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

 

2.matlab算法仿真效果

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

 

global a;    %分拣中心的固定成本
global C1;   %单位收集成本  
global b;    %分拣中心的变动成本
global C2;   %单位存储成本
global Fk;   %收集车辆的固定成本 
global C3;   %单位运输成本
global Qk;   %收集车辆的最大容量
global alpha;%A类垃圾比例
global Fh;   %焚烧厂的固定成本
global beta; %B类垃圾比例
global Qh;   %焚烧厂的日处理能力 
global gamma;%C类垃圾比例
global Fl;   %填埋场的固定成本
global P;    %垃圾焚烧残留比例
%%
%垃圾产生点的坐标及日垃圾产生量 
X1=[76,148,57,19,51,101,27,135,18,50,106,89,54,45,104,79,76,86,83,-6,72,90,82,73,92,36,84,64,76,30,21,55,134,42,92,31,55,50,87,30,5,92,117,20,100,134,35,-15];
Y1=[15,40,114,23,69,88,109,128,52,104,72,111,61,133,73,20,5,146,58,83,70,39,61,84,98,63,115,98,143,141,67,52,124,102,138,29,126,133,96,124,61,96,117,68,76,55,41,108];
M1=[1.99,6.14,6.37,6.46,4.91,4.84,2.04,7.17,5.28,2.23,4.65,4.06,2.99,4.68,1.57,7.28,8.25,3.99,5.41,5.78,4.94,3.39,0.570,7.10,7.17,4.18,5.73,1.93,4.96,1.92,5.84,4.56,7.25,6.54,7.39,4.48,7.06,5.40,3.23,7.08,3.67,1.74,4.98,2.07,5.62,6.09,1.40,7.15];
 
%分拣中心
X2 = [51,53,79,92];
Y2 = [88,72,68,111];
 
%焚烧厂
X3 = [45,115,82,115];
Y3 = [148,148,18,68];
 
%填埋场
X4 = [127,146,76];
Y4 = [11,99,166];
%回收工厂   
X5 = [156];
Y5 = [158];
 
figure;
plot(X1,Y1,'bo');
axis([-20,180,-20,180]);
for i = 1:length(X1)
    text(X1(i)+2,Y1(i)+2,num2str(i)); 
end
hold on
plot(X2,Y2,'rs');
hold on
plot(X3,Y3,'g^');
hold on
plot(X4,Y4,'k.');
hold on
plot(X5,Y5,'m*');
legend('垃圾产生点','分拣中心','焚烧厂','填埋场','回收工厂');
 
 
%分拣中心的固定成本
a = 1335;
%单位收集成本  
C1= 0.056;
%分拣中心的变动成本
b = 2;
%单位存储成本
C2= 0.028;
%收集车辆的固定成本 
Fk= 120;
%单位运输成本
C3= 0.015;
%收集车辆的最大容量
Qk= 12;
%A类垃圾比例
alpha = 0.35;
%焚烧厂的固定成本
Fh= 4500;
%B类垃圾比例
beta  = 0.45;
%焚烧厂的日处理能力  
Qh= 250;
%C类垃圾比例
gamma = 0.45;
%填埋场的固定成本
Fl= 9500;
%垃圾焚烧残留比例
P = 0.26;
 
%%
%根据遗传算法进行参数的拟合
MAXGEN = 200;
NIND   = 20;
Ns     = 2+length(X1);
 
Chrom  = crtbp(NIND,Ns*10);
Areas  = [1         ,1                 
          length(X2),length(X2)];
for i = 1:length(X1);     
    Areas = [Areas,[0;1]];  
end
 
FieldD = [rep([10],[1,Ns]);Areas;rep([0;0;0;0],[1,Ns])];
 
Data1 = zeros(NIND,Ns);
Data2 = zeros(MAXGEN,Ns); 
 
gen  = 0;
for a=1:1:NIND 
    a
    %保证每个数值不一样,
    tmps       = [1,2,rand(1,length(X1))>0.5];
    Data1(a,:) = tmps(1:Ns);      
  
    %计算对应的目标值
    [epls,lines2,Position1,best_route1,best_length1,Avg_Length1,Position2,best_route2,best_length2,Avg_Length2] = func_obj(Data1(a,1),Data1(a,2),Data1(a,3:end));
    E          = epls;
    J(a,1)     = E;
end
 
Objv  = (J+eps);
gen   = 0; 
 
while gen < MAXGEN;   
      gen
      
      FitnV = ranking(Objv);    
      Selch = select('sus',Chrom,FitnV);    
      Selch = recombin('xovsp', Selch,0.9);   
      Selch = mut( Selch,0.1);   
      phen1 = bs2rv(Selch,FieldD);   
      
      for a=1:1:NIND    
          %计算对应的目标值
          if abs(floor(phen1(a,1))+1 - floor(phen1(a,2))-1) > 0
             [epls,lines2,Position1,best_route1,best_length1,Avg_Length1,Position2,best_route2,best_length2,Avg_Length2] = func_obj(floor(phen1(a,1))+1,floor(phen1(a,2))+1,round(phen1(a,3:end)));
          else
             epls   = 1e10;    
          end
          E       = epls;
          JJ(a,1) = E;
      end 
      
      Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 
 
      Error1(gen) = mean(JJ);
      if gen <= 128
         Error2(gen) = mean(Error1(1:gen));
      else
         Error2(gen) = mean(Error1(gen-128:gen)); 
      end
end 
%根据优化结果计算成本收敛曲线
y = func_cost();
02_040m

 

  

 

标签:仿真,global,回收,分拣,matlab,遗传算法,gen,best,垃圾
From: https://www.cnblogs.com/51matlab/p/17073703.html

相关文章

  • m基于MSOPSO多策略粒子群算法的目标优化matlab仿真
    1.算法描述        粒子群优化算法(particleswarmoptimization,PSO)是一种源于对鸟群捕食行为的研究而发明的进化计算技术,最先由Eberhart博士和Kennedy博士提......
  • 【Matlab学习1.7】字符串处理
    字符串的表示在Matlab中,字符串是用单引号括起来的字符序列。例1.7.1:>>xm='MatlabUniversity'xm='MatlabUniversity'>>xm(1:3)ans='Mat'若字符串......
  • MATLAB笔记[6]-Modbus-RTU通信
    保命声明:笔者代码能力有限,若行文中有错漏之处欢迎大家指出。RS485总线工业现场经常要采集多点数据,模拟信号或开关信号,一般用到RS485总线,RS-485采用半双工工作方式,支持多......
  • Matlab:4维、单目标、约束、粒子群优化算法
       %主调用函数(求最大值)clc;clear;closeall;%初始化种群N=100;%初始种群个数D=4;%空间维......
  • # Eigen : Matlab & Eigen 函数对应
    //AsimplequickrefforEigen.Addanythingthat'smissing.//Mainauthor:KeirMierle#include<Eigen/Dense>Matrix<double,3,3>A;//Fixe......
  • 【MATLAB】matlab自定义函数的调用
    1.自定义函数的编写与调用关于自定义函数的编写与调用,将由以下3个问题展开:1.1问题:为什么要使用自定义函数?在编写程序时,我们常常会重复使用到一部分相同的代码(程序块),为了避......
  • 浩辰3D运动「颜色变化」,让仿真运动一目了然!
    传统的3D设计软件仅能完成基础性的“静”态设计,完成产品各零部件模型设计,对于各零部件装配关系、产品内部机构运行等“动”态设计内容却无法进行展示。由浩辰CAD公司研发的......
  • 【Matlab学习1.5】矩阵元素的引用
    矩阵元素的引用方式矩阵元素的引用下标必须为正数,且用圆括号括起来A(3,2)表示A矩阵第3行第2列的元素,如:>>A(3,2)=200例1.5.1:>>A=[1,2,3;4,5,6];>>A(4,5)=10......
  • 【Matlab学习1.4】矩阵的表示
    矩阵是Matlab中最基本的数据对象,Matlab大部分运算或命令都是在矩阵的意义下执行的。矩阵的建立直接输入法将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的......
  • 「matlab学习笔记」MATLAB基础知识
    中国大学MOOC科学计算与MATLAB语言(点击此处跳转)MATLAB官方文档(点击此处跳转)1.1MATLAB系统环境如何设置当前文件夹在“当前文件夹工具栏”或“当前文件夹窗口”中选......