我有一个使用fminsearch的工作脚本,如下所示:
[t,fmin] = fminsearch(@fun,t0,[],x1,x2,x3,...,xn);
function error = fun(t,x1,x2,x3,...,xn)
我必须将相当多的参数传递给函数fun才能获得包含两个值t(1)和t(2)的t数组。我了解到,虽然fminsearch没有使用约束,但我有一个约束:lb< = t(1)& t(2)< = ub。
我一直在阅读有关fmincon的内容,但我还没有找到解释来传递其他参数和设置约束。
使用带有简单不等式约束的fmincon的语法是什么?
答案 0 :(得分:0)
在fmincon(和其他优化函数)中,如果不使用某个约束参数,只需输入[]。
你要检查的其他事情是某些函数接收行向量和其他列向量。
对于3x1向量函数:
options = optimoptions('fmincon','Algorithm','interior-point','Display','final');
[xfmincon,fval,exitflag,output] = fmincon(fh3,[0;0;0],[],[],[],[],[-10;-pi;-10],[+10;+pi;+10],[],options)
1)要处理其他变量,你将main函数拆分为2个函数,一个将使用所有参数,另一个将传递给fmincon:
fh3main=@(v,param1,param2) v+param1*sin(v)+param2;
fh3=@(v) fh3main(v,myparam1,myparam2);
2)约束易于处理,它们与输入向量具有相同的大小,您可以指定相同的值或不同的值。