Как решить эту проблему оптимизации с помощью cvxopt - PullRequest
0 голосов
/ 23 октября 2019

У меня есть проблема нелинейной оптимизации, которая в Mathematica может быть решена как:

FindMaximum[{(81 x + 19)^0.4 + (80 (1 - x) + 20)^0.6, 0 <= x <= 1}, x‬‬]

Однако сейчас я нахожусь на компьютере без Mathematica, и я хотел бы решить аналогичную проблему вPython, используя модуль CVXOPT. Я посмотрел на примеры и нашел линейные программы, квадратичные программы и другие виды программ, но не смог найти эту простую программу.

Могу ли я решить такую ​​программу с помощью CVXOPT?

1 Ответ

0 голосов
/ 24 октября 2019

Я не нашел решения с помощью 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
...