matlab凸優化工具箱——cvx簡介
matlab中的凸優化工具箱 ——cvx簡介
這學期選了王書寧的凸優化這門課,教材也是用的祂翻譯的教材,平時作業都是用matlab編寫。最近無意發現原來還有CVX這樣專門的工具箱,想的這下能節省不少時間,下面介紹一下cvx的安裝和用法。
matlab本身是沒有cvx的工具箱,需要到[cvx主頁],(http://cvxr.com/cvx/)上下載,選單上有個download,進入後選擇適合你的版本下載。我用的是windows系統,matlab 版本是64位,所以下載最後一個,壓縮包大約20M,解壓後大約50M,加壓後樓主為了方便就直接放在了\matlab\bin目錄下,你可以選擇其它目錄。
將matlab命令視窗目錄定位到你安裝的資料夾下,這主要是為了下一步可以執行cvx_setup檔案。執行後會出現多行英文,你可以看看有沒有error字眼出現。
No errors! cvx has been successfully installed.
NOTE: The MATLAB path has been updated to point to the cvx distribution.
In order to use cvx regularly, you must save this new path definition.
因為我就放在了bin目錄下,所以不需要再file\setpath選單下將檔案目錄加進去。如果你放在其它檔案,最好加一下。然後在在file→Preferences→General的Toolbox Path Caching裡點選update Toolbox Path Cache更新一下,就可以了
我們可以用cvx頁面上的例項進行驗證。
新建一個M檔案,將灰色區域的程式碼直接複製到m檔案中,儲存執行,(注意m檔案系統可能會提示你進行更改,請不要更改)
儲存後直接執行,
Calling SDPT3 4.0: 56 variables, 22 equality constraints
For improved efficiency, SDPT3 is solving the dual problem.
num. of constraints = 22
dim. of socp var = 41, num. of socp blk = 11
dim. of linear var = 11
dim. of free var = 4 *
SDPT3: Infeasible path-following algorithms
version predcorr gam expon scale_data
NT 1 0.000 1 0
it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime
0|0.000|0.000|1.4e+01|9.1e+00|3.2e+03| 1.321448e+01 0.000000e+00| 0:0:00| chol 1 1
1|0.916|0.458|1.2e+00|5.0e+00|7.7e+02| 2.483994e+01 -4.420328e+00| 0:0:00| chol 1 1
2|1.000|0.968|2.1e-05|1.7e-01|4
……
……
最後會給出最優值,出現以上這說明配置成功了,你可能會發現重複執行結果不一樣,看一下程式碼就知道,其中的引數均是隨機產生,所以有區別,至此安裝就完成了。
如果要詳細學習此工具箱,可以下載他的pdf說明文件,99頁。不過建議初學者先用自己的語言實現,等熟練後再使用此庫。就像雖然有計算器,但是我們還是要先熟練加減乘除一樣。
祝你成功!