我应该为FMINCON,matlab使用什么设置和起点

时间:2016-02-07 19:10:13

标签: matlab optimization minimization

目前我有一个非常简单的功能,应该根据一些限制最小化。我很奇怪,如何正确调整fmincon设置以获得退出标志1的最佳最小值。此设置将使我退出标志-2。 这是我的Matlab代码:

%% Main
lb=[-1e5,-1e5,0];
ub=[1e5,1e5,1e5];
x0 = unifrnd (lb,ub,[1,3]);
options=optimset('display','off','algorithm','sqp');
[x,~,exitflag]=fmincon(@myfun,x0,[],[],[],[],lb,ub,@mycons,options);
disp(['Exit Flag:  ', num2str(exitflag)])
%---------------------------

function f=myfun(x) 
         f=x(2)-4*x(3)^2; 
end
%---------------------------

function [c,ceq]=mycons(x) 
x1=x(1); x2=x(2);  x3=x(3);
N= [20   1];  xp=[12 0.4];
c(1)=((x1-20)/20)^8+((x2-1)/1)^8-1; 
ceq(1)=([1,-1]*(([x1 x2]-xp)./N)')+x3.^2;
end

1 个答案:

答案 0 :(得分:0)

无法知道要使用的最佳初始参数是什么。如果有,则相同的方法可以让您知道最佳参数集是什么,在这种情况下您不需要执行优化。

您可以做的最好的事情是创建一个网格/一组初始值,从每个网格初始值开始多次运行优化,然后从结果集中选择最佳答案。

如果你有全局优化工具箱,那么有MultiStart课程可以帮助你做到这一点。