Matlab 模拟退火的kreisselmeier-steinhauser函数

Matlab 模拟退火的kreisselmeier-steinhauser函数,matlab,mathematical-optimization,simulated-annealing,Matlab,Mathematical Optimization,Simulated Annealing,如何使用模拟退火优化实现Kreisselmeier Steinhauser(KS)函数? 我的SA和KS func代码如下: while (Gen < GenMax ) while iter > 0 %PerturbIter NewZ = PerturbZ(CurZ); NewX = lb + (ub-lb).*(sin(NewZ)).^2; x0 = NewX; NewFitness = KS(NewX,x0); Delta_Cost

如何使用模拟退火优化实现Kreisselmeier Steinhauser(KS)函数? 我的SA和KS func代码如下:

while (Gen < GenMax )
while    iter > 0 %PerturbIter 
    NewZ = PerturbZ(CurZ);
    NewX = lb + (ub-lb).*(sin(NewZ)).^2;
    x0 = NewX;
    NewFitness = KS(NewX,x0);
    Delta_Cost = NewFitness - CurFitness;
    if Delta_Cost <= 0
        CurZ = NewZ; CurX = NewX;
        CurCost = NewFitness;
        if NewFitness < BestFitness
            BestZ = NewZ; BestX = NewX;
            BestFitness = NewFitness;            
        end
   else
        if rand() < exp(-Delta_Cost/T)
            CurZ = NewZ; CurX = NewX;
            CurFitness = NewFitness;
        end
    end
    iter = iter - 1;        
    %x0 = BestX;
end

figure(1), hold on
plot(Gen,BestFitness,'-md','MarkerEdgeColor','b','MarkerFaceColor','b','MarkerSize',3)
T = Cooling(T);
Gen = Gen+1;
iter = PerturbIter;    

end

你能在你的问题中添加对KS和SA的解释吗?(对于我们这些不记得的人)这里的问题到底是什么?KS是Kreisselmeier-Steinhauser函数的缩写,该函数将约束多目标极小化问题转化为单目标无约束问题。SA是一种全局优化技术,用于寻找无约束单值函数(F=F)的全局极小值(x1,x2,x3,…,xn);@Amro:我在这里讨论的问题是约束多目标极小化,即在{Gj(Xk)}约束下最小化{Fi(Xk)},其中I=1,2,3…N,j=1,2,3,…mk=1,2,3,…k
function fun = ksfunc(x, x0, objfun, confun, rho)
obj = objfun(x);
[con,coneq] = confun(x);

[con0,coneq] = confun(x0);
temp = obj./objfun(x0) - 1 - max(con0);
temp = [temp; con];
fmax = max(temp);
summ = sum( exp( rho*(temp - fmax) ));

fun = fmax + log(summ)/rho;