【问题标题】:Python non convex optimizationPython非凸优化
【发布时间】:2020-04-29 17:20:17
【问题描述】:

我使用 Python 的 cvxpy 包来解决一个非凸优化问题,如下所示:

import numpy as np
import cvxpy as cp




def kl(a,b):
    if a==b:
        return 0.000001
    if b==0:
        return 1000000
    if a==0:
        return -np.log(1-b) 
    return a*np.log(a/b)+(1-a)*np.log((1-a)/(1-b))  

t = 0.5
q = 0.1
p = 0.1

d = cp.Variable()
c = t/(1-t)/(d*kl(a,q))

objective = cp.Minimize(c)
constraints = [ -np.log((a/q-1)*((1-(1-p)/q))) >= d, d >= 0 ]

prob = cp.Problem(objective,constraints)
result = prob.solve()
print(d.value)
print(constraints[0].dual_value)

我认为包不喜欢目标函数中的函数,但这只是一个猜测。 感谢您的帮助。 亲切的问候

【问题讨论】:

  • cvxpy 仅用于凸问题。
  • 谢谢!是否有针对非凸问题的软件包?
  • 一些全局求解器可以通过 Pyomo 访问。
  • 非常感谢您的建议

标签: python optimization cvxpy convex


【解决方案1】:

受 Scipy 约束的优化器可能会很好。尝试其中一种:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2020-03-10
    相关资源
    最近更新 更多