YALMIP安裝與使用整理

itheta發表於2020-11-29

安裝

1.下載後的檔案壓縮包解壓後如下:
YALMIP-master
2.將其剪下至matlab常用工具包的根目錄途徑,(我的matlabR2020a):C:\Program Files\Polyspace\R2020a\toolbox\YALMIP-master

3.在matlab軟體中新增路徑:–主頁\設定路徑

直接選擇新增幷包含子資料夾

直接貼上安裝的路徑

C:\Program Files\Polyspace\R2020a\toolbox\YALMIP-master

 

4.點選儲存!!!

ps:如果matlab安裝位置不同記得選擇好自己安裝matlab的正確位置喲!

5.測試安裝是否成功.

在matlab執行視窗輸入‘yalmiptest’命令或者‘which sdpvar’

也可以採用官網所說的安裝方式。但是也得注意解壓的位置!

Yalmip使用

1. 建立決策變數:

  >> x = sdpvar(m, n [, option]):建立m*n的連續型決策變數矩陣,option是對矩陣的一些引數指定。

  相應的,如果要建立整型或二值型決策變數,matlab語句分別為:  

  >> x = intvar(m, n, [option])

  >> x = binvar(m, n, [option])

2. 新增約束:

  >> F = set(constraint [, tag]):建立一個以constraint指定的約束,可選引數tag可以給該約束指定一個字串標記。重要的是constraint的表達也非常簡單,例如如果有 x1 + x2 + x3 <= 3 的約束,直接寫:

  >> x = sdpvar(3, 1);

  >> F = set(x(1) + x(2) + x(3) <= 3, 'cost bound1');

  如果要繼續新增約束也非常簡單,支援用+直接相連:

  >> F = F + set(constraint1 [, tag1]);

  >> F = F + set(constraint2 [, tag2]);……

  例如,如果繼續限制 x 只能取[0, 1]之間的值,則:

  >> F = F + set(0 <= x <= 1, ‘upper and lower bound’);

  一句話就搞定了,是不是非常簡單。!

3. 引數配置

  這個比較簡單,語句如下:

  >> ops = sdpsettings(option1, value1, option2, value2, ……)

  例如語句

  >> ops = sdpsettings('solver', 'lpsolve', 'verbose', 2);

  'solver' 引數指定程式用lpsolve求解器(如果已經安裝,否則會報錯),如果不指定 ‘solver’ 引數,他會根據決策變數型別自動挑選已安裝的、最適合的求解器;'verbose' 指定顯示冗餘度(冗餘度越大,你就可以看到越詳細的求解過程資訊)。

4. 求解

  這個也只有一句話:

  >> result = solvesdp(F, f, ops) 求解一個數學規劃(最小化)問題,該問題的目標函式由 f 指定,約束由 F 指定,ops指定求解引數,最後的結果儲存在result結構體中。

還是以前面那個問題作為例子,如果用yalmip的話,只需要如下簡單幾句:

  >> x = sdpvar(3, 1);
  >> f = [4 2 1] * x;
  >> F = set(2*x(1) + x(2) <= 1);
  >> F = F + set(x(1) + 2 * x(3) <= 2);
  >> F = F + set(x(1) + x(2) + x(3) == 1);
  >> F = F + set(0 <= x(1) <= 1) + set(0 <= x(2) <= 1) + set(0 <= x(3) <= 2);
  >> ops = sdpsettings('solver', 'lpsolve', 'verbose', 2);
  >> result = solvesdp(F, -f, ops);

  如果你想用 cplex 求解器求解,只需要將以上的‘solver’引數的‘lpsolve’改成‘cplex’,其他任何地方都不需要做改動。

  除此以外,yalmip還支援幾乎所有其他的求解演算法,在matlab下輸入yalmiptest命令可以得到所有支援的演算法以及它們的安裝狀態