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...