1
感謝您閱讀本文,我有一個matlab函數'myfun',它返回給定輸入向量X的標量。現在我試圖使用fmincon來最小化這個函數,但是我有麻煩約束了我的輸出向量元素。MATLAB fmincon約束向量元素
X0=1:1:10;
fhandle = @myfun;
lb=X0(1)*ones(length(X0),1);
ub=X0(end)*ones(length(X0),1);
[X]=fmincon(fhandle,X0,[],[],[],[],lb,ub);
首先,元素不能小於X0(1)或大於X0(end)。 到目前爲止我認爲這麼好,但是對於我的輸出向量我有兩個更多的約束條件,我找不到在這裏搜索問題的解決方案。第一個是
X(1)=X0(1)
and
X(end)=X0(end)
所以第一個和最後一個元素必須設置爲常量。
我的最終約束具有在值從元件i至i + 1的變化做的,它已被限定於一定值A和元素i必須總是小於或equall到元素i + 1
X(i)<=X(i+1)
X(i+1)-X(i)<=E
一個例子輸出X具有以下輸入X0和A是
X0=1:1:10;
E=3;
X=[1 1.1 1.2 1.4 1.7 2.0 2.7 4.7 7 10]
如果某人具有尖端在其上的部件/在Matlab fmincon或其他最小化的功能的功能的使用,非常感謝!
PS:當我再次閱讀全文後我意識到,我的2個約束我正在尋找將意味着第一個
非常感謝您的評論,我還沒有通過測試不平等約束,因爲它不斷嘗試調整x0(1)和x0(結束)的值,同時優化,我已更新我的代碼 – Alex
好的,由於某些原因,Matlab嘗試在第一次迭代中調整邊界,但在第一次迭代之後確實存在約束。謝謝您的時間,一切似乎都奏效! – Alex