车辆调度 matlab,基于遗传算法的车辆调度问题的matlab源程序

越界 发表于 2013-7-8 09:16 bbd016eb636182ff59f287f6e5567aa8.gif

有偿服务哦

function  chushis)

K=4; %最多4辆车

inn=100;%迭代次数上限

citynum=8;%需求点数量

KM=citynum+K+1; %配送途径种类

%产生初始种群

m=zeros(1,inn);

m=m';

s=zeros(inn,citynum+K+1);

for i=1:1:inn

s(i,:)=randperm(KM); %随机排列构成个体

end

s=[m s];

for i=1:inn

for j=1:KM-1

if s(i,j)>citynum

s(i,j)=0;

end

end

end

xlswrite('data.xls',s)

%计算适应度

function [f,p]=shyd(s);

K=4; %最多4辆车

M=10000;

inn=100;%迭代次数上限

citynum=8;%需求点数量

KM=citynum+K+1; %配送途径种类

q=[2 1.5 4.5 3 1.5 4 2.5 3]; %需求点的需求量

t=[1 2 1 3 2 2.5 3 0.8]; %各需求点卸货时间

a1=[1 4 1 4 3 2 5 1]; %送货车辆到达时间上限

b=[4 6 2 7 5.5 5 8 4];%送货车辆时间下线

c=[0,40,60,75,90,200,100,160,80

40,0,65,40,100,50,75,110,100

60,65,0,75,100,100,75,75,75

75,40,75,0,100,50,90,90,150

90,100,100,100,0,100,75,75,100

200,50,100,50,100,0,70,90,75

100,75,75,90,75,70,0,70,100

160,110,75,90,75,90,70,0,100

80,100,75,150,100,75,100,100,0];

y=zeros(citynum+1,citynum+1);

for i=1:inn-1

a=s(i,:);

for j=1:KM-1

m=a(j);

n=a(j+1);

m=m+1;

n=n+1;

end

y(m,n)=1; y=y';

for i=1:citynum

for j=1:citynum

mubiaob=c(i,j)*y(i,:);

end

end

xuq1=0;

for i=1:citynum

for j=1:citynum

xuq1=xuq1+s(i)*y(i,:)-q(i);

end

xuqiu=max((xuq1),0)*M;

end

end

shij1=0;

shij2=0;

for i=1:citynum

for j=1:citynum

for l=1:citynum

shij1=shij1+t(i)-a1(i);

shij2=shij2+b(i)-t(i);

end

shij3=max((shij1),0);

shij4=max((shij2),0);

shijian=M*shij3+M*shij4;

end

end

f=mubiaob+xuqiu+shijian;

f=1./f;

%计算选择概率

fsum=0;

for i=1:14

fsum=fsum+f(i);

end

for i=1:14

ps(i)=f(i)/fsum;

end

%计算累积概率

p(1)=ps(1);

for i=2:14

p(i)=p(i-1)+ps(i);

end

p=p';

%“选择”操作

%从种群中选择两个个体

function xuze=sell(s,p)

inn=size(p,1);

for i=1:inn

r=rand(inn,1);  %产生一个随机数

prand=p-r;

j=1;

while prand(j)<0

j=j+1;

end

xuze(i)=j;

%选中个体的序号

end

sel1=xuze(1);

sel2=xuze(2);

%“交叉”操作

function snew=cross(s,B,pc)

A=s(4,:);

B=s(3,:);

c=find(A==0);

d=find(B==0);

a=sym(A);

b=sym(B);

k=size(a,1);

for i=1:size(a,2)

for j=1:k

e(i,c(k))=a(i+k-1);

end

end

for i=1:size(a,2)

for j=1:k

e(i,d(k))=b(i+k-1);

end

end

[f,p]=shyd(s);

f=f';

a=a';

b=b';

c0=round(rand*(k-1))+1;

c1=round(rand*(k-1))+1;

a=[f(:,c0),a]; b=[e(:,c1),b];

for i=1:size(a,2);

j=1:size(e,2)

if a(i)==e(j)

a(i)==[];

end

end

for i=1:size(b,2);

j=1:size(f,2)

if b(i)==f(j)

b(i)==[];

end

end

a=double(a);

b=double(b);

g=zeros(size(A));

for i=1:size(a)

for j=1:size(c)

g(i+j)=a(i);

end

end

h=zeros(size(A));

for i=1:size(b)

for j=1:size(d)

h(i+j)=b(i);

end

end

g=g';

h=h';

snew=[g h];

%变异

function  snew=bianyi(snew,pm)

bn=size(snew,2);

snnew=snew;

c2=round(rand*(bn-2))+1;

%在[1,bn-1]范围内随机产生一个变异位

c3=round(rand*(bn-2))+1;

chb1=min(c2,c2);

chb2=max(c3,c2);

x=snew(chb1+1:chb2);

snnew(chb1+1:chb2)=fliplr(x);

pmm=pro(pm);

%根据变异概率决定是否进行变异操作,1则是,0则否

if pmm==1

c2=round(rand*(bn-2))+1;

%在[1,bn-1]范围内随机产生一个变异位

c3=round(rand*(bn-2))+1;

chb1=min(c2,c3);

chb2=max(c2,c3);

x=snew(chb1+1:chb2);

snnew(chb1+1:chb2)=fliplr(x);

end

function pcc=pro(pc);

test(1:100)=0;

l=round(100*pc);

test(1:l)=1;

n=round(rand*99)+1;

pcc=test(n);

%主程序

function ga

s=xlsread('data.xls');

[f,p]=shyd(s);

pm=0.8; %变异概率

pc=0.2; % 交叉比率

gn=1;

inn=100;%迭代次数上限

gnmax=1000; %最大代数

while gn

for j=1:2:inn

xuze=sell(s,p);

%选择操作

scross=cross(s,xuze,pc);

%交叉操作

scnew(j,:)=scross(1,:);

scnew(j+1,:)=scross(2,:);

smnew(j,:)=bianyi(scnew(j,:),pm);

%变异操作

smnew(j+1,:)=bianyi(scnew(j+1,:),pm);

end

s=smnew;

%产生了新的种群

[f,p]=shyd(s);

%计算新种群的适应度

%记录当前代最好和平均的适应度

[fmax,nmax]=max(f);

ymean(gn)=1/mean(f);

ymax(gn)=1/fmax;

%记录当前代的最佳个体

x=s(nmax,:);

gn=gn+1;

end

gn=gn-1;

figure(2);

plot(ymax,'r');

hold on;

plot(ymean,'b');

grid;

title('搜索过程');

legend('最优解','平均解');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strtotime()加半个小时_椰子鸡这样做太好吃了,一滴水不用加,鲜香嫩滑,做法非常简单...

转眼就是6月了&#xff0c;时间真的好快啊&#xff0c;好似白驹过隙&#xff0c;一眼就过去了。刚刚还是桃花开的时候&#xff0c;转眼五月桃都熟了。不得不说&#xff0c;李煜说得很对&#xff0c;“林花谢了春红&#xff0c;太匆匆&#xff01;”6月了&#xff0c;6月有什么呢…

webpack 入口文件 php,如何实现webpack多入口文件打包配置

本篇文章主要介绍了webpack多入口文件页面打包配置详解&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。大多数情况下&#xff0c;我们使用 webpack来打包单页应用程序&#xff0c;这个时候只需要配置一个入口&#xff0c;一个模板文件&#xff0c;但也不尽是如此&am…

接口里面的方法都是抽象方法吗_大家都在讲高中学习的方法有哪些,那方法和技巧有什么异同的吗?...

大家都在讲高中学习的方法有哪些&#xff0c;那方法和技巧有什么异同吗&#xff1f;高中怎样学习&#xff0c;方法重要还是技巧更重要&#xff1f;老牛倒是觉得&#xff0c;二者密不可分&#xff0c;缺一不可。那么&#xff0c;我们一起来看看&#xff0c;高中怎样学习才是最好…

python 笔试题 英方_4000字转型数据分析师笔试面试经验分享

大家好&#xff0c;我是戴师兄~在上一篇文章中我分享了快速自学数据分析的经验。本篇文章&#xff0c;我将跟大家分享下我的笔试和面试心得。开头先说说我转型前的职业背景&#xff1a;想看笔试面试经验的同学萌可以直接跳过这一段~2018年我从中国人民大学经济管理学专业毕业&a…

android 抓取webview中的所有图片_如何一键提取PDF文档中的所有图片?

原标题&#xff1a;如何一键提取PDF文档中的所有图片&#xff1f;目前PDF文档被大家广泛应用&#xff0c;主要是因为PDF文档在传输和转换的过程中比较稳定&#xff0c;所以PDF格式几乎是办公文件格式的首选。大家都知道PDF文档转换格式以及编辑都需要专门的PDF编辑器来实现。但…

php shell 交互,通过 Tinker 实现 Laravel 命令行交互式 Shell

通过 Tinker 实现 Laravel 命令行交互式 Shell由 学院君 创建于2年前, 最后更新于 1年前版本号 #19508 views4 likes0 collectsREPL 与 PsySHLaravel 自带了一个功能强大的 REPL —— Tinker&#xff0c;所谓 REPL&#xff0c;是 Read–Eval–Print-Loop 的缩写&#xff0c;这是…

戴尔电脑好还是华为好_华硕和戴尔笔记本哪种好 华硕和戴尔优缺点分析【详解】...

随着时代快速的发展&#xff0c;笔记本电脑已经成了我们生活中的标配。如今&#xff0c;市面上笔记本电脑的款式众多&#xff0c;相信大家对华硕和戴尔并不陌生吧&#xff01;那么&#xff0c;我们该怎么去选择呢&#xff1f;今天小编就给大家介绍华硕和戴尔笔记本哪个好&#…

电脑扫描二维码_线上分享 | 网络工作坊:平板电脑工作术

澳门生产力暨科技转移中心将于9月29日下午3时&#xff0c;举办资讯科技工具应用线上工作坊&#xff0c;讲解平板电脑办公应用&#xff0c;欢迎有兴趣人士报名&#xff0c;名额有限&#xff0c;先到先得。该中心早前已举办是次主题的应用工作坊&#xff0c;坊间反应积极&#xf…

数据库设置_CentOS7 - 设置MySQL数据库

设置MySQL数据库本文介绍如何在CentOS上执行流行的MySQL数据库服务器的基本安装。 MySQL是当今使用最广泛的数据库系统&#xff0c;它可以在许多不同的行业中找到&#xff0c;为动态网站和大型数据仓库等各种产品提供数据存储。准备此配方要求CentOS系统具有有效的网络连接和管…

提出离职后怎么定last day_不管你因为什么离职,用正规的离职方式是你最正确的选择!...

#不管你是因为什么离职&#xff0c;用正规的离职方式离职是你最正确的选择&#xff0c;如果因为不恰当的方式造成与公司的矛盾&#xff0c;可能让你今后会非常被动。书面离职是最具有法律效力的&#xff0c;按照劳动法&#xff0c;你有权在提出正式离职一个月后走人&#xff0c…

人脸识别代码_10行代码实现人脸识别

什么是人脸识别人脸识别&#xff0c;是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流&#xff0c;并自动在图像中检测和跟踪人脸&#xff0c;进而对检测到的人脸进行脸部识别的一系列相关技术&#xff0c;通常也叫做人像识…

ticketvalidationexception票根不符合目标服务_如何在有效降低企业仓储成本的同时不降低企业的总体服务质量目标水平?...

对于企业而言&#xff0c;如何降低仓储成本&#xff0c;同时要保证物流总成本最低和不降低企业的总体服务质量和目标水平的前提下进行&#xff0c;常见的措施有以下几点&#xff1a;一用“先进先出方式&#xff0c;减少仓储物的保管风险。”先进先出是储存管理的准则之一&#…

python科学计算_可视化图解Python科学计算包NumPy

NumPy包是python生态系统中数据分析、机器学习和科学计算的主力。 它极大地简化了向量和矩阵的操作。Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分&#xff08;例如scikit-learn、SciPy、pandas和tensorflow&#xff09;。我们将介绍一些使用NumPy的主要方法&am…

php 导出excel 特殊字符,PHPEXCEL导出,存在特殊字符遇到的问题

[13] > Array([payment_success_at] >[user_name] > ?.琳琳?[remarks] >[product_name] > 香菇[sku_name] > 斤[product_property] > 斤[price_original] > 5.50[price_current] > 5.50[consignee] > ?.琳琳?)以上代码中用户名中存在特殊符号…

win10任务栏怎么还原到下面_详解:新版 WIN 10 V2004 任务栏和开始菜单全透明

是不是很酷炫&#xff1f;继续往下看&#xff0c;你也可以简单做到导语本文将告诉你如何借助一个小工具&#xff0c;将最新版 WIN 10 开始菜单和任务栏设置成全透明&#xff0c;以获得超酷的视觉体验。安装和设置都很简单&#xff0c;关键是一定要找到适合 WIN 10 版本的 Start…

10.8.8.8柠檬wifi网页登录_基于企业邮箱进行wifi实名认证的方案

之前我们介绍过如何用钉钉认证和企业微信认证来实现企业内部的实名上网认证。此外邮箱认证也是企业进行wifi实名认证的一个有效手段。因为很多企业都给员工开通了企业邮箱&#xff0c;直接让员工输入邮箱账号和密码进行认证上网。配置、使用和维护都相对比较简单。本文我将介绍…

php tire树,Immutable.js源码之List 类型的详细解析(附示例)

本篇文章给大家带来的内容是关于Immutable.js源码之List 类型的详细解析(附示例)&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。一、存储图解我以下面这段代码为例子&#xff0c;画出这个List的存储结构&#xff1a;let myL…

nodejs missing script: dev_nodejs深入学习系列之v8基础篇

V8这个概念大家都不陌生了&#xff0c;那么你动手编译过V8源码吗&#xff1f;编译后有尝试去了解V8背后的一些概念吗&#xff1f;如果没有&#xff0c;那么也不用心慌&#xff0c;下文将跟大家一一解释这些东西。在编译V8之前我们先要了解一个东西-构建系统1、构建系统1.1、构建…

cmos存储器中存放了_天津大学姚建铨院士,张雅婷副教授JMCC:具有宽光谱调控特性的阻变存储器...

【引言】存储器是计算机中数据存放的主要介质。随着5G时代到来&#xff0c;带动人工智能、物联网、智慧城市等应用市场发展并向存储器提出多样化需求&#xff0c;加上传统存储器市场价格变化等因素&#xff0c;新型存储器将在市场发挥越来越重要的作用。因此具有存储密度更高&a…

matlab转差频率控制,转差频率控制的异步电机调速系统的研究

1 引言交流变频调速的方法是异步电机最有发展前途的调速方法。随着电力电子技术、计算机技术和自动控制技术的不断发展&#xff0c;交流电机变频调速已经逐步取代直流电机调速&#xff0c;并经历了采用电压频率协调控制、转差频率控制、矢量控制以及直接转矩控制的发展过程。其…