您现在的位置:首页 >> 智能优化 >> 内容

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

时间:2023/3/4 23:22:02 点击:

  核心提示:A445,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJaTmJdu

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

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

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

4.部分源码

.............................................................

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('轨迹')

a445

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168