I have a system of matricial equations where I want to find 2 matrices of 7×7 (so I am working with (1×98) vectors).
I have an issue when I want to use GlobalSearch Matlab function. Here my code :
Eq1 = (P1.')*(a.')*a*P1 + (P1.')*(a.')*b*P2 + (P2.')*(b.')*a*P1 + (P2.')*(b.')*b*P2 - eye(7); Eq2 = F1*a*P1 + F1*b*P2 + F2*a*P1 + F2*b*P2 - (a*P1 + b*P2)*D; Eqs = reshape([Eq1,Eq2],2*7*7,[]); Fun = matlabFunction(Eqs); F = @(x) Fun(... x( 1 ), x( 2 ), x( 3 ), x( 4 ), x( 5 ), x( 6 ), x( 7 ),... x( 8 ), x( 9 ), x( 10 ), x( 11 ), x( 12 ), x( 13 ), x( 14 ),... x( 15 ), x( 16 ), x( 17 ), x( 18 ), x( 19 ), x( 20 ), x( 21 ),... x( 22 ), x( 23 ), x( 24 ), x( 25 ), x( 26 ), x( 27 ), x( 28 ),... x( 29 ), x( 30 ), x( 31 ), x( 32 ), x( 33 ), x( 34 ), x( 35 ),... x( 36 ), x( 37 ), x( 38 ), x( 39 ), x( 40 ), x( 41 ), x( 42 ),... x( 43 ), x( 44 ), x( 45 ), x( 46 ), x( 47 ), x( 48 ), x( 49 ),... x( 50 ), x( 51 ), x( 52 ), x( 53 ), x( 54 ), x( 55 ), x( 56 ),... x( 57 ), x( 58 ), x( 59 ), x( 60 ), x( 61 ), x( 62 ), x( 63 ),... x( 64 ), x( 65 ), x( 66 ), x( 67 ), x( 68 ), x( 69 ), x( 70 ),... x( 71 ), x( 72 ), x( 73 ), x( 74 ), x( 75 ), x( 76 ), x( 77 ),... x( 78 ), x( 79 ), x( 80 ), x( 81 ), x( 82 ), x( 83 ), x( 84 ),... x( 85 ), x( 86 ), x( 87 ), x( 88 ), x( 89 ), x( 90 ), x( 91 ),... x( 92 ), x( 93 ), x( 94 ), x( 95 ), x( 96 ), x( 97 ), x( 98 )); x0 = ones(2*7*7,1); gs = GlobalSearch; options = optimoptions('fmincon','Algorithm', 'interior-point',... 'UseParallel',true, 'Display','off','MaxFunctionEvaluations',6000, 'TolCon', 1e-4, 'TolFun', 1e-4); problem = createOptimProblem('fmincon', ... 'objective',F, ... 'x0',x0, ... 'lb',[-1*ones(98)], ... 'ub',[1*ones(98)], ... 'options',options) [x,fval] = run(gs,problem)
But I get unfortunately the following error at execution :
problem = struct with fields: objective: [function_handle] x0: [98x1 double] Aineq: [] bineq: [] Aeq: [] beq: [] lb: [98x98 double] ub: [98x98 double] nonlcon: [] solver: 'fmincon' options: [1x1 optim.options.Fmincon] Warning: Length of lower bounds is > length(x); ignoring extra bounds. > In checkbounds (line 27) In checkglobalsearchnlpinputs (line 36) In globalsearchnlp In GlobalSearch/run (line 340) In compute_solving_Matricial_Global (line 96) Warning: Length of upper bounds is > length(x); ignoring extra bounds. > In checkbounds (line 41) In checkglobalsearchnlpinputs (line 36) In globalsearchnlp In GlobalSearch/run (line 340) In compute_solving_Matricial_Global (line 96) Error using fmincon (line 635) Supplied objective function must return a scalar value. Error in globalsearchnlp Error in GlobalSearch/run (line 340) globalsearchnlp(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,options,localOptions); Error in compute_solving_Matricial_Global (line 96) [x,fval] = run(gs,problem) Caused by: Failure in initial call to fmincon with user-supplied problem structure.
If there are persons who were faced to the same problem, how could I fix this error message ?
I think that I did a correct using of GlobalSearch but maybe this issue comes from incorrect lower or upper bounds, or even with the size of vectors I use.
Any help would be welcome.
Best Answer