help-glpk
[Top][All Lists]
Advanced

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

Re: [Help-glpk] How to provide to the GLPK MIP solver a integer feasible


From: Giorgio Sartor
Subject: Re: [Help-glpk] How to provide to the GLPK MIP solver a integer feasible solution
Date: Sat, 13 Apr 2013 18:52:59 +0200

Ok...I tried to solve my problem in another way. I used:

void callback(glp_tree *tree, void *info){

    switch(glp_ios_reason(tree)) {

        case GLP_IHEUR: glp_ios_heur_sol(tree, initsol);break;

        case GLP_IBINGO: glp_ios_heur_sol(tree, initsol);break;

        default: break;

    }

}

GLP_IBINGO is thrown if the presolver finds the optimal solution of the LP relaxation. I recall that GLP_IHEUR is thrown if the optimal solution to the LP relaxation is not found by the presolver. So I should be able to lead an initial solution. I should.....but it doesn't work...

Moreover, I would want to try the routine glp_read_mip. Does anyone try it?? Does anyone know how it works?? The manual is very synthetic on this routine and it only says that it reads MIP solution from a file. It doesn't say where that solution goes and how it is used by the solver.

Gioker



2013/4/9 Giorgio Sartor <address@hidden>
Thanks Raniere and Haroldo...

but my problem is that GLP_IHEUR is always OFF (or FALSE) because the presolver always finds the optimal solution to the LP relaxation, so the callback is never "called". How can I bypass that problem?

Gioker


2013/4/9 Haroldo Santos <address@hidden>
Yes, it can be done using callbacks, but it would be nice if GLPK could:

- read from command line (glpksol)
- enter in MathProg



On Mon, Apr 8, 2013 at 10:36 PM, Raniere Silva <address@hidden> wrote:
Hi Giorgio,

> I have a model to which I can provide a initial feasible solution.
> How can I do that?

I do long time ago (about 3 years).

> Initially I tried with glp_read_mip:

I didn't use that. Hope that some one can help you with that.

> The second attempt was with the callback routine:
>
> void callback(glp_tree *tree, void *info){
>     switch(glp_ios_reason(tree)) {
>         case GLP_IHEUR: glp_ios_heur_sol(tree, initsol);break;
>         default: break;
>     }
> }
>
> where initsol was the integer feasible array solution. The code was:
> ...
> glp_iocp parm;
> glp_init_iocp(&parm);
> parm.cb_func = callback;
> glp_simplex(mip, NULL);
> glp_intopt(lp, &parm)
> ...

I used the callack function below:

void callback(glp_tree *tree, void *info){
    if(glp_ios_reason(tree) == GLP_IHEUR && glp_ios_curr_node(tree) == 1){
        glp_ios_heur_sol(tree, info);
    }   /* -----  end if  ----- */

    return ;
}

Raniere

_______________________________________________
Help-glpk mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-glpk



--
=============================================================
Haroldo Gambini Santos
Computing Department
Universidade Federal de Ouro Preto - UFOP
email: haroldo [at ] iceb.ufop.br
home/research page: www.decom.ufop.br/haroldo

_______________________________________________
Help-glpk mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-glpk




reply via email to

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