使用Simplex方法解决LPP,其中变量受范围限制

时间:2017-10-24 15:40:57

标签: algorithm math linear-programming simplex-algorithm

我目前正在研究一个问题,根据我在此处,YouTube和其他网站上所做的研究,可以使用线性编程解决这个问题。我已经熟悉了所谓的单纯形法和它的变体,比如 - Big M,Dual SM,但我仍然找不到任何类似于我的问题的表述及其解决方案的例子。

我的问题是:如何以标准形式转换程序?

我认为最小化和最大化都应该有效,但让我们用最小化来做。

我使用'n'作为表示,作为输入,可能有'n'个变量,即。有时会有10个,有时候是60个,是的..那么多。但是,如果有办法解决它,它应该适用于任何数量的变量,我想。

最小化:
Z = a1*x1 + a2*x2 + .. + an*xn,其中a1 .. an只是随机系数,都是正数。

受制于:(这是我不确定是否可以这样做的部分)

N1 ≤ b1*x1 + b2*x2 + .. + bn*xn ≤ N2<br>
M1 ≤ c1*x1 + c2*x2 + .. + cn*xn ≤ M2<br>
O1 ≤ d1*x1 + d2*x2 + .. + dn*xn ≤ O2
  • 其中N1, N2, M1, M2, O1 & O2是自然数,&gt; 0,例如101,155,6433等。当然N1 < N2, M1 < M2, O1 < O2
  • 其中b1 .. bn, c1 .. cn, d1 .. dn只是随机系数,全部为正

此外,每个未知变量 - x1, x2 .. xn的界限都是这样的:

X1-min ≤ x1 ≤ X1-max
X2-min ≤ x2 ≤ X2-max
..
Xn-min ≤ xn ≤ Xn-max

当然,所有的分钟和最大值都是已知的,正的,其中Xmin&lt; Xmax和> 0
X1..n必须始终> 0和最小/最大之间

我知道添加松弛,剩余,人工变量,但我不是百分之百确定它是否就这么简单。我最初的想法是将每个不等式分成两个,并根据其符号添加松弛或剩余+人工变量并继续表格。

希望我能够很好地解释我的问题,尽管我仍然对如何处理它感到困惑。

提前致谢!希望你们过得愉快!

1 个答案:

答案 0 :(得分:0)

你有大于或小于约束。你需要将这些约束转换为一对约束,通过乘以减一来得到相同形式的不等式:

N1 ≤ b1*x1 + b2*x2 + .. + bn*xn ≤ N2

转到

 b1*x1 + b2*x2 + .. + bn*xn ≤ N2
-b1*x1 - b2*x2 - .. - bn*xn ≤ -N1

你也可以为变量边界做这个(只是那里的系数有1,其余为0)。然后你就完成了:这是一个相当标准的形式。

除非我遗漏了什么?