[Symphony] Fwd: Warm Start problems detected when changingObjective function and running with Gap Limit>=0 and correctionproposal

Ashutosh Mahajan asm4 at lehigh.edu
Fri May 15 11:36:16 EDT 2009


i recently fixed some parameter settings that might be causing the crash
during warmstart. these changes are still in trunk and havent yet merged into
stable.  we are hoping to merge these changes into stable and make a release
soon. 

if you can compile and check with the current trunk, that would confirm
whether the issue has been fixed. if that is too difficult, send me an output
(on my email address) with verbosity level 20 and i will try to catch the
error from there.

ashutosh



On Thu, 14 May 2009, Prieto Vivanco, Juan wrote:

> Dear Mr. Mahajan.
> 
> Sorry for the delay in the answer.
> 
> No, we are not using mps to define the model, we are using Matlab to prepare the matrixes.
> 
> I can either send you a Matlab exe with the whole problem, where you can run the case with different verbosity levels (you will need to install, Matlab Runtime).
> Other option you propose is to send you the verbosity output, in that case i would need you to tell me the level of verbosity you consider appropriate for the analisys.
>  
> Tell me please what do you prefer me to send you?.
> Thank you for your help.
> 
> Best Regards. 
> 
> Juan Prieto Vivanco
>  
> Gerente Área Previsión y Optimización
> Tecnologías Energéticas
> 
>  
> Parque empresarial La Finca, Edificio 4
> Avda de la Finca s/n
> 28223 Pozuelo de Alarcon
> MADRID 
> Tlf directo : 912 579 023
> Móvil: 691 513 017
> Tlf centralita: 912 102 000 (ext: 49023).
> Fax: 91 210 20 10
> jprietov at indra.es
> www.indra.es                                                                                                                                                                                                                                                                                                                                                                                                      
> P Por favor, considere su responsabilidad medioambiental antes de imprimir este e-mail     
>  
> -----Mensaje original-----
> De: Ashutosh Mahajan [mailto:asm4 at Lehigh.EDU] 
> Enviado el: lunes, 04 de mayo de 2009 17:51
> Para: PrietoVivanco at lehigh.edu; Prieto Vivanco, Juan; Martínez Belinchón, Carlos
> CC: symphony at list.coin-or.org
> Asunto: Re: Fwd: [Symphony] Warm Start problems detected when changingObjective function and running with Gap Limit>=0 and correctionproposal
> 
> hi Prieto,
> 
> i looked into the problem and was not able to repeat your observation.
> probably because im not changing the objective function like you are. are you
> using an MPS or an LP file as an input? could you send me one if possible? it
> would help me locate the problem more easily. otherwise, just send me the
> output of symphony and i will try to guess from there. 
> 
> The find_tree_lb() function returns a lower bound equal to the upper bound
> only when there are no more nodes left in the search-tree or when the lower
> bound is actually equal to the upper bound. both seem to be correctly detected
> in the function. could you tell me what was the optimal solution value in the
> original problem?
> 
> ashu 
> 
> 
> > From: Prieto Vivanco, Juan <jprietov at indra.es>
> > 
> > 
> > We are using SYMPHONY?s version 5.1.8, for solving a MIP problem with
> > warm start, and we have found the following problem:
> > 
> > ·         We do a first solving keeping warm-start information and
> > once a feasible solution is found, we modify the objective function
> > and call  sym_warm_solve with a certain Gap_limit>=0.
> > 
> > If we set a Gap_limit>0 the call to sym_warm_solve returns immediately
> > with the message of ?Optimal solution found? and the same initial
> > solution without further optimization.
> > 
> > If we run the same case with Gap_Limit= -1 the solver iterates several
> > times with gaps in each iteration much greater than the Gap_limit
> > parameter.
> > 
> > 
> > 
> > I have traced the problem comparing execution with and without
> > Gap_limit and everything is the same up to the first call to function
> > ?shall_we_dive? were the tm->ub=1e7 and the tm->lb=infinity.
> > 
> > At the beginning of the function the call to find_tree_lb(tm) makes
> > tm->lb=tm->ub.
> > 
> > Having ub and lb equal and Gap_limit>=0 makes  always the function
> > return the value DO_NOT_DIVE and stopping the optimization, does not
> > matter with value of Gap_limit you use.
> > 
> > 
> > 
> > If Gap_limit=-1 the function returns CHECK_BEFORE_DIVE and
> > optimization continues.
> > 
> > 
> > 
> > I have also tested the last version 5.1.10 and the same problem appears.
> > 
> > 
> > 
> > The only way I have found of solving the problem is modifying the
> > function ?shall_we_dive? included in the file ?tm_func.c?  of the
> > TreeManager directory.
> > 
> > I include adjoin the modification proposed marked with ?>>>?.
> > 
> > 
> > 
> > 
> > 
> > ________________________________________________________
> > 
> > char shall_we_dive(tm_prob *tm, double objval)
> > 
> > {
> > 
> >    char dive;
> > 
> >    int i, k;
> > 
> >    double rand_num, average_lb;
> > 
> >    double cutoff = 0;
> > 
> > 
> > 
> >    find_tree_lb(tm);
> > 
> > 
> > 
> >    if (tm->par.time_limit >= 0.0 &&
> > 
> >         wall_clock(NULL) - tm->start_time >= tm->par.time_limit){
> > 
> >       return(FALSE);
> > 
> >    }
> > 
> > 
> > 
> >    if (tm->par.node_limit >= 0 && tm->stat.analyzed >= tm->par.node_limit){
> > 
> >       return(FALSE);
> > 
> >    }
> > 
> > 
> > 
> >    if (tm->has_ub && (tm->par.gap_limit >= 0.0)){
> > 
> > >>>            if (tm->ub>tm->lb) {// PVJ 13/04/2009
> > 
> >             if (100*(tm->ub-tm->lb)/tm->ub <= tm->par.gap_limit){
> > 
> >                   return(FALSE);
> > 
> >                   }
> > 
> > >>>            }
> > 
> >    }
> > 
> > _______________________________________________________________
> > 
> > 
> > 
> > 
> > 
> > I also included detail of the calling program.
> > 
> > 
> > 
> > int error_user = sym_explicit_load_problem(env, n_cols, n_rows, start,
> > index, value, col_lb,
> > 
> >                        col_ub, int_vars, objective1, NULL, row_sense,
> > 
> >                        row_rhs, row_range, TRUE);
> > 
> > 
> > 
> > sym_set_str_param(env,"gap_limit",gap_limit);
> > 
> > sym_set_int_param(env, "keep_warm_start", TRUE);
> > 
> > sym_set_int_param(env, "find_first_feasible", TRUE);
> > 
> > sym_set_int_param(env, "node_selection_strategy", DEPTH_FIRST_SEARCH);
> > 
> > 
> > 
> > int cp_num;
> > 
> > int ncutpools = sym_create_permanent_cut_pools(env, &cp_num);
> > 
> > 
> > 
> > int rvalue = sym_solve(env);
> > 
> > ws = sym_get_warm_start(env,true);
> > 
> > 
> > 
> > sym_set_int_param(env, "node_selection_strategy", LOWEST_LP_FIRST);
> > 
> > sym_set_int_param(env,"do_reduced_cost_fixing",FALSE);
> > 
> > 
> > 
> > sym_set_int_param(env, "find_first_feasible", FALSE);
> > 
> > rvalue = sym_set_int_param(env, "node_limit", -1);
> > 
> > 
> > 
> > for (int i=0; i<n_cols; i++){
> > 
> >            sym_set_obj_coeff(env, i, objective2[i]);
> > 
> > }
> > 
> > rvalue = sym_warm_solve(env);
> > 
> > 
> > 
> > 
> > 
> > Please if posible confirm if there is any other possible way of
> > avoiding the problem without modifying the code or if considered
> > adecuate include the correction in next version.
> > 
> > 
> > 
> > Please contact me for any further clarification.
> > 
> > 
> > 
> > Thanks for the help and the  excelent work done in the library.
> > 
> > 
> > 
> > Best Regards.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Juan Prieto Vivanco
> > 
> > 
> > 
> > Forecast & Optimization Manager
> > 
> > Energy Technologies.
> > 
> > 
> > 
> > Parque empresarial La Finca, Edificio 4
> > 
> > Avda de la Finca s/n
> > 
> > 28223 Pozuelo de Alarcon
> > 
> > MADRID
> > 
> > SPAIN
> > 
> > Tlf directo : 912 579 023
> > 
> > Móvil: 691 513 017
> > 
> > Tlf centralita: 912 102 000 (ext: 49023).
> > 
> > Fax: 91 210 20 10
> > 
> > jprietov at indra.es
> > 
> > www.indra.es
> > 
> > P Por favor, considere su responsabilidad medioambiental antes de
> > imprimir este e-mail
> > 
> > 
> > 
> > _______________________________________________
> > Symphony mailing list
> > Symphony at list.coin-or.org
> > http://list.coin-or.org/mailman/listinfo/symphony
> > 
> > 
> > 
> > 
> > -- 
> > Regards
> > Ashutosh Mahajan
> > www.lehigh.edu/~asm4
> 
> 
> 
> --
> regards
> Ashutosh Mahajan
> http://coral.ie.lehigh.edu/~asm4
> 

--
regards
Ashutosh Mahajan
http://coral.ie.lehigh.edu/~asm4





More information about the Symphony mailing list