我一点也不擅长matlab,我在找有约束的函数的最小值。
我尝试逐行使用文档中的示例(https://www.mathworks.com/help/optim/ug/optimization-toolbox-tutorial.html-part约束优化示例:用户提供的梯度)
我已经尝试了以下代码:
f = @(x,y) x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20;
g = @(x,y) x.*y/2+(x-2).^2+(y-2).^2/2-4;
x0 = [2 ,0];
options = optimoptions('fmincon','Algorithm','interior-point','Display','iter');
gfun = @(x,y) deal(g(x,y),[]);
[x,fval,exitflag,output] = fmincon(f,x0,[],[],[],[],[],[],gfun,options);
这是控制台输出:
>> Untitled4
Not enough input arguments.
Error in Untitled4>@(x,y)x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20 (line 1)
f = @(x,y) x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20;
Error in fmincon (line 552)
initVals.f = feval(funfcn{3},X,varargin{:});
Error in Untitled4 (line 7)
[x,fval,exitflag,output] = fmincon(f,x0,[],[],[],[],[],[],gfun,options);
Caused by:
Failure in initial objective function evaluation. FMINCON cannot continue.
我不明白-我的功能出了什么问题?
1条答案
按热度按时间ohtdti5x1#
您错过了文档中定义
fun
的部分,并且您错过了gfun
的定义。(两者都是单个变量x的函数是很重要的)下面是工作代码: