模拟退火(SA)算法

news/2024/11/7 22:38:49/

目录

模拟退火算法

主要代码

Mutate

Sphere


模拟退火算法


主要代码


repmat 重复数组副本

B = repmat(A,n) 返回一个数组,该数组在其行维度和列维度包含 A 的 n 个副本。A 为矩阵时,B 大小为 size(A)*n

unifrnd 生成连续统一的随机数

sort 对数组进行排序

semilogy 半对数图,y 轴有对数刻度

semilogy(X,Y) 在 x 轴上使用线性刻度、在 y 轴上使用以 10 为底的对数刻度来绘制 x 和 y 坐标。

  • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

  • 要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

semilogy(X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

semilogy(X1,Y1,...,Xn,Yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。

clc;
clear;
close all;%% Problem DefinitionCostFunction = @(x) Sphere(x);    % Cost Function 成本函数nVar = 5;              % Number of Decision (Unknwon) Variables决策数VarSize = [1 nVar];     % Decision Variables Matrix SizeVarMin = -10;           % Lower Bound of Decision Variables
VarMax = 10;           % Upper Bound of Decision Variables%% SA ParametersMaxIt = 1000;     % Maximum Number of Iterations最大迭代次数MaxSubIt = 20;    % Maximum Number of Sub-iterations最大次迭代次数T0 = 0.1;       % Initial Temp.初始温度alpha = 0.99;     % Temp. Reduction Rate温度降低速率nPop = 10;        % Population Size人口规模nMove = 5;        % Number of Neighbors per Individualmu = 0.5;       % Mutation Rate变异率sigma = 0.1*(VarMax-VarMin);    % Mutation Range (Standard Deviation)突变范围(标准偏差)%% Initialization% Create Empty Structure for Individuals
empty_individual.Position = [];
empty_individual.Cost = [];% Create Population Array
pop = repmat(empty_individual, nPop, 1);% Initialize Best Solution
BestSol.Cost = inf;% Initialize Population
for i = 1:nPop% Initialize Positionpop(i).Position = unifrnd(VarMin, VarMax, VarSize);% Evaluationpop(i).Cost = CostFunction(pop(i).Position);  % Cost Function 成本函数% Update Best Solutionif pop(i).Cost <= BestSol.CostBestSol = pop(i);endend% Array to Hold Best Cost Values
BestCost = zeros(MaxIt, 1);    % Maximum Number of Iterations最大迭代次数% Intialize Temp.
T = T0;%% SA Main Loopfor it = 1:MaxIt  %MaxIt最大迭代次数for subit = 1:MaxSubIt   %MaxSubIt最大次迭代次数% Create and Evaluate New Solutionsnewpop = repmat(empty_individual, nPop, nMove);for i = 1:nPopfor j = 1:nMove% Create Neighbornewpop(i, j).Position = Mutate(pop(i).Position, mu, sigma, VarMin, VarMax);% Evaluationnewpop(i, j).Cost = CostFunction(newpop(i, j).Position);endendnewpop = newpop(:);% Sort Neighbors[~, SortOrder] = sort([newpop.Cost]);newpop = newpop(SortOrder);for i = 1:nPopif newpop(i).Cost <= pop(i).Costpop(i) = newpop(i);elseDELTA = (newpop(i).Cost-pop(i).Cost)/pop(i).Cost;P = exp(-DELTA/T);if rand <= Ppop(i) = newpop(i);endend% Update Best Solution Ever Foundif pop(i).Cost <= BestSol.CostBestSol = pop(i);endendend% Store Best Cost Ever FoundBestCost(it) = BestSol.Cost;% Display Iteration Informationdisp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);% Update Temp.T = alpha*T;sigma = 0.98*sigma;end%% Resultsfigure;
%plot(BestCost, 'LineWidth', 2);
semilogy(BestCost, 'LineWidth', 2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;

 


Mutate


rand 生成均匀分布的随机数

randn 生成正态分布的随机数

function y = Mutate(x, mu, sigma, VarMin, VarMax)A = (rand(size(x)) <= mu);J = find(A == 1);y = x;y(J) = x(J)+sigma*randn(size(J));% Clippingy = max(y, VarMin);y = min(y, VarMax);end

Sphere


function z = Sphere(x)z = sum(x.^2);end

http://www.ppmy.cn/news/333077.html

相关文章

评测 i5 13600kf和r7 5800x3D差距 酷睿i513600kf和锐龙r7 5800x3D选哪个好

i5-13600KF采用10工艺 14 核 20 线程&#xff0c;睿频 5.1GHz&#xff0c;三级缓存 24.00 MB基础功耗 125W&#xff0c;最大睿频功耗 181W 组装电脑选 i5 13600kf还是r7 5800x3D怎么搭配更合适这些点很重要 http://www.adiannao.cn/du AMD R7 5800X3D采用7nm工艺&#xff0c;8核…

i51340p和i51155g7哪个好 i5 1340p和i5 1155g7对比

i5 1340P采用10nm工艺 最高睿频4.6GHz 十核心 十六线程三级缓存 12MB热设计功耗(TDP) 28W 支持最大内存 64GB内存类型 DDR4 3200MHzDDR5 5200MHz集成显卡 Intel Iris Xe Graphics 选i5 1340P还是i51155g7这些点很重要看过你就懂了 http://www.adiannao.cn/dy i5-1155g7采用10n…

达人评测酷睿i5 12450h和i5 11320h选哪个好 i512450h和i511320h对比

i5-11320h参数&#xff1a;10nm的工艺制程&#xff0c;4核8线程&#xff0c;3.2GHz的主频&#xff0c;4.5GHz的睿频&#xff0c;TDP功耗的设计为35w 选i511320h还是i5 12450h这些点很重要 http://www.adiannao.cn/dy i5 12450H采用Intel 7工艺4大核4小核设计&#xff0c;拥有8核…

i513600和i712700哪个好 酷睿i5 13600和i7 12700对比

i5 13600采用10nm制作工艺14核心20线程基础频率 2.70 GHz最大频率 5.20 GHz热设计功耗 (TDP) 65 W 组装电脑选i513600还是i712700怎么搭配更合适这些点很重要 http://www.adiannao.cn/du i712700采用英特尔7nm工艺制造依旧是12核心20线程&#xff0c;基础主频为2.7GHz&#xf…

酷睿i5 1155g7和锐龙r5 5600u核显 i51155g7和r55600u对比哪个好

i5 1155g7参数&#xff1a;采用10nm的工艺&#xff0c;4核8线程&#xff0c;2.5GHz的主频&#xff0c;4.5GHz的睿频&#xff0c;8MB的三级缓存&#xff0c;热设计功耗在12w-28w之间&#xff0c;根据笔记本厂商调节具体功耗。 选i51155g7还是r55600u这些点很重要 http://www.adi…

i5 11300h和i5 1135g7哪个好 i5 11300h和i51135G7的差距多大

功耗的区别&#xff1a;i5-1135G7日常功耗是12w-28w&#xff0c;i5-11300H日常功耗是28w-35w&#xff0c;相比较来看&#xff0c;i5-11300H的功耗更高些&#xff0c;性能相对更好&#xff0c;但是缺点是续航会相对差些&#xff1b;选 i5-11300H还是i5 1135g7 这些点很重要 http…

i5 1155g7和i5 11300h 选哪个好

i5-1155G7拥有8MB三级缓存&#xff0c;基准频率为2.5GHz&#xff0c;相比i7-1145G7下调0.1GHz。i7-1155G7的单核睿频频率最高可达4.5GHz&#xff0c;全核睿频频率可达4.3GHz&#xff0c;相比i7-1185G7分别提升了0.1GHz、0.3GHz。此外&#xff0c;核显频率也从1.3GHz提升至1.35G…

入手评测 i5 1335U和i5 1340P选哪个 酷睿i51335U和1340P对比

i5 1335U处理器采用10nm工艺制程&#xff0c;拥有10核心12线程&#xff0c;最大睿频4.6GHz&#xff0c;三级缓存 12MB&#xff0c;功耗15W 选i5 1340P还是i5 1335U这些点很重要看过 http://www.adiannao.cn/dy i5 1340P采用10nm工艺 最高睿频4.6GHz 十核心 十六线程三级缓存 1…