我目前正在研究一个问题,根据我在此处,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和最小/最大之间
我知道添加松弛,剩余,人工变量,但我不是百分之百确定它是否就这么简单。我最初的想法是将每个不等式分成两个,并根据其符号添加松弛或剩余+人工变量并继续表格。
希望我能够很好地解释我的问题,尽管我仍然对如何处理它感到困惑。
提前致谢!希望你们过得愉快!
答案 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)。然后你就完成了:这是一个相当标准的形式。
除非我遗漏了什么?