⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simfire.m

📁 遗传算法求解TSP问题
💻 M
字号:
%模拟退火主程序
function [xbest,fbest]=simfire()
%初始温度
T=10;
%退火速度
a=0.5;
%马尔可夫长度
L=1000;
%结束温度条件
e=0.1;
%人为初始化初始值
fo = -100;
fbest = -10;
xo=[0.1 0.8 0.1 0 0];
%退火过程模拟
while T>e
    for i=1:L
        xn=init(xo);
        %xn=check(xn);
        fn=obj(xn);
        if fn>fbest        %求最大值
            fbest=fn;
            xbest=xn;
        end
        p=Metropolis(fn,fo,T);
        if p>rand()
            xo=xn;
        end
    end
    T=a*T;
end

%新解产生器
function xn=init(xo)
i=round(4*rand()+1);   %产生随机数
j=round(4*rand()+1);   %产生随机数
t=rand();
xo(j)=xo(j)+t*xo(i);
xo(i)=(1-t)*xo(i);
xn=xo;

%检测器
%function xn=check(xn)
function fn=obj(xn)
w=[0.0500    0.2673    0.1863   -0.1517   -0.2424];
h=[0    0.2475    0.1471    0.3793    0.1576];
g=0.2;
fn = (1-g)*dot(w,xn)-g*max(xn.*h);

function p=Metropolis(fn,fo,T)
w=fn-fo;
if w>=0;
    p=1;
end
if w<0
    p=exp(w/T);
end   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -