



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单钻头退火算法matlab编程clear clc a = 0.999; % 温度衰减函数的参数 t0 = 97; tf = 3; t = t0; Markov_length = 2800; % Markov链长度 coordinates = ; coordinates(:,1) = ; amount = size(coordinates,1); % 城市的数目 % 通过向量化的方法计算距离矩阵 dist_matrix = zeros(amount, amount); coor_x_tmp1 = coordinates(:,1) * ones(1,amount); coor_x_tmp2 = coor_x_tmp1; coor_y_tmp1 = coordinates(:,2) * ones(1,amount); coor_y_tmp2 = coor_y_tmp1; dist_matrix = sqrt(coor_x_tmp1-coor_x_tmp2).2 + . (coor_y_tmp1-coor_y_tmp2).2); sol_new = 1:amount; % 产生初始解% sol_new是每次产生的新解;sol_current是当前解;sol_best是冷却中的最好解; E_current = inf;E_best = inf; % E_current是当前解对应的回路距离;% E_new是新解的回路距离;% E_best是最优解的 sol_current = sol_new; sol_best = sol_new; p = 1; while t=tf for r=1:Markov_length % Markov链长度 % 产生随机扰动 if (rand 0.5) % 随机决定是进行两交换还是三交换 % 两交换 ind1 = 0; ind2 = 0; while (ind1 = ind2) ind1 = ceil(rand.*amount); ind2 = ceil(rand.*amount); end tmp1 = sol_new(ind1); sol_new(ind1) = sol_new(ind2); sol_new(ind2) = tmp1; else % 三交换 ind1 = 0; ind2 = 0; ind3 = 0; while (ind1 = ind2) | (ind1 = ind3) . | (ind2 = ind3) | (abs(ind1-ind2) = 1) ind1 = ceil(rand.*amount); ind2 = ceil(rand.*amount); ind3 = ceil(rand.*amount); end tmp1 = ind1;tmp2 = ind2;tmp3 = ind3; % 确保ind1 ind2 ind3 if (ind1 ind2) & (ind2 ind3) ; elseif (ind1 ind3) & (ind3 ind2) ind2 = tmp3;ind3 = tmp2; elseif (ind2 ind1) & (ind1 ind3) ind1 = tmp2;ind2 = tmp1; elseif (ind2 ind3) & (ind3 ind1) ind1 = tmp2;ind2 = tmp3; ind3 = tmp1; elseif (ind3 ind1) & (ind1 ind2) ind1 = tmp3;ind2 = tmp1; ind3 = tmp2; elseif (ind3 ind2) & (ind2 ind1) ind1 = tmp3;ind2 = tmp2; ind3 = tmp1; end tmplist1 = sol_new(ind1+1):(ind2-1); sol_new(ind1+1):(ind1+ind3-ind2+1) = . sol_new(ind2):(ind3); sol_new(ind1+ind3-ind2+2):ind3) = . tmplist1; end %检查是否满足约束 % 计算目标函数值(即内能) E_new = 0; for i = 1 : (amount-1) E_new = E_new + . dist_matrix(sol_new(i),sol_new(i+1); end % 再算上从最后一个城市到第一个城市的距离 %E_new = E_new + . %dist_matrix(sol_new(amount),sol_new(1); if E_new E_current E_current = E_new; sol_current = sol_new; if E_new E_best% 把冷却过程中最好的解保存下来 E_best = E_new; sol_best = sol_new; end else % 若新解的目标函数值小于当前解的, % 则仅以一定概率接受新解 if rand exp(-(E_new-E_current)./t) E_current = E_new; sol_current = sol_new; else sol_new = sol_current; end end end t=t.*a; % 控制参数t(温度)减少为原来的a倍 end disp(最优解为:) disp(sol_best) disp(最短距离:) disp(E_best) figure() set(gcf,Name,monituihuo-sol_best,Color,r) N=length(sol_best); scatter(coordinates(:,1),coordinates(:,2),50,filled); hold on plot(coordinates(sol_best(1),1),coordinates(sol_best(N),1),coordinates(sol_best(1),2),coordinates(sol_best(N),2) set(gca,Color,g) hold on for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议承办服务协议书8篇
- 国家事业单位招聘2025中国国土勘测规划院招聘应届毕业生拟聘人员笔试历年参考题库附带答案详解
- 奔驰车辆无偿赠与协议9篇
- 南京市2025江苏城乡建设职业学院招聘工作人员26人(第一批)笔试历年参考题库附带答案详解
- 临夏回族自治州2025年甘肃临夏某部招聘民兵教练员笔试历年参考题库附带答案详解
- 2025陕西陕建瑞高科技园有限公司招聘(25人)笔试参考题库附带答案详解
- 2025广东湛江经济技术开发区建设投资发展集团有限公司招聘1人笔试参考题库附带答案详解
- 2025年萍乡市工程咨询管理顾问有限责任公司招聘第一批外聘人员23人笔试参考题库附带答案详解
- 2025年烟台莱州市财金投资有限公司招聘(10人)笔试参考题库附带答案详解
- 2025年江苏昆山创业控股集团有限公司第一批人才招聘15人笔试参考题库附带答案详解
- 2024年贵州遵义市市直事业单位选调31人历年高频难、易点(公共基础测验共200题含答案解析)模拟试卷
- 讲文明讲卫生
- GA 1809-2022城市供水系统反恐怖防范要求
- 近效期药品登记表
- 2022年全国工会财务知识大赛参考题库精简600题(含各题型)
- 特高压交流与特高压直流输电技术特点对比分析
- 康复医学科关于无效中止康复训练的制度与流程
- GB/T 13460-2016再生橡胶通用规范
- 《矩阵论》研究生教学课件
- 中国荨麻疹诊疗指南(2022版)
- 北京市统一医疗服务收费标准
评论
0/150
提交评论