- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 scipy 和线性规划解决具有多个变量的问题。我有一组变量 X,它们是 0.5 到 3 之间的实数,我必须求解以下方程:
346 <= x0*C0 + x1*C1 + x2*C2 +......xN*CN <= 468
25 <= x0*p0 + x1*p1 + x2*p2 +......xN*pN <= 33
12 <= x0*c0 + x1*c1 + x2*c2 +......xN*cN <= 17
22 <= x0*f0 + x1*f1 + x2*f2 +......xN*fN <= 30
数字 C0...CN 、 p0...pN 、 c0...cN 、 f0...fN 已经给我了。我尝试通过以下方式解决这个问题:
import numpy as np
from scipy.optimize import linprog
from numpy.linalg import solve
A_ub = np.array([
[34, 56, 32, 21, 24, 16, 19, 22, 30, 27, 40, 33],
[2, 3, 2, 1.5, 3, 4, 1, 2, 2.5, 1, 1.2, 1.3],
[1, 2, 3, 1.2, 2, 3, 0.6, 1, 1, 1.2, 1.1, 0.8],
[0.5, 2, 2, 1, 3, 4, 1, 1, 1, 0.5, 0.3, 1.2],
[-34, -56, -32, -21, -24, -16, -19, -22, -30, -27, -40, -33],
[-2, -3, -2, -1.5, -3, -4, -1, -2, -2.5, -1, -1.2, -1.3],
[-1, -2, -3, -1.2, -2, -3, -0.6, -1, -1, -1.2, -1.1, -0.8],
[-0.5, -2, -2, -1, -3, -4, -1, -1, -1, -0.5, -0.3, -1.2]])
b_ub = np.array([468, 33, 17, 30, -346, -25, -12, -22])
c = np.array([34, 56, 32, 21, 24, 16, 19, 22, 30, 27, 40, 33])
res = linprog(c, A_eq=None, b_eq=None, A_ub=A_ub, b_ub=b_ub, bounds=(0.5, 3))
方程的解释 A_ub 的第一行与 b_ub 相同,因为我们试图最大化方程并确保它在给定的边界限制内,即 468 和 346,这意味着我想要获取值尽可能接近上限。
我将[-34, -56, -32, -21, -24, -16, -19, -22, -30, -27, -40, -33]
放入A_ub 和 b_ub 中的 -346 逻辑如下:
-346 > -(x0*C0 + x1*C1 + x2*C2 +......xN*CN)
这将解决方程的下界问题。我对其他人也做了同样的事情。
但我觉得我的方法是错误的,因为我得到的答案是 res.fun
的 0.425
和 nan
作为 的值>res.x
x 的上限为 3,下限为 0.5
如何定义如上所示的问题,以获得接近 468 的最大值,同时牢记上限?如何使用 scipy 定义下限?我是第一次从事线性编程工作,所以我可能错过了一些可以帮助我的想法。
我也愿意接受任何其他解决方案。
最佳答案
这个不平等系统是不可行的:没有满足所有约束的解决方案。您可以从 res
中看到:
fun: 0.42500000000000243
message: 'Optimization failed. Unable to find a feasible starting point.'
nit: 28
status: 2
success: False
x: nan
我相信这是一个正确的结果(我用另一个 LP 系统验证了这一点)。
注意:如果将边界更改为(0,3)
,您将获得可行的解决方案。
关于python - 求解具有多个变量和不等式约束的多个方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39824681/
所以我正在为“石头剪刀布蜥蜴 Spock”制作一个 Javascript 程序,并且使用 Math.random()。我需要使用if/else/else if's。有人可以帮我解决不平等问题吗?我
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
C++20 为我们提供了飞船操作符,甚至允许我们 default它,使用默认语义生成所有比较,这将从我们的代码库中删除很多样板,太棒了! 但是平等和不平等呢? C++20 是否也为我们提供了一种方式
我今天在写一些 Python 时意识到可以将不等运算符写成 a!=b 或 not a==b。这让我很好奇: 这两种方式的行为是否完全相同,还是存在一些细微差别? 是否有理由使用一个而不是另一个?一种比
假设我们有几个线性不等式,比如 2x-5y=0 ,我们如何绘制这两个不等式?为了扩展这一点,如果我们有多个这样的不等式,我们如何尝试以图形方式解决这个问题? 最佳答案 你可以试试ImplicitEqu
为什么以下简化 不起作用,或者如何解决: >>> x = Symbol('x', real=True) >>> y = Symbol('y', real=True) >>> simplify(x -
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
这个问题在这里已经有了答案: Draw 3d Inequality on Matlab (1 个回答) matlab - plot inequality in 3d with surf (1 个回答
考虑使用这两个表和以下查询: SELECT Product. * FROM Product WHERE EXISTS ( SELECT * FROM Codes
我在笔记本界面中使用 Mathematica 7,我想重新排列一个不等式,以便在一侧获得某个变量。例如。 FullSimplify[x^3+L+r>3x^3+2r] 给 L > r + 2 x^3 但
我是一名优秀的程序员,十分优秀!