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