单纯形算法 Simplex Algorithm (三)

本文介绍了线性规划的单纯形算法中初始化问题的重要性,特别是当约束存在负数时如何构建辅助规划问题来寻找初始可行解。通过对辅助问题的求解,可以判断原问题是否存在可行解,并给出原问题的一个可行解。通过Two-Phase算法,结合辅助问题的求解,完成线性规划问题的初始设定,为进一步的迭代计算奠定基础。
摘要由CSDN通过智能技术生成

初始化问题

承接前一篇文章,对于原始的线性规划问题,如果约束中某个 b i b_i bi小于零,直接以初始松弛变量作为基变量得到的基解是不可行的。例如:
m a x Z = x 1 + 2 x 2 x 1 + x 2 ≤ 2 − x 1 − x 2 ≤ − 1 x 1 , x 2 ≥ 0 \begin{aligned} max\quad& Z=x_1+2x_2\\ & x_1+x_2\leq 2\\ & -x_1-x_2\leq -1\\ & x_1,x_2\geq 0 \end{aligned} maxZ=x1+2x2x1+x22x1x21x1,x20
其松弛形式:
m a x Z = x 1 + 2 x 2 x 1 + x 2 + s 1 = 2 − x 1 − x 2 + s 2 = − 1 x 1 , x 2 , s 1 , s 2 ≥ 0 ⟹ m a x Z = x 1 + 2 x 2 s 1 = 2 − x 1 − x 2 s 2 = − 1 + x 1 + x 2 x 1 , x 2 , s 1 , s 2 ≥ 0 \begin{aligned} max\quad& Z=x_1+2x_2\\ & x_1+x_2+s_1=2\\ & -x_1-x_2+s_2=-1\\ & x_1,x_2,s_1,s_2\geq 0 \end{aligned}\\ \Longrightarrow \begin{aligned} \\ max\quad& Z=x_1+2x_2\\ & s_1=2-x_1-x_2\\ & s_2=-1+x_1+x_2\\ & x_1,x_2,s_1,s_2\geq 0 \end{aligned} maxZ=x1+2x2x1+x2+s1=2x1x2+s2=1x1,x2,s1,s20maxZ=x1+2x2s1=2x1x2s2=1+x1+x2x1,x2,s1,s20
这时得到的基解中, s 2 = − 1 s_2=-1 s2=1,这显然不可行。因此在完整的单纯形算法中,解的初始化问题也是非常重要的一步,有两个问题需要在初始化中解决:

  • 该线性规划是否存在可行解
  • 如果有可行解,如何找到一个可行解来启动迭代

有一种非常巧妙的初始化算法是构建辅助规划问题,通过求解辅助规划问题来为原问题找到初始可行解,其求解过程也采用单纯形算法

辅助规划问题

如果原问题 P P P为:
m a x c T x s . t . A x ≤ b x ≥ 0 \begin{aligned} max\quad& \boldsymbol{c}^T\boldsymbol{x}\\ s.t.\quad& \boldsymbol{A}\boldsymbol{x}\leq \boldsymbol{b} \\ & \boldsymbol{x} \geq0 \\ \end{aligned} maxs.t.cTxAxbx0
则定义它的辅助问题 Q Q Q为:
m i n x 0 s . t . A x − x 0 ∗ 1 ⃗ ≤ b x 0 , x ≥ 0 \begin{aligned} min\quad& x_0\\ s.t.\quad& \boldsymbol{A}\boldsymbol{x}-x_0*\vec{1}\leq \boldsymbol{b} \\ & x_0,\boldsymbol{x} \geq0 \\ \end{aligned} mins.t.x0Axx01 bx0,x0
拿上面那个例子举例:
m a x Z = x 1 + 2 x 2 x 1 + x 2 ≤ 2 − x 1 − x 2 ≤ − 1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值