Programming Collective Intelligence笔记 - 最优化

1.        最优化

最优化要解决的问题是,当我们面对的问题有多种解决方案时(数量级比较大),我们应该通过什么方法来找到最优的方案。

 

1.1.       Cost函数

在考虑最优解时,我们首先需要定一个一个Cost函数,他的作用就是把我们的解决方案量化为一个数值。

 

1.2.       随机算法

随机选取N个解决方案,计算他们的Cost值,然后选出最小的一个。

 

1.3.       Hill Climbing(爬山)

随机选取一个解决方案,然后列出该方案的所有相邻方案(相邻方案的定义与具体问题相关)。然后找出这当中最优的一个作为新的起点,再遍历该方案的所有相邻方案,找出最优。直到当前方案比所有相邻都优胜为止。

该算法跟起始点的选取有关,但是容易找到局部最优,一个改良的方案是,循环多次,并且每次都重新选取起始随机点。

 

1.4.       Simulated Annealing(模拟退火)

模拟退火跟爬山算法类似。首先随机选取一个解,然后随机获取一个相邻解,计算这两个解的Cost,如果相邻解比当前解好,则使用相邻解作为新的起点。否则,根据一个随机值,确定是否使用相邻解。这里的概率就可以保证在某些时候,我们会选取一个更差的解,从而避免陷入局部最优解。随机函数的公式为

P = pow(e,(-highcost–lowcost)/temperature)

P的值与temperature成正比,与最低值和最高值的和成反比。

每次循环我们都让temperature降低某个值,从而降低P的值,这样能够保证,开始的时候我们会考虑一些比较差的值,但是越往后,我们就会尽量的挑选比较好的值。

 

1.5.       Genetic Algorithm(遗传算法)

遗传算法首先随机的获取N个解决方案,作为第一代。然后根据Cost值对他们进行排序,在保留最优的M<N)个解的情况下,通过mutationcrossover的方法,从这M个解中生成其他的N-M个解,这成为第二代。对第二代的数据重复上述的方法。算法的停止条件是,我们到达了固定的代数,或者最优解在经过一定代数K后始终没有改变。

Mutation方法是指变换某个最优解的某一项。

Crossover方法是指从几个最优解中分别选取一部分,组合成一个新的解。

 

1.6.       Network Visualization

这里主要的问题就是,当我们有一个图的时候,如何最大限度的减少相交线段的数量。这里最关键的就是定义Cost函数,我们把Cost函数定义为一个图的相交节点数。相邻解就是把某一个点向某个方向移动某个单位,那么运用之前的模拟退火,或者遗传算法,就能找出相交数最小的图。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值