淡江大學

MATLAB中的fmincon如果限制不能滿足

5月6日 21:01
如題 我最近剛開始使用matlab來處理一些優化問題 目前我使用fmincon是使用SQP演算法來處理 但是我發現如果限制式有矛盾,依然可以得到答案 舉例來說 function f = objectiveFcn(x) f = 48*x(1)+(1/2)*x(1)*36*x(1); end f那邊是要做最小化的目標式 function [c,ceq] = constraintFcn(x) ceq(1) = x(1) +1; c(1) = x(1)+2; end 這邊我故意讓 x=-1 限制1 x<-2 限制2 但是執行之後依然可以跑出結果 答案為x=-1.4444 我大概知道SQP的演算法 如果以現實紙筆計算也是會有限制矛盾的問題 有大大能解決嗎?
1
回應 12
文章資訊
Logo
每週有 19 則貼文
共 12 則留言
淡江大學
想請問,為什麼你的objectiveFcn f會只有x(1)一個變數呢?這樣的話是對 f = 48x + 18x = 66x (更正在 B7 f = 48x+18x*x) 做最小化嗎? ____ By 剛剛看了網路小短片的想法
淡江大學
B1 我照著影片的範例,並參考你的程式碼,我跑不出你的結果耶?想請問你的初始值設多少呢?
___________________________ 我加了sqp的option之後跑到-1.4444了!但是有寫停止的原因是 [Converged to an infeasible point] [fmincon stopped because the size of the current step is less than the value of the step size tolerance but constraints are not satisfied to within the value of the constraint tolerance.]
原 PO - 淡江大學
B2 我的結果跟你一樣(使用interior point) 你這個結果應該是預設的選項 因為我使用的是 Live Editor Task 所以客製化選項比較好選 在Command Window打 optimtool 就可以打開
原 PO - 淡江大學
補上圖片
原 PO - 淡江大學
我的起始點是設 x0 = [4] 這邊設多少沒有差別 結果會一樣
原 PO - 淡江大學
我的objectiveFn and Constraint Fn
原 PO - 淡江大學
B1 那個式子原式是別的 所以才會長那樣子 f = 48x + 18x^2 這樣才對~
淡江大學
B4 為什麼你的比較高級XD 我的是2019b
_______________ 你是用線上版的嗎?
原 PO - 淡江大學
B2 那個訊息我也有看到 但是他還是有出現"一個解"出來 就是不能明白 為甚麼我都設X=-1 、 x<-2 還是可以有-1.444出現
原 PO - 淡江大學
B8 我的是R2020b 學校有提供免費的序號可以用 A_A
淡江大學
B9 以我讀電機系多年來學程式以及電腦原理的角度來看,這應該是與迭代法(iteration)有關係,雖然已經constrain x=-1但實際上是比較兩者相減的絕對值是否小於tolerence,也就是 [ abs( (-1) - (-1.4444) ) < tolerence?],而迭代到這個時候應該是超過tolerence所以就會停下了 如果要更詳細可以問教授MATLAB是怎麼實現這些演算法的,這應該是有關浮點數運算誤差的問題 不知道我的回答有沒有在你的問題點上😓,如果想深究的話,可以先搜尋 floating point comparison 看看,一些想法供你參考
原 PO - 淡江大學
B11 可能沒有幫到本質上的問題 可是有一些新的說法可以解釋這個狀況 謝謝