爬山算法matlab程序,爬山算法和模拟退火算法

本文介绍了爬山算法和模拟退火算法的基本思想及MATLAB程序实现。爬山算法通过不断朝更高方向移动寻找局部最优解,而模拟退火算法则在一定概率下接受较劣解,以跳出局部最优,寻找全局最优。文中提供了两种算法的C++代码示例。
摘要由CSDN通过智能技术生成

爬山算法

大体思路

爬山算法即是模拟爬山的过程,随机选择一个位置爬山,每次朝着更高的方向移动,直到到达山顶

具体操作

把当前的节点和要走的节点的值进行比较。 如果当前节点是最大的,那么不进行操作;反之就用要走的的节点来替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。

缺点

会陷入局部最优解。只适用于计算几何等局部最优解集中的题目。

#include

#include

using namespace std;

#define maxn 105

int n,go[4][2]={ {1,0},{-1,0},{0,1},{0,-1}};

double x[maxn],y[maxn],sx,sy;

double calc(double x1,double y1){

double ans=0;

for(int i=0;i

ans+=sqrt((x1-x[i])*(x1-x[i])+(y1-y[i])*(y1-y[i]));

}

return ans;

}

int main(){

scanf("%d",&n);

for(int i=0;i

scanf("%lf%lf",x+i,y+i),sx+=x[i],sy+=y[i];

}

sx/=n,sy/=n;

double ans=calc(sx,sy),x1,y1,k;

fo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值