bdld.net
当前位置:首页 >> mAtlAB用模拟退火算法解决问题 >>

mAtlAB用模拟退火算法解决问题

“模拟退火”算法是源于对热力学中退火过程的模拟,在某一给定初温下,通过缓慢下降温度参数,使算法能够在多项式时间内给...

clear clc a = 0.95 k = [5;10;13;4;3;11;13;10;8;16;7;4]; k = -k;% 模拟退火算法是求解最小值,故取负数 d = [2;5;18;3;2;5;10;4;11;7;14;6]; restriction = 46; num = 12; sol_new = ones(1,num); % 生成初始解 E_current = inf;E_best = inf...

其实原理很简单,就是一种概率性的搜索算法,只是一个小程序,所以可以自己编写,我目前就是用自己编写的。 几个关键点就是退火温降一定要缓慢,也就是迭代次数尽量多,所以在温度变化函数里面的参数要设置可能。

1、在命令窗口中输入, >> optimtool %打开模拟退火工具箱 2、在solver选择框中,选择simulannealbnd 3、在目标函数栏输入@simple 4、在初值栏输入[0.5 0.5] 5、在Lower栏输入[-64 -64],Upper栏输入[64 64] 6、点击start,运行 7、结果如下

Matlab嵌入的模拟退火算法 版本 2010 还不能求解 整数变量优化问题,不确定更高版本是否可以求解。

matlab自带的模拟退火工具箱算法是simulannealbnd函数,输入参数是fun,x0,lb,ub,没有约束项,所以,你这个不能用。可换别的算法。

从提示看,目标函数写法不正确,一、变量x1,x2,等等,要写成:x(1),x(2),.... 二、初始值个数,要与变量数相同,有几个x(1),x(2),...,x(5),就要有几个,如5个初始值,而你只写2个,就不对了。

要的话,留个邮箱吧

模拟退火算法,蚁群算法和遗传算法都是启发式随机搜索算法,这种算法理论上式不可能得到最优解的,只能去接近它,由于初始解是随机的,所以每次运行结果必然是不一样的。根据你问题的规模运行数十次和数百次,然后求平均值,可以判断你的算法优劣。

你可以到程序员联合开发网上搜搜看,模拟退火算法是一种局部搜索和全局搜索能力均较好的优化算法

网站首页 | 网站地图
All rights reserved Powered by www.bdld.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com