Matlab 模拟退火算法模型代码

function [best_solution,best_fit,iter] = mySa(solution,a,t0,tf,Markov)
% 模拟退化算法
% ===== 输入 ======%
% solution 初始解
% a 温度衰减系数 0.99
% t0 初始温度 120
% tf 最终温度 1
% Markov 马尔科夫链长度 10000
% ====== 输出 =====%
% best_solution 最优解
% best_fit 最优解目标值
% iter 迭代次数
n = length(solution);
t = t0;
solution_new = solution; % 初始解赋给最新的解
best_fit = Inf; % 初始化最优适应度(最差的适应度)
fit = Inf; % 初始化当前的适应度
best_solution = solution; % 最优解
iter = 1;
% -----------------------迭代过程------------------------------------%
while t >= tf
for j = 1:Markov
% -----------------------产生新解过程------------------------------------%
%进行扰动,产生新的序列solution_new;
if (rand < 0.7) % 概率小于0.7 采取交换两个数位置的方式产生新解
ind1 = 0; ind2 = 0;
while(ind1 == ind2 && ind1 >= ind2)
ind1 = ceil(rand*n);
ind2 = ceil(rand*n);
end
temp = solution_new(ind1);
solution_new(ind1) = solution_new(ind2);
solution_new(ind2) = temp;
else % 概率大于等于0.7 采取成组交换连续三个数位置的方式产生新解
ind = zeros(3,1);
L_ind = length(unique(ind));
while (L_ind < 3)
ind = ceil([rand*n rand*n rand*n]);
L_ind = length(unique(ind));
end
ind0 = sort(ind);
a1 = ind0(1); b1 = ind0(2); c1 = ind0(3);
solution0 = solution_new;
solution0(a1:a1+c1-b1-1) = solution_new(b1+1:c1);
solution0(a1+c1-b1:c1) = solution_new(a1:b1);
solution_new = solution0;
end
% -----------------------计算适应度过程------------------------------------ %
%计算适应度fit_new
fit_new = myFitCal(solution_new);
% -----------------------解的更新过程------------------------------------ %
if fit_new<fit
fit = fit_new;
solution = solution_new;
%对最优路线和距离更新
if fit_new < best_fit
iter = iter + 1;
best_fit = fit_new;
best_solution = solution_new;
end
else
if rand<exp(-(fit_new-fit)/t)
solution = solution_new;
fit = fit_new;
end
end
solution_new = solution;
end
t = t*a; %降温
end
Matlab 模拟退火算法模型代码的更多相关文章
- Matlab 非线性规划问题模型代码
非线性规划问题的基本内容 非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题. 当目标函数为最小值时,上述问题可以写成如下形式: \[ \mi ...
- Matlab 线性规划问题模型代码
线性规划问题的基本内容 线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题. \[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \] \[ ...
- Matlab 图论最短路问题模型代码
最短路问题的基本内容 最短路问题研究的是,在一个点与点之间连接形成的网络图中,对应路径赋予一定的权重(可以理解为两点之间的距离),计算任意两点之间如何和走,路径最短的问题.在这里的距离可以理解成各种两 ...
- Matlab随笔之模拟退火算法
问题描述: 我方有一个基地,经度和纬度为( 70,40).假设我方飞机的速度为 1000 公里/小时. 我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地.在敌方每一目 标点的侦察时间不计 ...
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- Matlab 整数线性规划问题模型代码
整数线性规划问题的基本内容 整数线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题.其中自变量只能取整数.特别地,当自变量只能取0或者1时,称之为 0-1 整数规 ...
- [原创] Matlab 指派问题模型代码
指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...
- 模拟退火算法(SA)求解TSP 问题(C语言实现)
这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
随机推荐
- DRF (Django REST framework) 中的视图类
视图说明 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父 ...
- idea打包报错
There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation ...
- Git安装与使用(windows环境)(一)----Git安装、生成公钥和私钥、添加SSH
安装 1.从官网下载git:http://git-scm.com/downloads 2.安装git,选择git组件安装,如下图 3.一直next,直到出现下面的窗口.这里是选择命令行形式.(可以理解 ...
- 基于随机游走的三维网格分割算法(Random Walks)
首先以一维随机游走(1D Random Walks)为例来介绍下随机游走(Random Walks)算法,如下图所示,从某点出发,随机向左右移动,向左和向右的概率相同,都为1/2,并且到达0点或N点则 ...
- Python--高阶函数、函数嵌套、名称空间及变量作用域、闭包、装饰器
1.高阶函数(map/reduce/filter) 高阶函数是指函数的参数可以是函数 这篇总结几个常用的高阶函数:map/reduce/filter map函数.reduce函数.filter函数都是 ...
- spring-cloud-kubernetes背后的三个关键知识点
在<你好spring-cloud-kubernetes>一文中,对spring-cloud-kubernetes这个SpringCloud官方kubernetes服务框架有了基本了解,今天 ...
- C#开发BIMFACE系列1 BIMFACE 简介
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 是什么 BIMFACE = 国内领先的BIM轻量化引擎 BIMFACE 是广联达公司旗下的一款具有完全自主知识产权的BIM轻量化 ...
- 安卓开发开发规范手册V1.0
安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出 ...
- P2564 [SCOI2009]生日礼物 贪心
https://www.luogu.org/problemnew/show/P2564) 题意 有n个珠子,包括k中颜色,找出长度最小的一个区间,使得这个区间中包含所有的颜色. 思路 把n个珠子按照位 ...
- 【牛客Wannafly挑战赛12】 题解
传送门:https://www.nowcoder.com/acm/contest/79#question 说是比赛题解,其实我只会前三题: 后面的一定补 T1 题意,在一个长度为n的时间内,问如何选择 ...