模拟退火算法(代码可直接运行)

模拟退火算法(SA)

模拟退火是很经典的算法,针对大多数模型、应用,受限于SA运行时间长等特点,已不能直接应用SA,这样的算法值得去改进,我试图找一些缩短运行时间的方法,已经在测试,这里是模拟退火第一篇文章,介绍模拟退火,给出基础代码(经过多次测试,可直接运行)。
参考了https://blog.csdn.net/qq_34554039/article/details/90294046(该文介绍了模拟退火)

1.简介

模拟退火算法的思想:
借鉴于固体的退火过程,当固体的温度很高时,内能比较大,固体内的粒子处于快速无序运动状态,当温度慢慢降低,固体的内能减小,粒子逐渐趋于有序,最终固体处于常温状态,内能达到最小,此时粒子最为稳定。
思路:
一开始为算法设定一个较高的值T(模拟温度),算法不稳定,选择当前较差解的概率很大;随着T的减小,算法趋于稳定,选择较差解的概率减小,最后,T降至终止迭代的条件,得到近似最优解。

2.算法步骤

模拟退火算法,有很多文章进行了介绍,这里不赘述,算法思想也简单,看流程图一般就很清晰了。
在这里插入图片描述
其中,
在这里插入图片描述

代码(一个求函数极值的程序):

运行方式:全部复制保存到一个m文件中,直接运行

function main_fcn_extreme_value()T=1000;%初始化温度值
T_min=1e-12;%设置温度下界
alpha=0.98;%温度的下降率
k=1000;%迭代次数(解空间的大小)x=getX;%随机得到初始解
while(T>T_min)for I=1:kfx=Fx(x);x_new=getX;if(x_new>=-2&&x_new<=2)fx_new=Fx(x_new);delta=fx_new-fx;if(delta<0)x=x_new+(2*rand-1);elseP=getP(delta,T);if(P>rand)x=x_new;endendend
end
T=T*alpha;
end
disp('最优解为:')
disp(x)%%getX.m
function x=getX
x=4*rand-2;
end%%Fx.m
function fx=Fx(x)
fx=(x-2)^2+4;
end%%getP.m
function p=getP(c,t)
p=exp(-c/t);
end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fedora 33 topbar_最新!新增确诊病例33例,其中本土病例1例

【最新&#xff01;新增确诊病例33例&#xff0c;其中本土病例1例】11月8日0-24时&#xff0c;31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例33例&#xff0c;其中境外输入病例32例(上海13例&#xff0c;陕西6例&#xff0c;广东4例&#xff0c;四川4例&#xff0…

javaweb基础(40)_jdbc框架

一、元数据介绍 元数据指的是"数据库"、"表"、"列"的定义信息。 1.1、DataBaseMetaData元数据 Connection.getDatabaseMetaData()获得代表DatabaseMetaData元数据的DatabaseMetaData对象。  DataBaseMetaData对象的常用方法&#xff1a; getUR…

matlab运动目标检测

matlab运动目标检测最近做了运动目标检测的程序和GUI实现&#xff0c;参考了挺多博客&#xff0c;很多都是对数据格式要求比较高或者存在一定的bug&#xff08;有些是因为版本不同&#xff09;&#xff0c;进行了一些修改。&#xff08;2014以后的matlab都能运行&#xff09;&a…

st-link v2怎么连接_三相交流电源的三角形和星形连接

相交流电是电能的一种输送形式&#xff0c;简称为三相电。三相交流电源&#xff0c;是由三个频率相同、振幅相等、相位依次互差120的交流电势组成的电源。我国发电厂和电力网生产、输送和分配的交流电都是三相交流电。1、三角形连接将三相电源的三个线圈&#xff0c;以一个线圈…

matlab程序聚类预测机器学习

matlabmatlab程序代做&#xff0c;数据挖掘&#xff0c;聚类&#xff0c;预测&#xff0c;分类&#xff0c;优化&#xff0c;建模。降重&#xff0c;降低重复率&#xff0c;24h出结果&#xff0c;最低1%重复。 机器学习&#xff0c;深度学习&#xff0c;神经网络代写&#xff0…

友益文书类似软件_团队成员分享 | 港中文翻译学姐:硬件不够,软件来凑;心之所愿,无所不能...

B学姐硬件不行的同学一定要努力提高自己对申请专业上的实习经验。饱腹诗书不够&#xff0c;也要有亲身实践后的体悟&#xff0c;这很加分。多对该行业背景现状进行思考&#xff0c;老师都喜欢有思想的学生&#xff0c;在后期面试也会给你带来惊喜。在读专业&#xff1a;港中文M…

iOS开发技巧,细节(二)

1.常量名称最好用static标识&#xff0c;例如下面的代码&#xff0c;包括其他一些只需要定义一次&#xff0c;之后不需要变化的变量也最好使用static static NSString *CellIdentifier "Cell"; 2.当设置视图控制器需要接受通知时&#xff0c;需要在dealloc取消监听 …

matlab支持向量机程序代做

matlab&#xff0c;支持向量机 回归&#xff0c;分类&#xff0c;都可以。另外决策树&#xff0c;神经网络都可以私人订制 **线性svm&#xff0c;二次svm&#xff0c;cubic svm

c++ qt5范例开发大全_使用yocto工具编译qt5.9.6总结

运行平台&#xff1a;OKMX6DL-C编译平台&#xff1a;Ubuntu 14.04.6 LTS编译工具&#xff1a;arm-poky-linux-gnueabi-gcc&#xff08;gcc version 5.3.0 (GCC) &#xff09;qt源码&#xff1a;qt-everywhere-opensource-src-5.9.6.tar.xz参考&#xff1a;嵌入式开发之Qt-5.9.6…

Android堆栈分析

在开发中&#xff0c;与界面跳转联系比较紧密的概念是Task&#xff08;任务&#xff09;和Back Stack&#xff08;回退栈&#xff09;。activity的启动模式会影响Task和Back Stack的状态&#xff0c; 进而影响用户体验。除了启动模式之外&#xff0c;Intent类中定义的一些标志&…

如何写一篇MBA论文-涉及matlab建模

如何写一篇MBA论文&#xff1f; 知乎 19 个回答方向&#xff0c;具体一点&#xff0c;不要太大。战略管理、薪酬管理、绩效考核、营销管理&#xff0c;客户关系管理、供应链管理、供应商选择与评价&#xff0c;库存问题。。论文模式第1章&#xff1a;绪论第2章&#xff1a;现状…

什么电脑的牌子好用_扬州诚招电动牙刷代理有什么牌子比较好用

扬州诚招电动牙刷代理有什么牌子比较好用&#xff0c;珈蓝电器实惠物美&#xff0c;为人类口腔事业的发展再创新贡献。扬州诚招电动牙刷代理有什么牌子比较好用&#xff0c; 很多人说电动牙刷是懒人神器&#xff0c; 但偷懒可以&#xff0c;口腔清洁效果可不能因此打折。电动牙…

360浏览器打不开网页_苹果移动端、PC端safari浏览器打不开网页的解决方案!

你还在为苹果自带的safari浏览器打不开网页而苦恼吗&#xff0c;接下来的答案会帮助你解决苦恼。苹果自带safari浏览器的设备分为两种&#xff1a;移动端、PC端。因此不同设备出现safari浏览器打不开网页的情况需要具体问题具体分析。最简单的问题往往最容易被我们忽视&#xf…

台式电脑如何截屏_买台式电脑如何避免成为被宰羔羊(一)

台式电脑的优点是很多的&#xff0c;比如价格便宜(和游戏本比起来)&#xff0c;比如性能发挥稳定(因为不受限于散热)&#xff0c;比如屏幕大看起来更舒服。但是和笔记本比起来&#xff0c;台式的水就非常深了&#xff0c;无论是线下实体店&#xff0c;还是线上网店&#xff0c;…

n型半导体和p型半导体的区别_VNX系列大流量工业型膜堆, 为半导体等行业提供超纯水!...

自20世纪80年代以来&#xff0c;IONPURE始终以为广泛的应用提供最优质的电化学解决方案延续着它的领导地位。IONPURE持续创新&#xff0c;于2004年推出了VNX 系列大流量CEDI膜堆&#xff0c;单个膜堆的名义产水流量最大可达12.5m3/h。IONPURE于2018年推出了单个膜堆的名义产水流…

属于db模式缺点的是什么_详解 Seata Golang 客户端 AT 模式及其使用

源码:point_down: seata-golang概述我们知道 Seata Java Client 的 AT 模式&#xff0c;通过代理数据源&#xff0c;实现了对业务代码无侵入的分布式事务协调机制&#xff0c;将与 Transaction Coordinator (TC) 交互的逻辑、Commit 的逻辑、Rollback 的逻辑&#xff0c;隐藏在…

如何在mfc主对话框中再显示子对话框_win10扩展显示器设置方法

使用win10系统的过程中&#xff0c;常常需要对win10系统扩展显示器进行设置。良多对电脑不太认识的用户不知道win10系统扩展显示器到底该如何设置?实在win10系统扩展显示器的设置方法非常简朴&#xff0c;下面小编教你win10扩展显示器设置方法。一些用户使用电脑时需要运行多个…

蓝牙驱动卸载后自动安装_Intel 蓝牙驱动安装教程

前言可能有些人之前没有搞定Intel蓝牙的驱动&#xff0c;今天就把蓝牙的驱动也发一下&#xff0c;实现Intel全家桶的驱动&#xff0c;到处倒腾换网卡也是挺折腾的。所支持的蓝牙IDIntelBluetoothFirmware 是一个用于在 macOS 中启用原生蓝牙的固件上传驱动&#xff0c;固件的二…

cad在线转低版本_为什么别人制图那么快?41个CAD实用技巧,3天轻松玩转CAD

获取更多业界资讯和深度好文● 点击蓝字关注我们 ●点击上方蓝色字体 关注我们我们在使用CAD制图时&#xff0c;总感觉自己的速度非常慢&#xff0c;为什么别人可以那么快的制图呢&#xff1f;今天就给大家分享一些CAD实用技巧&#xff0c;让你3天轻松玩转CAD。一、提高绘图效率…