【优化求解】基于matlab遗传算法求解岛屿物资补给优化问题【含Matlab源码 172期】

本文主要是介绍【优化求解】基于matlab遗传算法求解岛屿物资补给优化问题【含Matlab源码 172期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、背景介绍

假定某群岛海域有20个小岛,每个岛屿各产不同种类的海鲜,现需对各岛屿的海鲜进行外向运输,选取一个中心岛屿作为中心枢纽,(以下称其为中心岛);各个岛屿的货物运送到中心枢纽岛屿,然后从中心岛运往大陆,其中参考各方因素确定最优的运送路线,各个岛屿到中心岛运送的船只有两种船型;并对船只进行选择。运用matlab编程,禁忌搜索方法。
鉴于偏远岛屿的地理特点,其交通网络一般由三个节点组成:大陆港口、中心岛和卫星岛。大陆港口是海岛依托大陆的物流运输通道;中心岛是收集周围岛屿输送物资的枢纽;卫星岛是供应生产物资到中心岛物资的末端岛屿。
首先,由于海上航行受台风影响很大,需要防止岛间运输物资中断,分析了该地区台风发生的统计资料,并结合各岛的生活资料,通过数据拟合得到台风影响时间的概率分布曲线。在一定的保证率下,每个岛屿的日平均生产量在不腐坏的前提下,建立运输模型。那么,对中心岛的位置和交通的优化是必须的。其中运输系统结构包括航线数量、运输组织形式及到达顺序、每条航线的船型及时刻表、各岛码头规模等;建立和优化存储系统(包括存储容量和周期性供应等)。
显然,运输系统成本和存储系统是优化目标统一成本的两个矛盾方面,即如果某一航线的船舶尽可能满载,则可以延长运输计划的间隔,从而降低运输计划运输成本,但同时也会增加货物储存和仓库建设成本;如果船型不变,增加航线上的供应岛它可以减少航线数量和船舶采购、集货周期和库存成本,以及库存引起的货物存储成本和仓库建设的成本,但是运输距离的增加和路线的延长会导致运输成本的增加,从而导致系统总成本的变化。此外,中心岛的位置将直接影响路径规划和运输组织形式的选择,从而间接影响仓储系统的优化。

在优化远洋集团货物海运系统的过程中,除了上述传统的LIRP问题外,还应考虑选址、运输和仓储的决策问题。除了相互作用外,我们还需要考虑航运系统本身的特点:①由于船舶的负荷一般远大于岛上的日生产量,所以双向装货路线与单方向运输相比,双向运输可以延长装货周期,大大降低运输频率。虽然运输距离有所增加,但运输成本可能会相对降低。即使库存和由此产生的货物储存成本和仓库建设成本增加,最终系统的总成本也可能降低。具体运输组织形式的选择应根据线路岛屿的数量和距离确定。

② 与小船型相比,如果选择航线,应根据航线中岛屿的数量和距离确定,大型船型可以成倍定期装货,延长输送周期,减少运输次数,降低运输成本,但船舶采购成本和码头总建设成本、库存及由此产生的货物储存成本和仓库建设成本都会增加,导致系统总成本的变化。

在运输系统中,无论有多少条线路,所有卫星岛的终端总数都是固定的,但由于不同航线的船型不同,所以卫星岛码头的规模不同和由此带来的码头建设成本也不尽相同,而且每增加一种船型,中心岛都需要配备更多相应的船型的码头。因此,它对码头的建设成本有很大的影响。综上所述,离岛海运物流系统的优化应基于以上特点选出中心岛,为卫星岛运输划分路线组,建立各条线路(循环运输)的运输组织形式,配置不同船型,制定航次。在线路换班时设置各岛的存储容量,以便在台风等影响下求得偏远岛屿的整个群岛物流系统总成本得最低。

2 算法描述及实现
2.1 遗传算法概述

遗传算法(GA,Genetic Algorithm),也称为进化算法。遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。其主要特点是直接对结构对象进行操作,因此不同于其他求解最优解的算法,遗传算法不存在求导和对函数连续性的限定,采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。

以上是对遗传算法相对抽象的总结,为了更具体形象的解释遗传算法的一般原理,我们首先介绍一些生物学上的概念:
①种群:不同生物个体形成的群体,生物的进化以群体的形式进行,这样的一个群体称为种群;
②个体:组成种群的单个生物;
③基因:带有遗传信息的DNA片段,可以通俗的将基因理解为一段信息,这段信息决定的生物个体的性状;
④表现型:根据基因形成的个体的外部表现;
⑤适应度:生物个体对于生存环境的适应程度,越适应那么其得以存活和繁衍的概率就越大;
⑥遗传:通过繁殖过程,子代将从父母双方各获取一部分基因,形成新的自己的基因,这个过程中,会发生基因的复制、交叉,也会以较低的概率发生基因突变;
⑦自然选择:物竞天择,适者生存的自然淘汰机制。具体为对环境适应度高的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少;
⑧进化:种群通过代际繁衍不断适应生存环境的过程,在这个过程中,以对外界环境的适应度为评判标准,生物的性状不断得到改良。

了解了这些术语的含义,我们就可以进一步说说生物进化的过程了。由于自然选择是客观存在的,即生物只能改变自己去适应环境,那么在自然选择的过程中,适应度低的个体会被淘汰,适应度高的个体被保留,高适应度的父体与母体又有更高的概率繁衍出适应度高的子代,因此在一代又一代的繁衍之后,高适应度的个体在种群中所占的比例越来越大,种群就这样完成了进化。

现在我们要参考生物进化的过程来设计算法解决求最优解的问题。对此,遗传算法的思路是,将要解决的问题模拟成一个生物进化的过程,通过进化来寻找最优解。以我们题目中寻找多峰函数的最大值这个问题为例:

将(x, y)这一可能的解作为一个个体;将多峰函数的函数值f(x, y)作为个体的适应度;对(x, y)进行编码作为个体的基因;以适应度为标准不断筛选生物个体;通过遗传算子(如复制、交叉、变异等)不断产生下一代。如此不断循环迭代,完成进化。最终,根据设定的迭代次数,可得到最后一代种群,该种群中的个体适应度都较高,而多峰函数的最大值就有比较大的概率存在于这一群解中,以种群中适应度最高的个体作为问题的解,则可以说该解有比较高的概率就是我们希望求得的最优解。

文字述说终究还是不如图表好理解,因此还是看图吧(下图将本题与自然遗传联系了起来):
在这里插入图片描述
通过以上描述,我们不难看出,遗传算法不能保证一定能求得最优解,而只能以一定的概率求最优解。但是使用遗传算法时,我们可以不用关心具体如何去找最优解,要做的只是简单的否定一些表现不好的个体。这一优点也是遗传算法能够取得广泛应用的原因之一。

2.2 算法的流程
通过上文的阐述,对于如何模拟自然进化来求题中多峰函数的最优解已经比较明晰了。这里我将列出遗传算法的主要步骤,并一一解析:
第一步:随机产生一个种群,作为问题的初代解(通常,初代解可能与最优解相差较大,这是可以容忍的,只要保证初代解是随机产生的,以确保个体基因的多样性即可);
第二步:寻找一种合适的编码方案对种群中的个体进行编码,可以选择如浮点数编码或二进制编码等常用编码方案(需要指出的是,不同的编码方案直接影响后续遗传算子的实现细节);
第三步:以多峰函数的函数值 作为个体的适应度,计算种群中每个个体的适应度(算出的适应度将为后续的个体选择提供依据);
第四步:根据适应度的高低选择参与繁衍的父体与母体,选择的原则是适应度越高的个体越可能被选中(以此不断淘汰适应度低的个体);
第五步:对被选出的父体与母体执行遗传操作,即复制父体与母体的基因,并采用交叉、变异等算子产生出子代(在较大程度保留优秀基因的基础上,变异增加了基因的多样性,从而提高找到最优解的概率);
第六步:根据一定的准则判断是继续执行算法,还是找出所有子代中适应度最高个体作为解返回并结束程序(判断的准则可以是设定的解的阈值、指定的迭代次数等)。
在这里插入图片描述

⛄二、部分源代码

clc
close all
clear all
%% 模型参数
n=20;
Axes=[35,44;13,36;22,59;30,79
39,60;31,26;25,21;40,16;52,38
63,17;66,71;62,50;41,29;71,35
91,37;25,33;82,74;52,80;49,11
22,11];
Land=[-8,65];
Dom=((Axes(1,1)-Land(1))2+(Axes(1,2)-Land(2))2)^0.5;
Dist=getdist(Axes);
Output=[122,77,75,68,87,96,90,110,127,…
155,141,135,103,163,170,81,147,145,129,95];
Ship.Cp=[1300000,2100000,1e15];
Ship.Ctr=[65,90,1e15];
Ship.V=[18,14,1e15];
T.all=15*365-1;
T.main=7;
%% Ga参数
GenMax=200;
Pc=0.5;
Pv=0.5;
Gen=0;
Popnum=100;
Chrom=struct;
NewChrom=struct;
%% 生成初始种群
for i =1:Popnum
Chrom(i).Index=randperm(n-1)+1;
Chrom(i).RouteNum=randi(n-1,1);
Chrom(i).Routes=getdivide(Chrom(i).RouteNum,Chrom(i).Index,n);
end
while Gen < GenMax
Gen=Gen+1;

for i=1:size(Chrom_all,2)
ship=[];
RouteL=[];
ShipNum=Chrom_all(i).RouteNum;
for j=1:ShipNum
EachL=0;
Route=Chrom_all(i).Routes{j};
EachOutput(j)=sum(Output(Route(2:end-1)));
if EachOutput(j)<=300
ship(j)=1;
elseif EachOutput(j)<=500
ship(j)=2;
else
ship(j)=3;
end
for k=1:length(Route)-1
EachL=EachL+Dist(Route(k),Route(k+1));
end
RouteL(j)=EachL;
end
Chrom_all(i).Ship=ship;
Chrom_all(i).Length=RouteL;
end
[bestC,ind]=getbest(Chrom_all,Ship,Dom,T);
Chrom=Chrom_all(ind(1:Popnum));
Best(Gen).Gen=Chrom_all(ind(1));
Best(Gen).C=bestC(1);
end
% %% 淘汰

plot([Best.C])

title(‘总成本进化曲线’);
xlabel(‘迭代次数’)
ylabel(‘总成本’)

%
% end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

这篇关于【优化求解】基于matlab遗传算法求解岛屿物资补给优化问题【含Matlab源码 172期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393147

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)