模拟退火算法-MATLAB

本文使用MATLAB的模拟退火算法求解函数y=11*sin(x)+7*cos(5*x)在[-3,3]区间内的最大值,并通过动画展示迭代过程。初始温度设定为100,经过多轮迭代和温度降低,最终找到最优解并显示最佳位置和最优值。
摘要由CSDN通过智能技术生成

%% SA 模拟退火: 求解函数y = 11*sin(x) + 7*cos(5*x)在[-3,3]内的最大值(动画演示)

tic

clear; clc

%% 绘制函数的图形

x = -3:0.1:3;

y = 11*sin(x) + 7*cos(5*x);

figure

plot(x,y,'b-')

hold on % 不关闭图形,继续在上面画图

%% 参数初始化

narvs = 1; % 变量个数

T0 = 100; % 初始温度

T = T0; % 迭代中温度会发生改变,第一次迭代时温度就是T0

maxgen = 200; % 最大迭代次数

Lk = 100; % 每个温度下的迭代次数

alfa = 0.95; % 温度衰减系数

x_lb = -3; % x的下界

x_ub = 3; % x的上界

%% 随机生成一个初始解

x0 = zeros(1,narvs);

for i = 1: narvs

x0(i) = x_lb(i) + (x_ub(i)-x_lb(i))*rand(1);

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优化大师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值