Hi,
I am currently using winglpk to detect if a small integer inequality system is 
feasible. No objective function just feasibility.
If the system is found to be feasible then I call glpk for each condition in 
the system with that condition removed and instead specified as the objective 
function.

So for example if one of my conditions is a - b + c >= 3 then I remove that 
condition and have an objective function of a - b + c and find its minimum.
If it's minimum is >= 3  I conclude the condition is redundant and remove it 
(it wasn't limiting the problem).
If redundant the condition is removed and the attempts at reduction continue.

I do this in a program with a very large number of systems. I currently rebuild 
the problem from scratch for each condition (glp_erase_prob first).
I want to improve the performance of this. I would like to have some input on 
what might be the best way to do this.
I can see I could delete rows, update the objective and optimize again. I would 
have to tracks the rows used.
Is there a way to use something like glp_analyze_bound to obtain information I 
could use for this?

I am calling glpk from 256 threads concurrently. This seems to work just fine 
but the documentation suggests it's not thread safe. I am assuming this is for 
sharing a lp program between threads rather than having a problem per thread? I 
only change things relating to a problem (glp_prob* type calls).
Thanks.
Neill.

Reply via email to