matlab fminsearch 求取最小值失败的情况

来源:互联网 发布:淘宝宝贝详情怎么做 编辑:程序博客网 时间:2024/05/18 01:10


d = 800;
P1 = [-d, -d];
P2 = [d, -d];
P3 = [d, d];
P_center = [-d, d];

TAG = [1000.836734693877590 + 6000, 9.224489795918398e+02 + 6000];

% compute the distance separately between the movable taget node and the three anchor node
d1 = pdist2(TAG, P1);
d2 = pdist2(TAG, P2);
d3 = pdist2(TAG, P3);
d_center = pdist2(TAG, P_center);


%d_err = x_rand(50, 4)
d_err = [-28.4239  -42.1261   43.3060   10.2872];
d1_new = d1 + d_err(1) + 20;
d2_new = d2 + d_err(2) + 20;
d3_new = d3 + d_err(3) + 20;
d_center_new = d_center + d_err(3) + 20;


% fminsearch method
myfunc_ideal = @(x)(sqrt((P1(1) - x(1))^2 + (P1(2) - x(2))^2) - d1)^2 + (sqrt((P2(1) - x(1))^2 + (P2(2) - x(2))^2) - d2)^2 + ......
                    (sqrt((P3(1) - x(1))^2 + (P3(2) - x(2))^2) - d3)^2 + (sqrt((P_center(1) - x(1))^2 + (P_center(2) - x(2))^2) - d_center)^2;
[out_p_ideal, fval, exitflag, output] = fminsearch(myfunc_ideal,[1,1]); %[1,1,]是迭代初值
myfunc_real = @(x)(sqrt((P1(1) - x(1))^2 + (P1(2) - x(2))^2) - d1_new)^2 + (sqrt((P2(1) - x(1))^2 + (P2(2) - x(2))^2) - d2_new)^2 + ......
                    (sqrt((P3(1) - x(1))^2 + (P3(2) - x(2))^2) - d3_new)^2 +  (sqrt((P_center(1) - x(1))^2 + (P_center(2) - x(2))^2) - d_center)^2;
[out_p_real, fval, exitflag, output] = fminsearch(myfunc_real,[1,1]); %[1,1,]是迭代初值


执行的时候报错:

正在退出: 超过了函数计算的最大数目
         - 请增大 MaxFunEvals 选项。
         当前函数值: 816883.294114

TAG =

   1.0e+03 *

    7.0008    6.9224


out_p_ideal =

   1.0e+03 *

    7.0008    6.9224


out_p_real =

   1.0e+03 *

    9.6811    1.8230