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
---