永发信息网

matlab 最短路线

答案:1  悬赏:80  手机版
解决时间 2021-02-09 22:35
matlab 最短路线
最佳答案
寻找模拟退火算法吧,matlab有现成的工具箱的.
以下是我在搜搜上搜到的模拟退火的源代码,你可以研究一下
=========================================
function [xo,fo] = Opt_Simu(f,x0,l,u,kmax,q,TolFun)
% 模拟退火算法求函数 f(x)的最小值点, 且 l <= x <= u
% f为待求函数,x0为初值点,l,u分别为搜索区间的上下限,kmax为最大迭代次数
% q为退火因子,TolFun为函数容许误差
%%%%算法第一步根据输入变量数,将某些量设为缺省值
if nargin < 7
TolFun = 1e-8;
end
if nargin < 6
q = 1;
end
if nargin < 5
kmax = 100;
end
%%%%算法第二步,求解一些基本变量
N = length(x0); %自变量维数
x = x0;
fx = feval(f,x); %函数在初始点x0处的函数值
xo = x;
fo = fx;
%%%%%算法第三步,进行迭代计算,找出近似全局最小点
for k =0:kmax
Ti = (k/kmax)^q;
mu = 10^(Ti*100); % 计算mu
dx = Mu_Inv(2*rand(size(x))-1,mu).*(u - l);%步长dx
x1 = x + dx; %下一个估计点
x1 = (x1 < l).*l +(l <= x1).*(x1 <= u).*x1 +(u < x1).*u; %将x1限定在区间[l,u]上
fx1 = feval(f,x1);
df = fx1- fx;
if df < 0||rand < exp(-Ti*df/(abs(fx) + eps)/TolFun) %如果fx1 x = x1;
fx = fx1;
end
if fx < fo
xo = x;
fo = fx1;
end
end
function x = Mu_Inv(y,mu)
x = (((1+mu).^abs(y)- 1)/mu).*sign(y);
希望能解决您的问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
沐光瑜伽(江湾体育场店)地址在哪,我要去那里
为什么隔着墙能听见声音是因为波的衍射波的衍
高铁管家积分兑换怎么退
如约瑜伽生活馆地址好找么,我有些事要过去
植物经茎往什么方向爬?顺时针还是逆时针
衣香娜时尚女装地址有知道的么?有点事想过去
【时代精神是什么】时代精神的核心是什么?
DataGridView怎么获得正在输入时当前单元格的
华庭时尚商务酒店我想知道这个在什么地方
2004版CAD里,想要合并图形,命令PE,然后出现
合乎健康瑜伽俱乐部地址好找么,我有些事要过
联想服务器型号怎么看
【regretfully】...weregretfullyhavetosayth
邂逅瑜伽地址在哪,我要去那里办事
佳惠平价商场地址在哪,我要去那里办事
推荐资讯
广福茶业地址有知道的么?有点事想过去
百岁健蓝莓口服液是不是 特别好?
黄记煌三汁焖锅金鹰店怎么去啊,有知道地址的
电影情圣中肖翰的广告创意台词,人生就像一个
电视机 USB为什么有时候搜索不到媒体文件
逸品菲凡韩式半永久美甲美睫馆怎么去啊,我要
如风达快递信用卡为什么从武汉到北京转给邮政
瑷尚摄影会所地址在哪,我要去那里办事
康复护理的目标()
隐舍民宿地址好找么,我有些事要过去
当存在温差时,就会产生风吗?
遇到套码或跳码POS机怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?