rng default
lb = [0,-2*pi,0,-inf];
ub = [30e3*sqrt(2),2*pi,inf,-inf];
X0 = rand(4,1);
y1 = 2.4480e+04
y2 = -5.2580
a = -0.1333
b = 0.2775
Test.a = a;
Test.b = b;
Test.y1 = y1;
Test.y2 = y2;
GlobalSearch_Test.gs = GlobalSearch;
GlobalSearch_Test.MyObj = @(x) ((x(1))^2 + (x(2))^2);
GlobalSearch_Test.c = @(x)[x(1)*cos(x(2)) - Test.a*x(3) + Test.b*x(4) - Test.y1;
x(1)*sin(x(2)) - Test.b*x(3) + Test.a*x(4) - Test.y2];
GlobalSearch_Test.nonlinfcn = @(x)deal(GlobalSearch_Test.c(x));
GlobalSearch_Test.problem = createOptimProblem('fmincon','x0',X0,...
'objective',GlobalSearch_Test.MyObj,'lb',lb,'ub',ub,...
'nonlcon',GlobalSearch_Test.nonlinfcn);
GlobalSearch_Test.problem.options.TolCon = 1.0000e-50;
GlobalSearch_Test.x = run(GlobalSearch_Test.gs,GlobalSearch_Test.problem);
OptimIn.f = @(x) [(x(1)*cos(x(2)) - OptimIn.a*x(3) + OptimIn.b*x(4) - OptimIn.y1); (x(1)*sin(x(2)) - OptimIn.b*x(3) + OptimIn.a*x(4) - OptimIn.y2)];
OptimIn.X0 = rand(4,1);
OptimIn.Options = optimset('Display','iter-detailed','TolFun',1e-50,'TolX',1e-50);
[Optim.X,Optim.fval,Optim.exitflag,Optim.output,Optim.jacobian] = fsolve(OptimIn.f,OptimIn.X0,OptimIn.Options);