annealing.m

来自「用matlab编写的遗传算法和模拟退火程序」· M 代码 · 共 37 行

M
37
字号
function [ S,E,Tk ] = annealing( S,Wij,Tk,c )%ANNEALING p288随机模拟退火算法%输入参数:%         S:网络节点的状态序列,每个节点可取值+1或-1%       Wij:节点间的权值矩阵%       Tk:温度%        c:T(k+1)=c*T(k)n=size(S,2);%有n个节点undone=true;k=1;k_max=800;while undone    for cyc=1:n*4 %所有节点轮询四次        i=round(rand*n);        if i==0            i=1;        end        Ea=-0.5*S(i)*Wij(i,:)*S';        Eb=-Ea;        if Eb<Ea            S(i)=-S(i);        elseif exp(-(Eb-Ea)/Tk)>rand            S(i)=-S(i);        end    end    if k==k_max        undone=false;    else        k=k+1;        Tk=c*Tk;    endendfor i=1:n    Wij(i,:)=S(i)*Wij(i,:);endE=-0.5*sum(Wij*S');     

⌨️ 快捷键说明

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