最小化问题不给预期的结果
3视图(30天)
显示旧的评论
你好,
我试图找到最小化一个函数的系数。
我已经创建了一些假的数据相同的功能,从一些猜测。我想找系数基于虚假数据来验证我的代码但我得到意想不到的结果。上面两行应该彼此,因为这绝对是该函数可以做的事情。
我不知道我错在我的代码,非常感谢你能提供的任何帮助。
下面的代码,我也上传的所有文件需要重建结果。
clc;清晰的所有;关闭所有;
% %的位置点力量
xx = (1.5, 1.5, -0.5, 0.4, 0.4);% X stokeslets的位置
yy = [3 3 0、1.25、-1.25);% Y stokeslets的位置
pfl = (0,0);%位势流的位置(x, y)
% %进口假数据
负载(“fakemodel.mat”)
% %优化
simply_velo = @ (sf_arg) velopt (sf_arg posx,花束,xx, yy, sf_arg (:, 6), pfl);%计算函数最小化,虽然我有数据的地方
%函数最小化
有趣= @ (sf_arg) nan_norm (((speed_fake simply_velo (sf_arg)) ^ 2));%相对误差
% %创建非线性约束
sf_ini = (1.5, 1.5, 3, 3, 3, 6);%初始猜测变量
A = [0 0 0 1 0 0;0 0 0 0 1 0;1 1 0 0 0 0;0 0 0 0 0 1;0 0 1 0 0 0);% * x < b
b = [0;0;0;0,0];% b = ()
Aeq = [1 1 0 0 0 0;0 2 1 0 0 0;0 0 0 1 1 0;1 1 1 1 1 0);% Aeq * x =说真的
说真的= [0;0;0,0];%说真的
错误= 0 (50,6);
sav_fm = 0 (50, 6);
为i = 1: 50
sf_ini =兰德(大小(sf_ini));
% = optimset选项(“显示”,“通路”,“MaxFunEvals”, 600年,“PlotFcns”, @optimplotfval, TolFun, 1的军医,TolX, 1的军医);
选择= optimset (“MaxFunEvals”,6000,“TolFun”1 e15汽油,“TolX”1 e15汽油);
[调频,fval] = fmincon(乐趣、sf_ini A、b Aeq,说真的,[],[],[],选项);% f分钟搜索
:sav_fm(我)=调频(:);
Fval (i) = Fval;
结束
% saved_fm
[minfval,指数]= min (Fval);
:溶液= sav_fm(指数)
%