使用lb和ub将参数传递给fmincon

时间:2017-01-29 00:05:18

标签: matlab

我有一个使用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的语法是什么?

1 个答案:

答案 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)约束易于处理,它们与输入向量具有相同的大小,您可以指定相同的值或不同的值。