Error using lsqncommon (line 67)

Hi,
I have a case with an optim via lsqnonlin just trying to minimize a price but the lsqncommon is handing over my optim.
[x,resnorm,FVAL,Exitfalg,output] = lsqnonlin(G, I, lb, ub, options);
with G an function handled returning a price difference between two set.
I = [0.1 0.1 0.1 0.1 -1];
the returned error is as follow Error using lsqncommon (line 67) The Levenberg-Marquardt algorithm does not handle bound constraints and the trust-region-reflective algorithm requires at least as many equations as variables; aborting
lb = [0 0 0 0 -1];
ub = [1 1 1 1 1];
Would you provide a support?
thanks.

댓글 수: 6

Star Strider
Star Strider 2015년 9월 4일
What is the code for your ‘G’ function? From the error text, it may be the problem.
DIMITRY
DIMITRY 2015년 9월 4일
it is simply a function handled @(x)FunctionHandle wich is simply returning a substract of two sets...do not think it is the issue since the optim is working for another solution.
The output of the function handled is 4.1859 with an initial set of value as
I = [0.6434 0.1705 0.0049 0.0198 -0.9509];
The error is when runing the lsqnonlin on the 4.1859 non lin syst as it do not seems to recognize the trust region algo. This is how I have spec the options
options = optimoptions('lsqnonlin','disp','iter','MaxFunEvals',1000,'TolFun',1e-5,'Algorithm','trust-region-reflective');
I have tried with different initial values without success.
Please help!
DIMITRY
DIMITRY 2015년 9월 4일
Any Idea?????
Star Strider
Star Strider 2015년 9월 4일
No idea, because I still haven’t seen the code for ‘G’!
DIMITRY
DIMITRY 2015년 9월 4일
Hey sorry! please formalize what you clearly need to save time!
In G please!!! it is simply x = (b - c) as an handled function! the function G returned 4.1859 as explained!
thanks for your reply!
Star Strider
Star Strider 2015년 9월 4일
I really need to see the full code for ‘G’.
What parameter are you optimising with respect to?

댓글을 달려면 로그인하십시오.

답변 (1개)

Matt J
Matt J 2015년 9월 4일
편집: Matt J 2015년 9월 4일

1 개 추천

You have 5 unknowns and therefore the trust region algorithm expects your G function to return at least 5 elements (representing 5 equations), so that the system is over-determined. Instead, though, your G() is returning a scalar.
It doesn't really make sense to be solving 1 equation in 5 unknowns, so you should probably get more equations from somewhere. Possibly, you've misinterpreted lsqnonlin and think that, like fmincon/fminunc,etc... lsqnonlin expects a scalarized objective function. It does not.

댓글 수: 1

DIMITRY
DIMITRY 2015년 9월 4일
Great thanks Matt, that is it in fact my G function is a substract of x = (b - c) where b is the target function output and c is a 5 factor function to be minimized by the lsqnonlin with the I vector as entry. so in c I have flex the 5 factors with the x output of the minimization. I am still taking a deeper look at it in the meantime...

댓글을 달려면 로그인하십시오.

질문:

2015년 9월 4일

댓글:

2015년 9월 4일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by