车辆调度 matlab,基于遗传算法的车辆调度问题的matlab源程序
越界 发表于 2013-7-8 09:16
有偿服务哦
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('最优解','平均解');
车辆调度 matlab,基于遗传算法的车辆调度问题的matlab源程序相关推荐
- 基于遗传算法无人机路径规划MATLAB,基于遗传算法的机器人路径规划MATLAB源码
算法的思路如下:取各障碍物顶点连线的中点为路径点,相互连接各路径点,将机器人移动的起点和终点限制在各路径点上,利用Dijkstra算法来求网络图的最短路径,找到从起点P1到终点Pn的最短路径,由于上述 ...
- matlab遗传算法拟合,基于遗传算法的数据拟合在MATLAB环境中的实现
湖 南 农 机 2010 年 5 月 收稿日期:2010-04-02 作者简介:林鸿彬(1987-),男,海南海口人,主要从事信息与计算科学专业的学习. 摘 要:在自然科学中,常常在相关的 2 个量之 ...
- 【建模算法】基于遗传算法求解TSP问题(matlab求解)
[建模算法]基于遗传算法求解TSP问题(matlab求解) TSP (traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问题规模的增 ...
- Matlab 基于遗传算法优化的VMD信号去噪算法 创新点:基于样本熵作为适应度函数
Matlab 基于遗传算法优化的VMD信号去噪算法 创新点:基于样本熵作为适应度函数 创新点2:基于信噪比作为适应度函数 提高信噪比 本人研究方向信号处理特征提取与故障诊断算法 ID:34506686 ...
- BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)
文章目录 前言 一.遗传算法描述 二.优化思路 三.完整代码 预测结果 前言 首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的 ...
- matlab代做mhslogic,MATLAB代做|FPGA代做|simulink代做——基于遗传算法的车间布局优化MATLAB源码...
MATLAB代做|FPGA代做|simulink代做--基于遗传算法的车间布局优化MATLAB源码 添加时间:2019-12-8 来源:本站整理 基于遗传算法的车间布局优化MATLAB源码 车间布局优 ...
- matlab和投影寻踪,基于遗传算法的投影寻踪模型Matlab源码
基于遗传算法的投影寻踪模型Matlab源码 %% "投影寻踪+遗传算法优化"的主仿真程序 % GreenSim团队原创作品,转载请注明 % Email:greensim@http: ...
- 【优化调度】基于遗传算法实现车辆发车间隔优化问题matlab源码
1 简介 根据公交调度优化问题的特点,考虑车辆满载率及最大,最小发车间隔的约束,以企业收益和乘客利益最大为目标建立的公交发车间隔模型,采用遗传算法进行求解.实际应用表明,利用该模型及其算法能够快速得到 ...
- MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题
文章目录 文中涉及源代码请参见,感兴趣的小伙伴可自行订阅下载! 数学建模源码集锦-基于多层编码遗传算法的车间调度算法应用实例 1. 关于遗传算法的一个小故事 2. 遗传算法操作流程 3. 车间调度问题 ...
最新文章
- Java项目:医院住院管理系统(java+SSM+jsp+mysql+maven)
- [ python ] 类的组合
- 哪家中国公司为Java 16贡献最多?Java第一大厂居然不是第一的...
- php使用axios发送请求,axios源码之模拟实现axios发送请求
- Fescar TC-beigin流程
- 新建raw data 分区
- 计算机专业论文周记20篇,毕业论文工作周记6篇
- 【RDMA】RDMA通信测试工具|RDMA信息查询工具
- JS——数组中去除空空字符串
- Gas Station (环形加油站)
- 我们为什么做Banana Pi开源硬件项目:
- 基于ARM的智能灯光控制系统(4)数据结构
- 【附源码】计算机毕业设计SSM网上商城比价系统
- python通过qq邮箱发邮件
- js 获取设备或浏览器唯一标识的方式
- Firefox全面兼容中国银联“在线支付”
- Linux下Quagga安装与配置
- php报错 Function name must be a string in xxxx解决
- Wannafly 22A
- 手机信号屏蔽器的设计与制作
热门文章
- 《叮当 大结局》意想不到啊……
- Altium Designer 20 入门基础知识(2)
- American Fuzzy Lop(AFL) Fuzz无源码程序
- excel一列数据两两组合(excel一列的数据等于另一列)
- java计算机毕业设计小型企业财务报销管理源代码+数据库+系统+lw文档
- 量化对冲领域有哪些经典的策略和传奇人物?
- P-1.4.1 尝试实现OW的自动瞄准
- 软件自动化测试开发邹辉,软件自动化测试开发
- JAVA类和对象(1)
- 如何应对AIoT对芯片的碎片化需求?