1. 程式人生 > 實用技巧 >「補題」聯賽模擬16

「補題」聯賽模擬16

CVX是一個基於Matlab的凸優化建模系統。CVX將Matlab轉換為建模語言,允許使用標準Matlab表示式語法指定約束和目標。
CVX工具包官方網站:http://cvxr.com/cvx/
關於CVX的介紹:http://web.cvxr.com/cvx/doc/intro.html
工具包安裝網址: http://cvxr.com/cvx/doc/install.html

  • 點開網址 http://cvxr.com/cvx/download 下載 .zip 或者 .tar.gz 檔案
    在這裡插入圖片描述
    因為我的電腦是Windows系統,並且我已經安裝了Matlab2013b(x64),所以我下載了cvx-w64-zip壓縮包。
  • 下載後對壓縮包進行解壓,將cvx資料夾拷貝至你習慣使用的目錄下(例如,我將cvx資料夾拷貝到G:\myMATLAB tool目錄下)。
  • 啟動Matlab,在Current Folder視窗中開啟cvx資料夾,然後在Command Window中輸入cvx_setup
    在這裡插入圖片描述
    這樣就安裝成功啦!
    Remark:需要設定路徑Set Path(Add with Subfolders),這一步是將cvx工具箱所在資料夾新增到MATLAB工作搜尋目錄。
    File-Set Path-Add with Subfolders
    -CVX的使用
    例子1.考慮以下凸優化模型:
    在這裡插入圖片描述
    以下程式碼生成並解決此模型的隨機例項:

m = 20; n = 10; p = 4;
A = randn(m,n); b = randn(m,1);
C = randn(p,n); d = randn(p,1); e = rand;

cvx_begin
variable x(n)
minimize( norm( A * x - b, 2 ) )
subject to
C * x == d
norm( x, Inf ) <= e
cvx_end
輸出結果:
在這裡插入圖片描述
CVX還可以通過使用特殊的GP模式支援幾何程式設計(GP)。幾何程式不是凸的,但可以通過應用某種變換來實現。在此模式下,CVX允許GP以其原始的非凸形式構建,將它們自動轉換為可解的凸形,並將數值結果轉換回原始問題。(幾何規劃教程見網址:http://stanford.edu/~boyd/papers/gp_tutorial.html
PDF見網址: http://stanford.edu/~boyd/papers/pdf/gp_tutorial.pdf

要使用GP模式,你必須使用命令cvx_begin gp或者cvx_begin GP而不是cvx_begin。 例如,在gp / max_volume_box.m的示例庫中找到的以下程式碼可確定受到各種面積和比率約束的最大volume box:
例子2. cvx_begin gp
variables w h d
maximize( w * h * d )
subject to
2*(hw+hd) <= Awall;
w*d <= Afloor;
alpha <= h/w >= beta;
gamma <= d/w <= delta;
cvx_end
感興趣的同學可以好好看看教程呀!