- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 scipy.optimize.linprog 库来计算使用单纯形法的最小化。我正在我的教科书中解决这个问题,我希望有人能给我指出正确的方向,因为我没有得到我期望的输出。问题是:
Minimize w = 10*y1 + 15*y2 + 25*y3
Subject to: y1 + y2 + y3 >= 1000
y1 - 2*y2 >= 0
y3 >= 340
with y1 >= 0, y2 >= 0
我为此写的代码是:
import numpy as np
import pandas as pd
from scipy.optimize import linprog
A = np.array([
[1, 1, 1],
[1,-2, 0],
[0, 0, 1]])
b = np.array([1000,0,340])
c = np.array([-10,-15,-25])
res = linprog(c, A_ub=A, b_ub=b,
bounds=(0, None))
print('Optimal value:', res.fun, '\nX:', res.x)
给出输出:
Optimal value: -18400.0
X: [ 0. 660. 340.]
我希望它是:
Optimal value: -15100.0
X: [ 660. 0. 340.]
我似乎无法找到与此功能的一致性,但也许这就是我使用它的方式。
最佳答案
你设置的输入有点错误;见the manual .具体来说,您有许多符号错误。
您的矢量 c
有错误的标志; linprog
最小化 c x
所以c
应该只是 w = c x
中的系数
您的矢量 b
和矩阵 A
有错误的标志。他们的标志应该倒转以从您的约束形式切换f(x) >= const
到 linprog
所需的形式方法,这是一个小于或等于,即 -f(x) <= - const
您缺少最后两个约束。
您建议的最小值是 < 0,这显然是不可能的,因为 w = 10*x1 + 15*x2 + 25*x3
对你的约束总是积极的 x1,x2,x3>=0
.
正确的代码是:
import numpy as np
from scipy.optimize import linprog
A = np.array([[-1, -1, -1], [-1,2, 0], [0, 0, -1], [-1, 0, 0], [0, -1, 0]])
b = np.array([-1000, 0, -340, 0, 0])
c = np.array([10,15,25])
res = linprog(c, A_ub=A, b_ub=b,bounds=(0, None))
print('Optimal value:', res.fun, '\nX:', res.x)
# python2
# ('Optimal value:', 15100.0, '\nX:', array([ 660., 0., 340.]))
# python3
# Optimal value: 15099.999961403426
# X: [6.59999996e+02 1.00009440e-07 3.40000000e+02]
关于Python linprog最小化--单纯形法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873783/
晚上好 我在使用 Matlab 的 linprog 函数时遇到问题,这是我收到的消息: Exiting due to infeasibility: an all-zero row in the con
我想使用 MATLAB linprog 来解决一个问题,我通过一个更小、更简单的例子来检查它。 但是我想知道MATLAB是否可以支持我的真实问题,可能有一个300*300*300*300矩阵... 也
我有一个线性不等式系统,我想使用 scipy.opttomize.linprog 来解决它。这是我调用 linprog 函数的代码: res = linprog(c, A_ub=A, b_ub=b,
我正在尝试以以下形式优化函数: 1*abs(x_0) + 1*abs(x_1) + .. + 1*abs(x_n) 函数中的系数始终为 1,但 xi 的值有条件,例如 x2 - x3 sum of
我读到 scipy 中的 linprog 返回最小解,并且可以通过将目标函数乘以 -1 来获得最佳解。 我在这里读到的:https://realpython.com/linear-programmin
我使用 linprog R 包中的solveLP 来解决一个简单的线性规划问题: minimize -x1-x2 subject to 2*x1+x2+x3 =12 x1+
是否可以从 scipy linprog 检索拉格朗日乘子就像在 Matlab linprog 中一样?如果是这样怎么办? 我阅读了文档,但没有找到它。有一个 return 参数调用 slack 但我认
是否可以从 scipy linprog 检索拉格朗日乘子就像在 Matlab linprog 中一样?如果是这样怎么办? 我阅读了文档,但没有找到它。有一个 return 参数调用 slack 但我认
我正在尝试使用 scipy.optimize.linprog 来解决一个非常简单的线性程序,并且该函数似乎做了我想要它做的事情,但不知何故它不返回 'x'(它确实返回正确的最小函数值) 仅举一个简单的
我在 Matlab 中为 linprog 设置以下类型的约束时遇到问题 Max 9x1 + 8x2 + 7x3 Subject to: 2 = 0, x2 >= 0, x3 >= 0 Followin
我想最小化以下 LPP:c=60x+40y+50z受制于20x+10y+10z>=350 ,10x+10y+20z>=400, x,y,z>=0 我的代码片段如下(我是第一次使用scipy包) fro
我能够使用 scipy linprog 和矩阵 A_ub 解决以下最小化问题: A_ub = [[ 1 10 0 3] [ 6 2 3 6] [ 3 5
我有一个 linprog 代码,其目标函数中包含 x1、x2、x3 和 x4。 我得到的结果以以下形式给出值: x = 6.6667 0.0420 0 0 在我尝试建模的情况下,这在物理上没有意义,
我对该方法中的等式约束如何工作感到非常困惑。我在这里做错了什么?我希望 dot(A_eq, x) 等于 b_eq。我认为这就是等式约束的定义。然而, np.dot(A_eq, res.x) 给我 [0
我想比较Gurobi和Scipy的线性编程工具,例如linprog。 Scipy 需要在 matrix-list-vector-form 中指定问题而 Gurobi 的工作方式类似于 here这样 m
我正在使用下面的代码,但我一直无法设置运行的问题。 import numpy as np from scipy.optimize import linprog c = np.asarray([-0.0
是我做错了什么还是一个错误? c = np.array([-1., 0., 0., 0., 0., 0., 0., 0., 0.]) A_ub = np.array([[ 1.,
当我解决线性规划问题时,如下式,我希望x的结果全部是int类型 考虑以下问题: 最小化:f = -1*x[0] + 4*x[1] 服从于: -3*x[0] + 1*x[1] = -3 其中:-inf
我正在尝试使用 SciPy 求解线性规划。我使用以下行导入我认为是相关模块的内容: import scipy.optimize.linprog 然后,我运行求解器: scipy.optimize.li
我试图在 Python 2.7 中解决以下线性规划问题,但由于某种原因,linprog 没有返回正确的结果。 Minimize: -x2 -x3 这样: x0 + 0.33*x2 + 0.67*x3
我是一名优秀的程序员,十分优秀!