线性规划之内点法

1.内点法是在可行域内部进行搜索,最后收敛到最优解边界

2.常用的内点法有仿射尺度法、对数障碍法和原始对偶法

线性规划(LP)问题除了用单纯形法对偶理论来求解,还有一种搜索的解法——内点法(interior point method),它是在可行域内部移动。今天我们来学习三种内点法,包括:仿射尺度法(affine-scaling)对数障碍法(log-barrier)原始对偶法(primal-dual).

同样的,为了便于介绍,我们引进一个新例子——弗兰妮的木柴:

每年弗兰妮从她的小树林里卖出3根火柴。一个潜在顾客愿意支付每半根90美元,另一位愿意支付每根150美元。我们的问题是弗兰妮应该卖给每位顾客多少木柴以最大化自己的收益?假设每位顾客可以尽可能多地购买。

对上述情景建立模型,很容易得到:

7d0a5bc1b98f5e48e1ba44a3d345a84c.png

在二维坐标轴画出它的可行域区域。

9f9461c61b034acc39fe454e632b61ea.png

0

内点法的逻辑

内点法是在可行域内部进行搜索迭代的算法,它有一个显著的优点:没有约束起作用,所有方向都是可行的。但我们知道最大化模型的最大改进方向是梯度方向,最小化模型的最大改进方向是负梯度方向。这样子内点法就不可避免的会在边界点停下。假设弗兰妮木材问题,从内点X0(1,0.5)往梯度方向改进,根据最大步长原理,下一个点会停留在可行域边界上X1:

7780ef3544e9e49a290e58bbb66a02da.png

因此,内点法的关键在于,搜索点是否一直保持在可行域的“中部”指导最优解被找到,其要遵循:内点法从一个内部可行点开始,并且在一系列内部点之间进行搜索,直到最优解处收敛到可行域的边界。

要检查每次迭代点是否为内点,我们先要将LP问题变为标准型的线性规划,已弗兰妮木柴问题为例:

6698da0eafb3aea7b2c284a686243965.png

这样就很容易判断一个可行解是否为内点:给定线性规划标准型的可行解,若可行解每一个分量都严格为正,则该可行解是一个内点

下面举个例子加以说明:

eec0b64bec19156c9d073db1dd6fc4cd.png

可以看到,对于标准型LP问题,内点必须满足:约束条件Ax=b成立;分量严格大于0。它的下一个搜索点的方向要满足:

59c4f31cea8fad01d2d5783e9170a0ca.png

根据投影理论,我们可以得到内点的移动方向:

e920403ed4336e3dfaa349691c086d4b.png

通常来说,取d是正负梯度方向,因为该方向是改进最快的方向,Δx保证了可行方向。上面的理论表明移动方向尽可能靠近改进方向且保持在内点上。那么Δx是否为改进方向呢,答案是肯定的,我们可以证明:

  • 20
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

整得咔咔响

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值