我试图用下面所示的约束来解决这个线性规划函数,答案是x1和x2应该分别2和6,并且目标函数的值应该等于36.我写的代码给了我答案4和3.我可能做错了什么?功能最大化z=3*x1 + 5*x2.限制是x1 <= 4; 2*x2 <=12; 3*x1 + 2*x2 <= 18; x1>=0; x2>=0.
import numpy as np
from scipy.optimize import minimize
def objective(x, sign=1.0):
x1 = x[0]
x2 = x[1]
return sign*((3*x1) + (5*x2))
def constraint1(x, sign=1.0):
return sign*(3*x[0] +2*x[1]- 18.0)
x0=[0,0]
b1 = (0,4)
b2 = (0,12)
bnds= (b1,b2)
con1 = {'type': 'ineq', 'fun': constraint1}
cons …Run Code Online (Sandbox Code Playgroud) 考虑以下(凸)优化问题:
minimize 0.5 * y.T * y
s.t. A*x - b == y
Run Code Online (Sandbox Code Playgroud)
其中优化(矢量)变量x和y和A,b是适当维度的矩阵和向量,分别.
下面的代码使用SLSQPScipy中的方法轻松找到解决方案:
import numpy as np
from scipy.optimize import minimize
# problem dimensions:
n = 10 # arbitrary integer set by user
m = 2 * n
# generate parameters A, b:
np.random.seed(123) # for reproducibility of results
A = np.random.randn(m,n)
b = np.random.randn(m)
# objective function:
def obj(z):
vy = z[n:]
return 0.5 * vy.dot(vy)
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Jupyter 笔记本中使用sympy以可重复的方式记录和执行一系列数学计算。
如果我定义以下内容:
from sympy import *
init_printing()
x, y, z = symbols("x y z")
x=y+z
x
Run Code Online (Sandbox Code Playgroud)
然后我可以显示x(即y+z)的值。
如何显示完整的方程 ( x=y+z)?
运行Eq(x,y+z),即使有evaluate=False) 返回具有x替换 ( y+z=y+z)值的表达式。