[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-glpk] Terminating GLPK early

From: Andrew Makhorin
Subject: Re: [Help-glpk] Terminating GLPK early
Date: Wed, 24 Aug 2011 17:02:28 +0400

> I am currently modifying the GLPKMEX interface to GLPK (Matlab
> interface) and wish to be able to terminate a call to GLPK if a user
> was to say push Ctrl-C, and return the current best solution. I have
> read through the documentation and have tried glp_error() however this
> also causes Matlab to crash (not sure if I have done something wrong),
> but wondered if there was a cleaner way? 
> I am imagining an event handler which could be passed to GLPK before
> glp_simplex() or another solver is called, which is then called by the
> solver each iteration (with perhaps some runtime information), and a
> return code passed back to indicate whether to continue or stop.
> I apologize if this already exists in GLPK however I have been unable
> to find it!

No, such feature does not exist in glpk, and it would be problematic to
implement it in a way which you wish. Currently only glp_intopt allows
correct asynchronous termination. To implement that you need to pass to
glp_intopt your own callback, which checks a termination flag every time
it is called from glp_intopt, and if that flag is set (by your signal
handler when it catches the SIGTERM signal), it should return a non-zero
to tell glp_intopt to terminate with return code GLP_ESTOP, in which
case the best solution will be correctly stored in the problem object.
Other solvers (glp_simplex and glp_interior) do not provide such
feature, so the only way to terminate them is to catch SIGTERM, call
longjmp, and then call glp_free_env to free all resources used by glpk
routines (e.g. memory allocated by glp_simplex) before return to a
Matlab control program.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]