看板 MATLAB 關於我們 聯絡資訊
※ 引述《inn226 (胖虎@!@)》之銘言: : [p,favl,exitflag,output,lambda]=linprog(f,Aeq,beq,A,b,[],[],[],optimset('Display','iter','Algorithm','interior-point')); : p,eqlin2=lambda.eqlin : 請問一下這一段是有什麼意思呢?? 為什麼要打這一段 這一小段是分好幾行來看的 解說如下 [p,favl,exitflag,output,lambda]=linprog(f,Aeq,beq,A,b,[],[],[],... optimset('Display','iter','Algorithm','interior-point')); p, eqlin2=lambda.eqlin 第一段 =左邊是接收計算完後的值分別由 p, favl, exitflag, output, lambda接收 =右邊是執行 linprog (linear program)的程式其中帶入參數 是前面8個 f, 目標函數 Aeq, 限制式中是等式的參數 beq, 限制式中是等式的係數 A, 限制式中是不等式的參數 b, 限制式中是不等式的係數 [], 後面這三個通常都是上下界的設定 如果沒有用到就用[],代替目的是因為後面還 要用到 optimset的設定 [], [] optimset的設定 不論在matlab用什麼最佳化函數去求解 optimset的設定全部都一樣語法 optimset('Display','iter','Algorithm','interior-point') 兩兩一組做解答 第一組是 'Display','iter' 顯示計算的疊代 第二組是 'Algorithm','interior-point' 使用的演算法 為內點法 演算法一般還有兩種到三種可以選擇 大概的最佳化都是這樣 至於什麼問題用什麼解法這就不是簡單可以說說的了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.194.141 ※ 編輯: e0101010 來自: 111.240.194.141 (08/22 08:05)
cmjer:在這裡他的 Aeq 是不等式喔 08/22 10:25
你講得沒錯這裡是這樣 因為他順序放錯 但為了避免誤用 正常還是必須要以下列來表示 才不會造成日後回過頭來看程式的時候 不清楚表達的內容。 Aineq Matrix for linear inequality constraints bineq Vector for linear inequality constraints Aeq Matrix for linear equality constraints beq Vector for linear equality constraints ※ 編輯: e0101010 來自: 111.240.194.141 (08/22 11:20)
inn226:謝謝大大精闢的解說 受益良多 08/23 21:41