优化

问题: 受多种变量影响, 希望成本函数最小

 

1  随机搜索

每次随机为每种变量设值, 计算成本函数; 取其中成本最小的赋值作为结果

缺点: 效果不太好

 

2  爬山法

以一个随机解开始, 然后在该随机解临近的解中选择一个最优解; 迭代直至不能找到更更优的

缺点: 容易陷入局部最优解

-----: 可以随机选定不同的点进行爬山,得到更优解

 

3 模拟退火

初始阶段会接受更优的解或者以较大的概率接受较差的解; 随着退火过程的进行, 后续接受的解将只会是更优的。

 

指定温度T, 退火系数cool, step是变量步长

vec是初始随机选定的解, vecb是在vec的基础上随机选择一个变量随机变化[-step, step]

计算vec, vecb的cost分别为 ea, eb

如果eb < ea,将使用更优解; 或者以pow(math.e, -(eb-ea)/T)的概率接受差解

降低温度T = T * cool  直至T <= 0.1 时结束

 

开始阶段T大, pow值将接近于1, 将有较大的意愿接受较差的解; 后续这种意愿越来越小, 将会趋向于更优解。

缺点: 仍然可能不是最优解

-----: 随机选定不同的初始点、不同的step来进行模拟退火

 

4 遗传算法

a) 随机生成一组解, 这一过程称之为种群

b) 从种群中选择(多个)最优解, 加入到新的种群中, 这一过程称之为精英选拔法; 新种群中余下的部分是由修改最优解后形成的全新解组成的。 有两种修改方法:变异(mutation) , 交叉(crossover)/配对(breeding)

b.1) 变异:通常做法是对一个既有解进行微小的、简单的、随机的改变。 如,随机选择一个解得一个变量进行随机的递增或递减

b.2) 交叉:选取最优解中的两个解,然后将它们按某种方式进行结合。 实现交叉的一种简单方式是: 选择两个解,各取前一半与后一半合并成一个新解

c) 通过b步骤构造得到新种群; 新种群与旧种群通常大小相同; 回到步骤b重复迭代, 直到达到指定的迭代次数或经过数代后解都没有得到改善,过程就over

其中, mutprob是变异的概率(变异或者交叉); elite旧种群中有多少最优解可以传入下一代; maxiter最多迭代多少代

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值