How to Solve Linear Complementarity Problem (LCP) with MATLAB ?

12 Ansichten (letzte 30 Tage)
I want to use MATLAB for solving Linear Complementarity Problem (LCP) as defined in the following:
what optimization function (e.g., fmincon,lsqnonneg,etc.) should I use, or someone could give me some example.
  1 Kommentar
Matt J
Matt J am 9 Jun. 2025
Bearbeitet: Matt J am 9 Jun. 2025
You don't appear to have an objective function. Are you just trying to find an arbitrary (ω, z) satisfying these (in)equalities?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 9 Jun. 2025
Bearbeitet: Matt J am 9 Jun. 2025
You could do it with quadprog, but you may as well just deploy it as an optimproblem.
n=5; q=-rand(n,1); M=rand(n); M=(M+M')/2;
smallTolerance=1e-6;
z=optimvar('z',n,'Lower',0);
prob=optimproblem('Objective', z'*M*z + z'*q, "Constraints", M*z+q>=0);
[sol,fval]=solve(prob);
Solving problem using quadprog. Minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
fval
fval = 7.2164e-16
assert(fval<=smallTolerance, "No solution found")
eig(M)', %Not PSD
ans = 1×5
-0.3846 -0.2232 0.0577 0.4325 2.3596
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
zOptimal=sol.z %Solutions
zOptimal = 5×1
0.0000 0.8317 0.0000 0.0000 0.0000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
omegaOptimal=M*zOptimal+q
omegaOptimal = 5×1
0.1923 0 0.1923 0.3776 0.6387
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  4 Kommentare
Torsten
Torsten am 9 Jun. 2025
Don't you have to use
n=5; q=-rand(n,1); M=rand(n); Msym=(M+M')/2;
smallTolerance=1e-6;
z=optimvar('z',n,'Lower',0);
prob=optimproblem('Objective', z'*Msym*z + z'*q, "Constraints", M*z+q>=0);
[sol,fval]=solve(prob);
fval
assert(fval<=smallTolerance, "No solution found")
eig(Msym)', %Not PSD
zOptimal=sol.z %Solutions
omegaOptimal=M*zOptimal+q
for M being a general nxn matrix ?
Chuguang Pan
Chuguang Pan am 10 Jun. 2025
@Matt J. Thanks for your detailed reply, your answer is helpful.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Problem-Based Optimization Setup finden Sie in Help Center und File Exchange

Produkte


Version

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by