运筹学随笔

模拟退火算法(SA)
步骤:
1.初始化温度T(充分大),温度下限Tmin(充分小),初始解X,每个T值迭代次数L
2.随机生成临域解x_new;
3.设f(x)函数来计算用来计算解得好坏,计算出f(x_new)-f(x);
4.如果f(x_new)-f(x)>0,说明新解比原来的解好,则无条件接受,如果f(x_new)-f(x)<0,则说明旧解比新解好,则以概率exp((f(xnew)-f(x))/kT)接受x_new作为解。
5.如果当前温度<Tmin时,则退出循环,输出当前结果,否则减少当前温度,回到第2步继续循环,常用的降温方法为T= a
T (0<a<1),一般a取接近1的值

遗传算法(GA)
遗传算法步骤
(1)对潜在问题进行编码,初始化基因组,并根据基因组随机初始化种群,并指定繁衍代数。
(2)计算种群中每个个体的适应度,选择一定数目的留下,其余淘汰。
(3)在留下的个体中,随机繁衍,对分母基因进行交叉(极小概率变异),产生下一代。
(4)回到第2步进行循环。直到达到指定的繁衍代数

蚁群算法步骤
a.初始化蚂蚁数量、可行路段、每条路段距离、每条路段的初始信息素大小等信息
b.设定蚂蚁的起点、终点。
c.蚂蚁从起点出发根据信息素浓度,有一定的概率性选择路段,浓度越高,概率越大,逐步回到终点。
d.在蚂蚁走过的路径上,根据每条路段的长度按比例释放信息素,短的路段释放的信息素多,长的路段释放的信息素少。
e.对所有路段的信息素进行挥发。
f.回到第二步进行循环,直到蚂蚁数量迭代完。

单纯形法的思想就是从一个顶点出发,连续访问不同的顶点,在每一个顶点处检查是否有相邻的其他顶点取到更优的目标函数值 ( 非人类方法: O(nlog(n)) )

Benders分解 (Benders Decomposition.)
使用 子问题 (primal problem) 来寻找合适的约束, 不断添加约束到松弛主问题 (relaxed master problem) 中。子问题可以给上界(UB),松弛主问题可以给下界(LB),不断迭代就可以逐步找到最优解

分支定界算法始终围绕着一颗搜索树进行的,我们将原问题看作搜索树的根节点,从这里出发,分支的含义就是将大的问题分割成小的问题。大问题可以看成是搜索树的父节点,那么从大问题分割出来的小问题就是父节点的子节点了。分支的过程就是不断给树增加子节点的过程。而定界就是在分支的过程中检查子问题的上下界,如果子问题不能产生一比当前最优解还要优的解,那么砍掉这一支。直到所有子问题都不能产生一个更优的解时,算法结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值