2024-09-29 21:55:28 发布
网友
假设我有以下问题:
c1x1 + c2x2
-x1 + x2 <= 0
0 <= x1 <= 3
0 <= x2 <= 2
我们还假设添加了c1 = 1和c2 = -0.5以及另一个约束c1x1 + c2x2 = P, were P = -1,0,1。你知道吗
c1 = 1
c2 = -0.5
c1x1 + c2x2 = P, were P = -1,0,1
使用linprog解决这个问题的正确方法是什么? bounds是指下限吗?你知道吗
linprog
bounds
谢谢你的帮助。你知道吗
忽略注释中提到的关于不可能相等约束的问题,我们只需参考the documentation:
A_ub @ x <= b_ub A_eq @ x == b_eq lb <= x <= ub
在这里,lb默认为0,因此您根本不必考虑下限,您的问题归结为c = [1, -0.5]、A_ub = [[-1, 1], [1, 0], [0, 1]]和b_ub = [0, 3, 2]:
lb
c = [1, -0.5]
A_ub = [[-1, 1], [1, 0], [0, 1]]
b_ub = [0, 3, 2]
In [57]: linprog(c, A_ub, b_ub) Out[57]: con: array([], dtype=float64) fun: 9.37460773860971e-11 message: 'Optimization terminated successfully.' nit: 4 slack: array([7.91922932e-11, 3.00000000e+00, 2.00000000e+00]) status: 0 success: True x: array([1.08299862e-10, 2.91075683e-11])
也就是说,在数值问题上,最优解是x1 = x2 = 0(这也是非常明显的:获得负目标的唯一方法是让x2为正,但是第一个约束条件要求x1至少与x2一样大,这反过来又会导致你的目标变为正)。你知道吗
x1 = x2 = 0
x2
x1
忽略注释中提到的关于不可能相等约束的问题,我们只需参考the documentation:
在这里,
lb
默认为0,因此您根本不必考虑下限,您的问题归结为c = [1, -0.5]
、A_ub = [[-1, 1], [1, 0], [0, 1]]
和b_ub = [0, 3, 2]
:也就是说,在数值问题上,最优解是
x1 = x2 = 0
(这也是非常明显的:获得负目标的唯一方法是让x2
为正,但是第一个约束条件要求x1
至少与x2
一样大,这反过来又会导致你的目标变为正)。你知道吗相关问题 更多 >
编程相关推荐