matlab节约里程法_新手求大神指导,MATLAB中怎么使用节约里程法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
MATLAB中使用节约里程法,达到路径优化的目的。节约法的代码我有,可是看不太懂,求大神帮修改一下代码发我邮箱301327289@qq.com,或者帮我注释一下各代码是什么意思,真心求教,希望懂得大神帮忙。发不了附件,直接复制在这。我的问题如下:
各节点的距离和需求量见后两个表,有1.7t和3t的两种车型,要求用节约里程法在MATLAB中的优化结果,求大神帮助,有一份附件代码,看不太明白,求大神帮忙改成我这个问题,或是在那份代码注释一下每一句代码是什么意思 ,发回qq邮箱3013272894@qq.com。谢谢。
代码如下:
clear
A=[50 19 49 49 53 85 33 59 33 82 70;50 16 92 30 42 90 74 32 23 59 41;0 1.15 1.34 0.53 1.79 1.47 0.01 0.95 0.26 1.21 0.69];
rong=3;
m=size(A,2);
c=zeros(m,m);
for j=1:m
for i=(j+1):m
c(i,j)=sqrt((A(1,i)-A(1,j))^2+(A(2,i)-A(2,j))^2);
end
end
p=zeros(m-1,m-1);
for j=2:(m-1)
for i=(j+1):m
p(i-1,j-1)=c(i,1)+c(j,1)-c(i,j);
end
end
s=p(:);
[hs,wz]=sort(s,1,'descend');
hs(find(hs==0))=[];
for i=1:size(hs)
[sub(i,1),sub(i,2)]=ind2sub(size(p),wz(i)); %将P矩阵各元素索引转换成坐标,并存储到sub矩阵
end;
svt=[hs,sub];
route=zeros(m-1,m-1);
sv=0;
for j=1:m-1
for i=1:size(svt) %求从最大节约值开始,可一起配送的两个客户,作为初始解
if A(3,(svt(i,2)+1))+A(3,(svt(i,3)+1))<=rong
solut=[svt(i,2),svt(i,3)];
sv=sv+svt(i,1);
zhuang=A(3,(solut(1,1)+1))+A(3,(solut(1,2)+1));
ii=i;
break
end
end
for i=(ii+1):size(svt)
if (svt(i,2)==solut(1,1))&&(isempty(find(svt(i,3)==solut))==1)&&((A(3,(svt(i,3)+1))+zhuang)<=rong); %从最大的小于初始解对应的最大节约值对应的坐标判断(左坐标等于最优解的左坐标,并且右坐标不等于最优解的右坐标,并且容量不超)
solut=[svt(i,3),solut]; %如满足条件,将右坐标加到路径的左侧
sv=sv+svt(i,1);
zhuang=A(3,(svt(i,3)+1))+zhuang;
elseif (svt(i,2)==solut(1,length(solut)))&&(isempty(find(svt(i,3)==solut))==1)&&((A(3,(svt(i,3)+1))+zhuang)<=rong);
solut=[solut,svt(i,3)];
sv=sv+svt(i,1);
zhuang=A(3,(svt(i,3)+1))+zhuang;
elseif (svt(i,3)==solut(1,1))&&(isempty(find(svt(i,2)==solut))==1)&&((A(3,(svt(i,2)+1))+zhuang)<=rong);
solut=[svt(i,2),solut];
sv=sv+svt(i,1);
zhuang=A(3,(svt(i,2)+1))+zhuang;
elseif (svt(i,3)==solut(1,length(solut)))&&(isempty(find(svt(i,2)==solut))==1)&&((A(3,(svt(i,2)+1))+zhuang)<=rong);
solut=[solut,svt(i,2)];
sv=sv+svt(i,1);
zhuang=A(3,(svt(i,2)+1))+zhuang;
else continue
end
end
for i=size(svt):-1:1 %删除已经选到路径中的点
if ((isempty(find(svt(i,2)==solut))==0)||(isempty(find(svt(i,3)==solut))==0));
svt(i,:)=[];
else continue
end
end
route(j,(1:length(solut)))=solut; %将确定好的某一条路径存到route矩阵的一行中
if isempty(svt) %直到判断svt无元素,退出
break
end
end
for i=1:m-1 %判断route中没有的单一用户,增加一行,加入到route中
if (isempty(find(route(:)==i))==1)
route(j+1,1)=i;
j=j+1;
end
end
opt=2*sum(c(:,1))-sv;
plot(A(1,1),A(2,1),'s')
text(A(1,1),A(2,1),['(',num2str(A(1,1)),',',num2str(A(2,1)),')'])
hold on;
for i=2:m
plot (A(1,i),A(2,i),'o')
text(A(1,i),A(2,i),['(',num2str(A(1,i)),',',num2str(A(2,i)),')'])
hold on;
end
for i=1:m-1
line([A(1,1),A(1,route(i,1)+1)],[A(2,1),A(2,route(i,1)+1)])
for j=1:m-1
if route(i,j)~=0
line([A(1,route(i,j)+1),A(1,route(i,j+1)+1)],[A(2,route(i,j)+1),A(2,route(i,j+1)+1)])
end
end
end
matlab节约里程法_新手求大神指导,MATLAB中怎么使用节约里程法相关推荐
- python 单词拆音节_新手求大神carry!关于单词音节问题!求救!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 def check_syllables(poem_lines, pattern, word_to_phonemes): r""&quo ...
- matlab求解复杂隐函数,MATLAB复杂隐函数求解!求大神指导!
问题描述: MATLAB复杂隐函数求解!求大神指导! syms D1 D2 G1 G2 al E1 E2 Km w6 G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2* ...
- MATLAB索引超出矩阵维度,求大神指点错误!
MATLAB索引超出矩阵维度,求大神指点错误! MATLAB索引超出矩阵维度,求大神指点错误! 最近在做k均值动态聚类的时候,matlab提示索引超出矩阵维度,不知道问题出在哪了. 代码 N1 = 5 ...
- 遗传算法优化BP神经网络出现输入参数不足,是什么原因啊,求大神指导,代码如下
用遗传算法优化BP神经网络,在加粗那行出现输入参数不足,是什么原因啊,求大神指导,代码如下 function err=Bpfun(x,P,T,hiddennum,P_test,T_test) fid= ...
- java日历打印出的格式不对_Java打印某年某月的日历 没有错误但是运行出的月份与实际不符 求大神指导...
Java打印某年某月的日历 没有错误但是运行出的月份与实际不符 求大神指导 我看了一下日历,发现你打出来的其实是九月份而不是八月份,那么我猜在showPrint这里的第二个参数是从0开始的,即0~11 ...
- java计算器 运算符优先级_跪求大神帮忙,怎样在java 计算器中实现,四则运算优先级;...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下,跪求大神补充 import java.awt.*; import java.awt.event.*; import java.awt.image ...
- python 扯线木偶_Python计算器求助~求大神指导~QAQ急!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 from tkinter import * root = Tk() root.title('计算器') exp = StringVar() #用于在存储文 ...
- 请大神指导EGS5中DOSRZnrc的相关内容
本人现在做蒙卡模拟方面的课题,其中涉及到EGS5中DOSRZnrc code模拟CT数据,我想了解一下这是代码的内容以及相关介绍,求相关大神帮忙解答
- matlab四条曲线围成面,matlab中怎么给四条曲线作出图例啊?求大神指导
clear all: clc disp('插值求取平滑曲线后的数值' ) t = [5 10 15 20 30 40 60 80 120] ; A = [29.84 40.01 46.71 53.87 ...
- mysql 存byte数组中_新人求大神教教:如何把一个一维数组存入mysql 表格中
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 直接项目里找了一段代码,自己看吧 public BasicUser getUser(IUser user) throws Exception { Stri ...
最新文章
- linux内核丢弃udp报文,c++ Linux UDP数据包丢失的原因
- eclipse android logcat 只显示自己应用程序信息的设置方法
- maven,spring,mybatis集成错误
- (16)python_random学习笔记
- 你不了解的事,十三天精通爬虫分布式学习路线,赠教程
- 无线通信里的 UAV
- 简约竞聘个人简历自我介绍PPT模板
- 小结——scanf和scanf_s的区别以及最近练习的一些习题
- DropDownMenu下拉菜单
- 《麦肯锡工作法》读书分享
- 小白也能看懂的华为防火墙配置教程
- 数据结构与算法:实验报告(串及其应用)
- 基于Scrapy对更新后的Dmoz进行抓取(网上旧版本不靠谱)
- 【日记】c# 读取网页json数据
- 浪潮5280m4导轨安装_NF5280M4机架解密:拆装方便和稳定_浪潮 英信NF5280M4(Xeon E5-2620 v3/8GB/300GB*3/16*HSB)_服务器知识学堂-中关村在线...
- 在校大学生如何利用编程赚钱?
- Python中级 —— 01面向对象进阶
- 我很讨厌标题党,伸手党和杠精
- hive 如何解析包含 json 的字符串字段
- MSP430G2553 看门狗喂狗问题
热门文章
- 算法导论答案网Solutions to Introduction to Algorithms Third Edition_开源免费完整
- 61850协议服务器端开发,IEC61850中报告服务端开发
- 网络术语还在困扰你吗?
- 理论物理考研攻略!!!
- flash的计算机知识,Flash CS6计算机动画设计教程
- 王炸!!微软终于对 JDK 下手了…
- 多么乐alexa网站流量数据报告助手
- 【转】无线路由器密码破解
- class不生效 weblogic_weblogic部署常见问题
- Android中CheckBox与CompoundButton源码解析