首页 > 编程语言 >基于爬山优化算法的三维曲面极值搜索matlab仿真

基于爬山优化算法的三维曲面极值搜索matlab仿真

时间:2023-05-17 23:35:12浏览次数:37  
标签:... end final 0.0 traj matlab 爬山 new 极值

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

2.算法涉及理论知识概要

       爬山法是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)。假定所求问题有多个参数,我们在通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者减少一个单位。

 

        爬山法是指经过评价当前的问题状态后,限于条件去增加这一状态与目标状态的差异,经过迂回前进,最终达到解决问题的总目标。就如同爬山一样,为了到达山顶,有时不得不先上矮山顶,然后再下来,这样翻越一个个的小山头,直到最终达到山顶。可以说,爬山法是一种"以退为进"的方法,往往具有"退一步进两步"的作用,后退乃是为了更有效地前进。爬山法也叫逐个修改法、瞎子摸象法。

 

      解多变量无约束最优化问题的一类方法。有的书上称直接法或直接搜索法,是通过点的直接移动产生的目标值有所改善的点,经过这样的移动,逐步到达使目标函数最优的点。如果我们把目标函数的几何图形看成一个山峰,那么点的直接移动就像人在爬山,选择方向,逐步向山顶移动。可分为轴向搜索法、单纯形调优法、Powell法等。轴向搜索法是以沿坐标轴方向移动为基础的搜索方法,在进行每一轮沿坐标轴方向搜索时,是从一参考点出发,依次沿平行于各个坐标轴方向连续作对应的目标函数值改进的搜索移动,并以最后获得的点作为下一轮迭代点。同时,为提高求解的效率.还要采取某些加快收敛的措施。

 

      问题求解的过程就是努力沟通问题的起始状态和目标状态之间的联系链条,由起始状态出发,逐步向目标推移、逼近的过程。在思维课题的求解活动中,人们几乎总是一直关注着所要达到的最终目标,试图不断地向目标逼近。这就像在登山活动中运动员时刻把顶峰放在心目之中,力图接近它、占领它一样。在解决思维课题时,我们经常自觉或不自觉地运用着能够尽量向目标靠拢的方法。这也就是通常所说的爬山法。

 

       爬山法与中途点法是彼此接近的方法。中途点法在实质上也就是通过一个个的中途点而向最终目标逼近的方法。同时,在问题求解活动中,这两种方法也是紧密相联.可以配合使用的。比如,有一个数学问题,要求决定两个量v,u之间的关系。我们可以把求出包含v,u的关系式(其中可以含有其他未知量)和求出只包含v,u和已知量的关系式作为两个中途点,把整个求解过程区分为三个小阶段。在每个小阶段中又可分别应用爬山法来进行试探。在第一阶段中,那些能够得出同时把v,u包括进去的关系式的步骤将被看做是较优的步骤;而能够得出既把v,u同时包含在内,又含有最少的其他未知量,并且显得比较简单.对其他未知量容易加以分离、代换和消除的关系式的步骤就是最优步骤。在第二阶段中,那些能够消除其他未知量个数最多的步骤将是最优步骤。把爬山法同中途点法结合起来运用,可以更好地发挥它们的作用。

 

 

 

3.MATLAB核心程序

 

while iteration <= 200
    improvement = 0;
    
    iteration = iteration + 1;
    trajectory1x(iteration) = A.position(1);
    trajectory1y(iteration) = A.position(2);
    trajectory2(iteration) = A.cost;
    
    Neighbours = HC(A , stepSize, lb, ub);
    
    for k = 1 : length(Neighbours)
        B = Neighbours( k );
        if B.cost > A.cost 
            improvement  = 1;
            A.cost = B.cost;
            A.position = B.position;
        end
    end
   
end
 
 
 
figure
subplot(1,2,1)
x = lb(1):stepSize(1):ub(1);
y = lb(2):stepSize(2):ub(2);
[x_new , y_new] = meshgrid(x,y);
for i = 1: length(x)
    for j = 1 : length(y)
        X = [x_new(i,j) , y_new(i,j)];
        z_new(i,j) = objectiveFunction(X);
    end
end
surfc(x_new, y_new, z_new)
hold on
xlabel('p1')
ylabel('p2')
zlabel('cost')
shading interp
box on
 
 
for k = 1 : length(trajectory2);
    traj_final_x(k) = trajectory1x(k);
    traj_final_y(k) = trajectory1y(k);
    traj_final_z(k) = trajectory2(k);
end
plot3(traj_final_x,traj_final_y,traj_final_z, 'g-', 'lineWidth' , 1)
plot3(initial(1),initial(2),cost_initial,'-bs',...
    'LineWidth',1,...
    'MarkerSize',8,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
plot3(traj_final_x(end),traj_final_y(end),traj_final_z(end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',8,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
 
subplot(1,2,2)
hold on
pcolor(x_new, y_new, z_new)
view(0,90)
plot(traj_final_x,traj_final_y, 'g-', 'lineWidth' , 1)
plot(initial(1),initial(2),'-bs',...
    'LineWidth',1,...
    'MarkerSize',8,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
plot(traj_final_x(end),traj_final_y(end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',8,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
shading interp
 
 
yy=trajectory2;
 
figure
plot(1:10:iteration,yy(1:10:iteration) ,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
xlabel('Iteration')
ylabel('Cost')
 
x1=trajectory1x;
y1=trajectory1y;
 
figure
plot(1:10:iteration,x1(1:10:iteration) ,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
plot(1:10:iteration,y1(1:10:iteration),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
legend('X轴轨迹','Y轴轨迹');
xlabel('Iteration')
ylabel('轨迹')

 

  

 

标签:...,end,final,0.0,traj,matlab,爬山,new,极值
From: https://www.cnblogs.com/51matlab/p/17410666.html

相关文章

  • 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
    1.算法仿真效果matlab2022a仿真结果如下: 2.算法涉及理论知识概要      传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)。它们分别对应于用载波(正弦波)的幅度、频率和相位来传递数字基带信号,可以看成是模拟线性调......
  • m基于LK光流提取算法的三维医学图像运动估计matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要1950年,Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度。物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜上形成一系列的连续变化的图像,这些变化信息在不同时间,不断的流过眼......
  • 基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB
    1.算法仿真效果VIVADO2019.2/matlab2022a仿真结果如下:运行matlab:将matlab得到的数据文件保存到FPGA的project_13.sim\sim_1\behav\xsim路径,测试仿真时,可以自动调用matlab任意产生的测试数据。rtl:2.算法涉及理论知识概要FIR(FiniteImpulseResponse)滤波器:有限长单位冲激......
  • 基于爬山优化算法的三维曲面极值搜索matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要爬山法是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)。假定所求问题有多个参数,我们在通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者减少一个单位。爬山法是......
  • 数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)。它们分别对应于用载波(正弦波)的幅度、频率和相位来传递数字基带信号,可以看成是模拟线性调制和角度调制的特......
  • 基于FPGA的FIR低通滤波器verilog开发,包含testbench测试程序,输入噪声信号使用MATLAB
    1.算法仿真效果VIVADO2019.2/matlab2022a仿真结果如下: 运行matlab:    将matlab得到的数据文件保存到FPGA的project_13.sim\sim_1\behav\xsim路径,测试仿真时,可以自动调用matlab任意产生的测试数据。   rtl:   2.算法涉及理论知识概要       ......
  • m基于LK光流提取算法的三维医学图像运动估计matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要     1950年,Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度。物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜上形成一系列的连续变化的图像,这些变化信息在......
  • Matlab/simulink 风储调频VSG虚拟同步机,风电VSG虚拟同步机调频,一次调频,四机两区系统,
    Matlab/simulink风储调频VSG虚拟同步机,风电VSG虚拟同步机调频,一次调频,四机两区系统,采用频域模型法使得风电渗透率25%,附加VSG虚拟同步控制,储能附加下垂控制,参与系统一次调频,系统频率特性优。有SOC特性!特点,风储联合仿真速度很快,只需要5秒钟!!特别强调,本人参数来自IEEE经典四机两区系......
  • MATLAB仿真m序列,Gold序列,Kasami序列扩频码性能仿真分析 商品形
    MATLAB仿真m序列,Gold序列,Kasami序列扩频码性能仿真分析商品形式:程序+课程设计报告程序实现功能:t1、m序列生成和抽取(自相关和互相关特性分析)t2、生成m序列优选对t3、Gold序列生成(自相关和互相关特性分析)t4、平衡Gold序列和非平衡Gold序列分析t5、Kasami序列生成及自相关互相关特性......
  • MATLAB仿真bp神经网络预测电力负荷 商品形式:程序 实
    MATLAB仿真bp神经网络预测电力负荷商品形式:程序实现功能:使用前几日负荷数据预测未来负荷数据使用bp神经网络得到误差分析图ID:1180643715580028......