凸優化 python解決凸優化問題

2021-08-29 01:12:02 字數 1584 閱讀 5002

1、安裝cvx包

用pip安裝cvxopt-1.2.1-cp36-cp36m-win_amd64.whl和cvxpy-1.0.9-cp36-cp36m-win_amd64.whl

因為我是python3.6所以是cp36

cvxpy: 

cvxopt: 

參考:2、遇到問題:

error: microsoft visual c++ 14.0 is required. get it with "microsoft visual c++ build tools":

**上不去,找到了這個:

#ecos

驗證是否安裝成功,可以用乙個例子:

from cvxpy import *

import cvxpy as cvx

'''problem :

minimize (x-y)^2

subject to

x+y=1

x-y>=1

'''from cvxpy import *

# create two scalar optimization variables.

# 在cvxpy中變數有標量(只有數值大小),向量,矩陣。

# 在cvxpy中有常量(見下文的parameter)

x = variable() #定義變數x,定義變數y。兩個都是標量

y = variable()

# create two constraints.

#定義兩個約束式

constraints = [x + y == 1,

x - y >= 1]

#優化的目標函式

obj = minimize(square(x - y))

#把目標函式與約束傳進problem函式中

prob = problem(obj, constraints)

prob.solve() # returns the optimal value.

print("status:", prob.status)

print("optimal value", prob.value) #最優值

print("optimal var", x.value, y.value) #x與y的解

# replace the objective. 不同的目標函式,相同的約束

prob2 = cvx.problem(cvx.maximize(x + y), prob.constraints)

print("optimal p1 value", prob2.solve())

# replace the constraint (x + y == 1).#不同的約束,相同的目標函式

constraints = [x + y <= 3] + prob.constraints[1:] #注意:此處是列表相加,prob.constraints[1:]取prob的約束集中

#從第二個開始的所有約束。

prob2 = cvx.problem(prob.objective, constraints)

print("optimal p2 value", prob2.solve())

凸優化 非凸優化

凸 convex vs 非凸的概念,數學定義就不寫了,介紹個直觀判斷乙個集合是否為convex的方法,如下圖 簡單的測試乙個集合是不是凸的,只要任意取集合中的倆個點並連線,如果說連線段完全被包含在此集合中,那麼這個集合就是凸集,例如左圖所示。凸優化有個非常重要的定理,即任何區域性最優解即為全域性最優...

凸優化 最優化 凸集 凸函式

原文 我們知道壓縮感知主要有三個東西 訊號的稀疏性,測量矩陣的設計,重建演算法的設計。那麼,在重建演算法中,如何對問題建立數學模型並求解,這就涉及到了最優化或凸優化的相關知識。在壓縮感知中,大部分情況下都轉換為凸優化問題,並通過最優化方法來求解,因此了解相關知識就顯得尤為重要了。主要內容 問題引出 ...

凸優化1 什麼是凸優化問題

去年就想看一下優化和泛函變分相關的內容,但沒有空餘的排期,大部分學習時間花在了強化學習方面。今年,正好近期專案也有需要,凸優化提上了自學日程。全書700頁,計畫用半年的時間完成一刷。數學模型min iniz ef0 x su bjec ttof i x bi,i 1,2,m begin minini...