模拟退火算法优化灰色
clc;
clear;
close all;
warning off;
%%
tic
T0=1000; % 初始温度
Tend=1e-3; % 终止温度
L=200; % 各温度下的迭代次数(链长)
q=0.9; %降温速率
X=[16.4700 96.1000
16.4700 94.4400
20.0900 92.5400
22.3900 93.3700
25.2300 97.2400
22.0000 96.0500
20.4700 97.0200
17.2000 96.2900
16.3000 97.3800
14.0500 98.1200
16.5300 97.3800
21.5200 95.5900
19.4100 97.1300
20.0900 92.5500];
%%
D=Distanse(X); %计算距离矩阵
N=size(D,1); %城市的个数
%% 初始解
S1=randperm(N); %随机产生一个初始路线
%% 画出随机解的路径图
DrawPath(S1,X)
pause(0.0001)
%% 输出随机解的路径和总距离
disp('初始种群中的一个随机值:')
OutputPath(S1);
Rlength=PathLength(D,S1);
disp(['总距离:',num2str(Rlength)]);
%% 计算迭代的次数Time
% Time=ceil(double(solve(['1000*(0.9)^x=',num2str(Tend)])));
syms x;
eq = 1000*(0.9)^x == num2str(Tend);
Time=ceil(double(solve(eq,x)));
count=0; %迭代计数
Obj=zeros(Time,1); %目标值矩阵初始化
track=zeros(Time,N); %每代的最优路线矩阵初始化
%% 迭代
while T0>Tend
count=count+1; %更新迭代次数
temp=zeros(L,N+1);
for k=1:L
%% 产生新解
S2=NewAnswer(S1);
%% Metropolis法则判断是否接受新解
[S1,R]=Metropolis(S1,S2,D,T0); %Metropolis 抽样算法
temp(k,:)=[S1 R]; %记录下一路线的及其路程
end
%% 记录每次迭代过程的最优路线
[d0,index]=min(temp(:,end)); %找出当前温度下最优路线
if count==1 || d0<Obj(count-1)
Obj(count)=d0; %如果当前温度下最优路程小于上一路程则记录当前路程
else
Obj(count)=Obj(count-1);%如果当前温度下最优路程大于上一路程则记录上一路程
end
track(count,:)=temp(index,1:end-1); %记录当前温度的最优路线
T0=q*T0; %降温
fprintf('经过%d代,最优路径距离为:%f\n',count,Obj(count)) %输出当前迭代次数
end
%% 优化过程迭代图
figure
plot(1:count,Obj)
xlabel('迭代次数')
ylabel('距离')
title('优化过程')
%% 最优解的路径图
DrawPath(track(end,:),X)
%% 输出最优解的路线和总距离
disp('最优解:')
S=track(end,:);
p=OutputPath(S);
disp(['总距离:',num2str(PathLength(D,S))]);
disp('-------------------------------------------------------------')
toc
模拟退火算法优化灰色相关推荐
- 【Matlab优化预测】布谷鸟算法优化灰色模型预测【含源码 1244期】
一.代码运行视频(哔哩哔哩) [Matlab优化预测]布谷鸟算法优化灰色模型预测[含源码 1244期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]屈迟文,傅 ...
- 【灰色神经预测】基于布谷鸟算法优化灰色神经网络模型实现数据回归预测含Matlab源码
1 简介 人工神经网络已成功应用到许多领域,如模式识别.机器学习.信号处理和信息融合等,但是,如果神经网络的学习算法或拓扑结构选择不当,可能导致出现神经网络的预测准确度低的问题.为此,许多研究者开始将 ...
- 基于模拟退火算法的TSP算法
文章目录 一,理论基础 二,TSP问题介绍 三,思路和步骤 控制参数的设置 初始解 解变换生成新解 Metropolis准则 降温 四,MATLAB程序实现 五,结果分析 六,算法的改进 七,算法的局 ...
- Python数模笔记-模拟退火算法(1)多变量函数优化
1.模拟退火算法 模拟退火算法借鉴了统计物理学的思想,是一种简单.通用的启发式优化算法,并在理论上具有概率性全局优化性能,因而在科研和工程中得到了广泛的应用. 退火是金属从熔融状态缓慢冷却.最终达到能 ...
- 【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战
文章目录 一.介绍 二.基础知识 2.1 局部搜索(或蒙特卡罗)算法 2.2 Metropolis 算法 2.3 模拟退火算法 三.原理 3.1 Statistical Equilibrium 统计平 ...
- 优化算法系列-模拟退火算法(1)——基本原理枯燥版本
优化算法系列之模拟退火算法(1)--基本原理枯燥版本 推荐书籍--><智能优化算法及其MATLAB实例(第二版)> 知乎上的形象描述: 一个锅底凹凸不平有很多坑的大锅,晃动这个锅使得 ...
- 【Matlab电力负荷预测】模拟退火算法结合狮群算法优化Elman神经网络电力负荷预测【含源码 1454期】
一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]模拟退火算法结合狮群算法优化Elman神经网络电力负荷预测[含源码 1454期] 二.matlab版本及参考文献 1 matlab版本 201 ...
- 【电力负荷预测】模拟退火算法结合狮群算法优化Elman神经网络电力负荷预测【含Matlab源码 1454期】
⛄一.模拟退火算法简介 1 引言 模拟退火算法(Simulated Annealing,SA)的思想最早由Metropolis等人于1953年提出:Kirkpatrick于1983年第一次使用模拟退火 ...
- java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
最新文章
- 操作系统原理二进程切换,调度
- hostingranking.cn·基于ghost的轻量技术架构整理
- POJ-3621 Sightseeing Cows 最优比率环、01分数规划
- POJ - 3263 Tallest Cow(简单差分)
- java.lang.NoClassDefFoundError:如何解决–第1部分
- Python 内置函数之 open (文件操作)
- 成功解决问题[xml:[xX][mM][lL] is not allowed
- 计算机论文物业管理系统,小区物业管理系统的设计与实现(计算机毕业设计)...
- 【美赛备赛】word编辑公式全攻略
- 浅谈MFC中BitBlt与StretchDIBits的区别
- RT-Thread的STM32系列外设驱动添加 ---- 以PWM外设为例
- Ansible中的jinjia2模板
- 昨日种种死 今日种种生
- treecnt 51Nod - 1677
- 汽车在线升级系统(OTA)开发浅析
- 外挂、破解软件理论与实战
- 城乡规划一些不错的期刊
- 博士访谈计算机科学研究,【计算机学院】国奖访谈 | 2019级博士研究生熊宇轩:一流的研究,从热爱科学开始...
- Android 原生控件之一 TextView
- ColorMatrix颜色矩阵让图片千变万化
热门文章
- 以下符号可直接复制使用
- Java判断操作系统是Linux还是Windows,以及分隔符处理
- 直积与张量积的数学与物理定义异同
- dl4j LSTM分类
- arduino驱动MG996舵机+stm32f103驱动舵机
- java存款只能存100_有100万存款,怎么样存银行才是最佳方法呢?
- Android设备支持USB转RJ45有线网卡( 沐阳网卡JP1081B/9700)
- 已知分布函数求概率密度例题_初二一次函数知识点及做题思路解析,一次函数不好的同学看一看...
- 计算机控制技术(于海生)-整理
- 九章算法面试题13 随机数生成器