Data structures 线性规划中负系数的求解

Data structures 线性规划中负系数的求解,data-structures,linear-programming,clrs,Data Structures,Linear Programming,Clrs,我试图用线性规划来解决一个指派问题。 我正在使用CLRS中提到的单纯形算法 考虑以下示例: --(1/1)--->|a|---(10/1)------>|d|-----------> | | ^ | | |_(7/1)__ | | |s| ________|_(1

我试图用线性规划来解决一个指派问题。 我正在使用CLRS中提到的单纯形算法

考虑以下示例:

          --(1/1)--->|a|---(10/1)------>|d|----------->
         |            |                  ^            |
         |            |_(7/1)__          |            |
        |s|            ________|_(12/1)__|           |t|
         |            |        |_______               |
         |            |                |              |
         |            |                v              |
          --(1/1)--->|b|---(10/1)---->|c|--(1/1)----->

--(1/1)——————————————————————————————————————————————————————————————————————
|            |                  ^            |
|            |_(7/1)__          |            |
|s | | | | | | | | | | | | | t(12/1)|
|            |        |_______               |
|            |                |              |
||v|
--(1/1)-->|b |--(10/1)-->|c |--(1/1)--->

顶点a和b是人

顶点c和d是作业

我将其建模为最小成本最大流量问题

已添加源S和汇t

所有边权重都已设置为1

从源到顶点a和b的边成本设置为1

从d、c到接收器的边缘成本设置为1

边缘中的(a/b)值表示该边缘的(成本/流量)

我用W表示边缘成本,用C表示容量


线性规划是:
减少
所有紫外线的总和(W(uv).f(uv))


The Standard Form is:
    Maximize,
         -(Summation(W(uv).f(uv)) over all uv)

       Such that,
         f(uv) >= 0 , for all (u,v) in E

         f(uv) <= C(u,v) , C(u,v)=1 in this case, for all (u,v) in E

         Flow conservation for each vertex except the source and the sink.
         So Sum(f(uv)) = Sum(f(vu)), for all u,v

         Demand:
         f(sa) + f(sb) = 2
这样,
对于E中的所有(u,v),f(uv)>=0
f(uv)=0,对于E中的所有(u,v)

f(uv)实际上,上述问题的问题是,在这种情况下,“初始化单纯形”方法需要更加复杂。由于x_i=0(对于所有i)不是问题的可行解决方案,因此需要执行“第一阶段”操作,以找到问题的初始基本可行解决方案。(满足x1+x2=2的解)。 我建议谷歌搜索“第一阶段单纯形法”。
我不认为CLRS是一本解释单纯形法所有细节的好书。像希利尔和利伯曼或温斯顿这样的运筹学入门教材会更好。祝你好运

(1)输入变量的选择基于降低的成本(而非目标系数)。(2) 该算法与实际单纯形码的实现方式几乎没有共同之处。它只能作为一种教学工具使用,而不能作为实际实现的蓝图。@ErwinKalvelagen,但根据CLRS,选择输入变量是基于客观系数的。通过增加那些具有+ive系数的非基本变量的值,可以在每次迭代中增加目标值。这可能并不是说。同样,在单纯形法中,选择输入变量是基于降低的成本(而不是目标系数)。引用CLRS:“如果目标函数中的所有系数都为负,则while循环终止。否则,第4行选择一个变量xe作为输入变量,该变量在目标函数中的系数为正。”@Abis您提供的引用必须在存在
PIVOT
[从
INITIALIZE-SIMPLEX
]对
c
所做的事情的情况下进行解释,即“目标函数”——正如@Erwin所指出的,它基本上将
c
处理为“s”的函数。

The Standard Form is:
    Maximize,
         -(Summation(W(uv).f(uv)) over all uv)

       Such that,
         f(uv) >= 0 , for all (u,v) in E

         f(uv) <= C(u,v) , C(u,v)=1 in this case, for all (u,v) in E

         Flow conservation for each vertex except the source and the sink.
         So Sum(f(uv)) = Sum(f(vu)), for all u,v

         Demand:
         f(sa) + f(sb) = 2

Which reduces to 
   maximize (- { W(sa).f(sa) + W(sb).f(sb) + W(ad).f(ad) + W(ac).f(ac) + W(bd).f(bd) + W(bc).f(bc) + W(dt).f(dt) + W(ct).f(ct) } )

    Maximize
        -x1-x2-10(x3)-7(x4)-12(x5)-7(x6)-x7-x8  (objective function)
    Given that (constraints)
      Capacity constraints:
         x{1-8} <= 1
      Flow conversations:
         x1 = x3+x4 --> ( x1-x3-x4 <=0 & -x1+x3+x4 <= 0)
         x2 = x6+x5 --> ( x2-x6-x5 <=0 & -x2+x6+x5 <= 0)
         x7 = x3+x5 --> ( x7-x3-x5 <=0 & -x7+x3+x5 <= 0)
         x8 = x4+x6 --> ( x8-x4-x6 <=0 & -x8+x4+x6 <= 0)
      Demand:
         x1 + x2 =2 --> ( x1+x2 <=2 && -x1-x2 <=2)