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

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

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仿真结果如下:

1.png
2.png
3.png

3.MATLAB核心程序

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
相关文章
|
3天前
|
机器学习/深度学习 算法 关系型数据库
基于PSO-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目展示了利用粒子群优化(PSO)算法优化支持向量机(SVM)参数的过程,提高了分类准确性和泛化能力。包括无水印的算法运行效果预览、Matlab2022a环境下的实现、核心代码及详细注释、操作视频,以及对PSO和SVM理论的概述。PSO-SVM结合了PSO的全局搜索能力和SVM的分类优势,特别适用于复杂数据集的分类任务,如乳腺癌诊断等。
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
26天前
|
存储 JavaScript 前端开发
JavaScript垃圾回收机制与优化
【10月更文挑战第21】JavaScript垃圾回收机制与优化
25 5
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
28天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
5天前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
13天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
14天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
15天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。

热门文章

最新文章

  • 1
    Java面试题:描述Java垃圾回收的基本原理,以及如何通过代码优化来协助垃圾回收器的工作
    89
  • 2
    Java面试题:如何在Java中触发一次Full GC?请详细解释垃圾回收机制和知识
    379
  • 3
    Java面试题:在Java中,对象何时可以被垃圾回收?编程中,如何更好地做好垃圾回收处理?
    69
  • 4
    Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
    59
  • 5
    Java面试题:解释分代垃圾回收策略,并说明其优势
    51
  • 6
    Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
    50
  • 7
    Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
    68
  • 8
    Java面试题:请解释Java中的四种访问控制符及其作用范围,请解释Java中的垃圾回收机制及其工作原理,请解释Java中的并发工具包及其主要用途
    34
  • 9
    Java面试题:Java内存管理与多线程并发处理,设计一个Java应用,该应用需要处理大量并发用户请求,同时要求对内存使用进行优化,如何通过垃圾回收机制优化内存使用?
    41
  • 10
    Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
    80
  • 下一篇
    无影云桌面