如何用cvxopt解决这个优化问题
How to solve this optimization problem with cvxopt
我有一个非线性优化问题,在 Mathematica 中可以解决为:
FindMaximum[{(81 x + 19)^0.4 + (80 (1 - x) + 20)^0.6, 0 <= x <= 1}, x]
但是,现在我在没有 Mathematica 的计算机上,我想使用 CVXOPT 模块解决 Python 中的类似问题。我查看了 examples 并找到了线性程序、二次程序和其他类型的程序,但找不到这个简单的程序。
我能用CVXOPT解出这样的程序吗?
我没有找到使用 cvxopt 的解决方案,但我找到了一个更好的替代方案 - cvxpy:
import cvxpy as cp
x = cp.Variable()
prob = cp.Problem(
cp.Maximize((81*x + 19)**0.6 + (80*(1-x)+20)**0.6),
[0 <= x, x <= 1])
prob.solve() # Returns the optimal value.
print("status:", prob.status)
print("optimal value", prob.value)
print("optimal var", x.value)
打印:
status: optimal
optimal value 23.27298502822502
optimal var 0.5145387371825181
我有一个非线性优化问题,在 Mathematica 中可以解决为:
FindMaximum[{(81 x + 19)^0.4 + (80 (1 - x) + 20)^0.6, 0 <= x <= 1}, x]
但是,现在我在没有 Mathematica 的计算机上,我想使用 CVXOPT 模块解决 Python 中的类似问题。我查看了 examples 并找到了线性程序、二次程序和其他类型的程序,但找不到这个简单的程序。
我能用CVXOPT解出这样的程序吗?
我没有找到使用 cvxopt 的解决方案,但我找到了一个更好的替代方案 - cvxpy:
import cvxpy as cp
x = cp.Variable()
prob = cp.Problem(
cp.Maximize((81*x + 19)**0.6 + (80*(1-x)+20)**0.6),
[0 <= x, x <= 1])
prob.solve() # Returns the optimal value.
print("status:", prob.status)
print("optimal value", prob.value)
print("optimal var", x.value)
打印:
status: optimal
optimal value 23.27298502822502
optimal var 0.5145387371825181