Borrar filtros
Borrar filtros

How to specify Multiple constraints for LSQLIN (Part 2)

1 visualización (últimos 30 días)
Doug Bell
Doug Bell el 24 de Jun. de 2013
Previously I had asked and MattJ successfully answered the following scenario : I have X = 50 data points for 6 parameters, resulting in output vector Y of 50 data points. I have first constrained the problem so that the Y predicted values are > 0 by setting A = -X, b = 0*Y, and solved via BETA = lsqlin(X,Y,A,b) . I now want to specify multiple constraints so BETA(1)*X(1) + BETA(2)*X(2) is always > 0 , BETA(3)*X(3) + BETA(4)*X(4) > 0 , and BETA(5)*X(5) + BETA(6)*X(6) > 0 for all 50 predicted values. Can someone help me with this? Thanks.
Matt's solution was : tmp={X(:,1:2),X(:,3:4),X(:,5:6)}; A=-[X;blkdiag(tmp{:})]; b=zeros(size(A,1),1); lsqlin(X,Y,A,b)
I now need to add another constarint to the original constraints, that the ratio [BETA(1)*X(1) + BETA(2)*X(2)] / [BETA(3)*X(3) + BETA(4)*X(4)] must be between -0.7 and 0.7 Thanks.

Respuesta aceptada

Matt J
Matt J el 24 de Jun. de 2013
Editada: Matt J el 24 de Jun. de 2013
The new constraints are equivalent to
BETA(1)*X(1) + BETA(2)*X(2) + 0.7*[BETA(3)*X(3) + BETA(4)*X(4)] <=0
and
BETA(1)*X(1) + BETA(2)*X(2) - 0.7*[BETA(3)*X(3) + BETA(4)*X(4)] <=0
These are just additional linear constraints and can be appended to the already existing ones.
  7 comentarios
Doug Bell
Doug Bell el 27 de Jun. de 2013
Was in a little rush yesterday, working now, thanks again, I owe you one!
Matt J
Matt J el 27 de Jun. de 2013
ok. glad it's working!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Linear Least Squares en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by