Effacer les filtres
Effacer les filtres

Specify initial condition for linprog?

8 vues (au cours des 30 derniers jours)
Ahmad Abuaish
Ahmad Abuaish le 10 Août 2022
Modifié(e) : Matt J le 12 Août 2022
Hello there,
I am using `linprog` to solve a linear program. The solution to the program are mostly zeros. Also, I have a version of the problem with zero cost, i.e., constraint satisfaction problem, again, with mostly zeros solution. It takes 7 and 16 seconds, respectively, to solve those two problems. I figured I would set the initial condition for `linprog` to zeros as it may speed up convergence. However, it appears that for new versions of MATLAB, `linprog` stopped supporting the initial condition argument. When I pass an initial condition argument following this old api, I get the following warning:
The dual-simplex algorithm uses a built-in starting point; ignoring supplied X0.
Is there a way to set the initial condition for the `linprog` solver in another way?
Kind regards, and I look forward to hearing from you soon.

Réponses (2)

Walter Roberson
Walter Roberson le 10 Août 2022
Modifié(e) : Walter Roberson le 11 Août 2022
Use the options to set the Algorithm to interior-point
  3 commentaires
Walter Roberson
Walter Roberson le 11 Août 2022
I just checked the code, and there is no work-around (sort of editing the code.)
Ahmad Abuaish
Ahmad Abuaish le 11 Août 2022
I see. Thanks for the prompt responses.

Connectez-vous pour commenter.


Matt J
Matt J le 11 Août 2022
Modifié(e) : Matt J le 11 Août 2022
You can try adding the inequality constraint f.'*x<=f.'*x0.
  2 commentaires
Ahmad Abuaish
Ahmad Abuaish le 11 Août 2022
I do not think is going to work becuase I want to start with x0=zeros(n,1), as I expect the majority of solution to be zeros. I think the defualt behavour of linprog is start from ones(n,1).
Walter has a short comment in the parentheses about changing the code. In the linprog code, x0 is omitted but I added it the the problem strcut, as shown below. It does not seem to change the behavour of the solver. I will resort to c++ for now, as I think that my LP should run faster.
Best,
problem.f = f;
problem.Aineq = A;
problem.bineq = B;
problem.Aeq = Aeq;
problem.beq = Beq;
problem.lb = lb;
problem.ub = ub;
problem.options = algoptions;
problem.solver = 'linprog';
problem.x0 = x0; % added at line 352
Matt J
Matt J le 12 Août 2022
Modifié(e) : Matt J le 12 Août 2022
I do not think is going to work becuase I want to start with x0=zeros(n,1)
The only reason it wouldn't work is if x0 is infeasible with respect to the other constraints.

Connectez-vous pour commenter.

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by