help-glpk
[Top][All Lists]
Advanced

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

[Help-glpk] Re: Intermediate solutions


From: Carlos Javier Sosa Gonzalez
Subject: [Help-glpk] Re: Intermediate solutions
Date: Sun, 29 Jun 2003 02:05:57 +0100 (WET DST)

Hi, me again.

I have done your recomendations, but I have several intermediate solutions
that the problem said LPX_I_FEAS, and it violates several constrains.
On the other hand the final solution report gives a feasible solution
that satifies all constrains.

The code added is:

int inter_sol = 0;

void write_intermediate_solution(MIPTREE *tree)
{
  LPX   *lp;
  FILE  *file;
  int    col;
  int    ncols;

  lp = (LPX *)tree->info;

  if((lp->i_stat == LPX_I_FEAS)&&(tree->found)) {
    file = fopen("intermediate.out", "a");
    
    fprintf(file,"\nStart Solution %d %d\n", inter_sol,
                 lpx_get_mip_obj(lp));
    ncols = lpx_get_num_cols(lp);
    for(col = 1; col <= ncols; col++){
      fprintf(file, "%s %d\n",
              lpx_get_col_name(lp, col),
              (int)lpx_get_mip_col(lp, col));
    }
    fprintf(file,"END\n");
    
    fclose(file);
    inter_sol++;
  }
}

...

         case MIP_V_BINGO:
            /* better integer feasible solution has been found */
            /* copy components of this solution to the original problem
               object */
            {  int k;
               mip->i_stat = LPX_I_FEAS;
               for (k = 1; k <= tree->orig_m + tree->orig_n; k++)
                  mip->mipx[k] = tree->best[k];
            }
            write_intermediate_solution(tree);
            break;


Thanks in advance,
Javier Sosa


On Tue, 24 Jun 2003, [windows-1251] "Andrew Makhorin[windows-1251] "  wrote:

> >* Are these non-optimal solutions of the problem? or can they violate any
> >problem constrain or bound? are they feasible solutions?
> 
> Each line printed after the message "Integer optimization begins..."
> correspond to best integer feasible solution known at the current point.
> "Integer feasible" means the solution satisfies to all constraints and
> all integer variables have integral values.
> 
> >* If they are solutions of the problem, how can I access to these
> >MIP non-optimal solutions?
> 
> You cannot do that on api level. However you can add your code directly
> in the b&b driver as explained below.
> 
> Get into the module glplpx6c.c which is a b&b driver (lpx_integer) and
> find the following fragment (lines 466-475 in glpk 4.0):
> 
>          case MIP_V_BINGO:
>             /* better integer feasible solution has been found */
>             /* copy components of this solution to the original problem
>                object */
>             {  int k;
>                mip->i_stat = LPX_I_FEAS;
>                for (k = 1; k <= tree->orig_m + tree->orig_n; k++)
>                   mip->mipx[k] = tree->best[k];
>             }
>             break;
> 
> This fragment is executed whenever the b&b solver discovers a new integer
> feasible solution which is better than the currently known one.
> 
> You should add your code immediately before the break statement. At that
> point 'mip' is a pointer to your problem object passed to the routine
> lpx_integer. Using that pointer you can access components of the current
> mip solution (which is integer feasible) with the following routines:
> 
> lpx_get_num_rows - obtain number of auxiliary variables (rows);
> 
> lpx_get_num_cols - obtain number of structural variables (columns);
> 
> lpx_get_mip_obj - obtain value of the objective function;
> 
> lpx_get_mip_row - obtain value of i-th auxiliary variable (row);
> 
> lpx_get_mip_col - obtain value of j-th structural variable (column).
> 
> Note that you must not change the problem object within the b&b driver.
> 

--
 Carlos Javier Sosa González  E.T.S.I. de Telecomunicación
  address@hidden         Campus Universitario de Tafira, Pab. A, Desp. 301 
  Tel.: +34 928 457 324       Univ. de Las Palmas de Gran Canaria
  Fax : +34 928 451 243       35017 Las Palmas de Gran Canaria
  ICQ : 1756350985            Canary Islands. SPAIN





reply via email to

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