Thanks for your answer Andrew.
When I have to remove a basic variable, I fix its bound using the GLP_FX
constant as Heinrich suggested, and when I have to remove a non-basic
constraint, I unbind it using GLP_FR, before removing them from the problem
object in a further iteration where the variable is no more basic or the
constraint becomes basic. I used this logic to obtain the output I sent in
the first e-mail. If I had directly removed from the problem object at
least either one basic variable or one non-basic constraint, the output
would have started at iteration 1 with an objective value of 0.
Note that the infeasibility value of 1995 at the first iteration must be
the cause of the rather high processing time. In this example really a lot
of variables and constraints were removed using the logic I described
(although now I don't know exactly how many).
The other possibility you give is making a variable non-basic (instead of
fixing its bounds) or making a constraint basic (instead of "freeing" its
bounds). Would it make GLPK solve the problem faster? How can it be done?
Is it just setting the status of the given variable/constraint? (but this
would make the basis invalid, wouldn't it?)

*Sylvain Fournier*
Analista de Pesquisa Operacional
*48 3239-2423*
WPLEX Software Ltda.
Rod SC 401 no. 8600 Corporate Park bloco 5 sala 101
88050-000 Santo Antônio de Lisboa, Florianópolis SC +55 48 3239-2400
wplex.com.br
[image: WPLEX]



2014-03-22 4:23 GMT-03:00 Andrew Makhorin <m...@gnu.org>:

>
> > Now my question is: should I solve the model from scratch in the case
> > I have to remove a lot of variables?
>
> Generally, not.
>
> > Or is there a parameter configuration I should use in my specific
> > case?
> >
>
> Glp_simplex always starts the search from the current basis which is
> provided in glp_prob by means of the statuses of rows and columns. This
> allows to continue the search (re-optimize) efficiently if you obtain an
> optimal basis, change the lp, and then call glp_simplex once again.
> However, in this case you need to make sure that the row/column statuses
> define a "correct" basis--the number of basic auxiliary/structural
> variables should be equal to the number of rows, and the basis matrix
> consisting of columns of basic variables, including unity ones for
> auxiliary variables, should be non-singular. For example, removing an
> active (more precisely, binding) constraint, i.e. a non-basic row, makes
> the basis incorrect. To avoid this you may either remove the row
> "logically" by making it free (unbounded) rather to remove it
> "physically", or make the row basic (non-binding) before removing it by
> changing the row/column statuses in an appropriate way.
>
>
>
>
_______________________________________________
Help-glpk mailing list
Help-glpk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to