Is it possible to add more constraints than the default ones in LSQLIN function?

1 view (last 30 days)
I'm solving a constrained linear least-squares problem using lsqlin. I've specified values for C,d,A,b,Aeq and beq. I used all the default constraints that are included in the solver except for the uper and lower bounds.
Axb
Aeqx=beq
I want to add one more constraint to the solver that is different from the above constraints that I already used, Is there a way to specify more constraints in addition to the ones that are by default in the solver?
Any help is appreciated!
  2 Comments
Torsten
Torsten on 26 Jan 2023
Edited: Torsten on 26 Jan 2023
Don't you think we need to know the constraint you want to impose in order to be able to give advice ?
John D'Errico
John D'Errico on 26 Jan 2023
There are no default constraints. And you can supply more than one constraint. That is, A and Aeq can be MATRICES, with b and beq being vectors. That means A can have as many rows as you wish, with each row being another constraint. The same applies to Aeq.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 26 Jan 2023
Edited: Matt J on 26 Jan 2023
You can still use lsqlin, but as John said, you can add additional inequality constraints as follows,
Q=-sign(d).*C;
r=zeros(size(d));
Aineq=[A;Q]
bineq=[b;r];
x = lsqlin(C,d,Aineq,bineq,Aeq,beq,lb,ub,x0,options)

More Answers (1)

Torsten
Torsten on 26 Jan 2023
Moved: Matt J on 26 Jan 2023
Use "fmincon" with the constraint (C*x).*d >=0 and define this constraint in function "nonlcon".

Community Treasure Hunt

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

Start Hunting!