簡體   English   中英

Python 非凸優化

[英]Python non convex optimization

我使用 package cvxpy 形式 Python 來解決如下給出的非凸優化問題:

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)

我認為 package 不喜歡目標 function 中的 function,但這只是猜測。 感謝您的幫助。 親切的問候

Scipy 約束優化器可能很好。 嘗試其中之一:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM