Как решить эту проблему оптимизации с помощью cvxopt

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

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

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

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


person Erel Segal-Halevi    schedule 23.10.2019    source источник


Ответы (1)


Я не нашел решения с 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
person Erel Segal-Halevi    schedule 24.10.2019