[Bonmin] does cpu time limit change the result?

Pierre Bonami pierre.bonami at gmail.com
Thu Jul 9 07:47:10 EDT 2009


OK Thanks. Ticket 21 is only fixed in trunk at the moment. Let me know  
if the problem stops with the options I gave you. If it does I will  
try to get the changes from ticket 21 in the stable version you are  
using.
Best,
Pierre
On Jul 9, 2009, at 1:40 PM, Giuseppe Aprea wrote:

> I followed instructions here:
> https://projects.coin-or.org/Bonmin/wiki/GettingStarted
> Anyway that's svn output:
>
> $ svn info
> Path: .
> URL: https://projects.coin-or.org/svn/Bonmin/stable/1.0
> Repository Root: https://projects.coin-or.org/svn/Bonmin
> Repository UUID: 6751f6c9-ef17-0410-b10f-d507236c89fd
> Revision: 1448
> Node Kind: directory
> Schedule: normal
> Last Changed Author: pbonami
> Last Changed Rev: 1445
> Last Changed Date: 2009-06-21 15:12:29 +0100 (Sun, 21 Jun 2009)
>
> Cheers,
>
> giuseppe
>
>
>
> On Thu, Jul 9, 2009 at 12:33 PM, Pierre  
> Bonami<pierre.bonami at gmail.com> wrote:
>> Did you download it from stable or trunk?
>> You can check with svn info.
>>
>> On Jul 9, 2009, at 1:30 PM, Giuseppe Aprea wrote:
>>
>>> Hi,
>>>
>>> Thanks a lot for answering.
>>> I am running the code after changing the options according to your
>>> suggestion. I'll
>>> let you know about the result.
>>> As for the version I don't know exactly. I tried
>>> $ bonmin -v
>>> bonmin (Linux 2.6.24-19-generic), ASL(20090430)
>>>
>>> I am not sure it helps. I used svn to download the software about  
>>> 3-4
>>> weeks ago.
>>> Is there another way(or file to open) to check the version?
>>>
>>> Thanks again,
>>>
>>> giuseppe
>>>
>>>
>>> On Thu, Jul 9, 2009 at 11:56 AM, Pierre Bonami<pierre.bonami at gmail.com 
>>> >
>>> wrote:
>>>>
>>>> Hi Guiseppe,
>>>> Can you try setting
>>>> bonmin.number_strong_branch_root 1
>>>> bonmin.number_strong_branch 1
>>>> bonmin.time_limit 1000
>>>> and see if it stops.
>>>> Which version are you using now?
>>>> On Jul 8, 2009, at 3:25 PM, Giuseppe Aprea wrote:
>>>>
>>>>> I know, it's again me. Please be patient and forgive me.
>>>>>
>>>>> I am still not able to retrieve the solution from the code. It  
>>>>> seems I
>>>>> can't stop
>>>>> bonmin.
>>>>>
>>>>> Here is my main:
>>>>>
>>>>>
>>>>>
>>>>> BonminSetup bonmin;
>>>>> bonmin.initializeOptionsAndJournalist();
>>>>> //Register an additional option
>>>>> bonmin.roptions()->AddStringOption2("print_solution","Do we print
>>>>> the solution or not?",
>>>>>                              "yes",
>>>>>                              "no", "No, we don't.",
>>>>>                              "yes", "Yes, we do.",
>>>>>                              "A longer comment can be put here");
>>>>>
>>>>>
>>>>>
>>>>> // Here we can change the default value of some Bonmin or Ipopt  
>>>>> option
>>>>> //bonmin.options()->SetNumericValue("bonmin.time_limit", 5);
>>>>> //changes bonmin's time limit
>>>>> //bonmin.options()->SetStringValue("mu_oracle","loqo");
>>>>>
>>>>> //Here we read several option files
>>>>> bonmin.readOptionsFile("Mybonmin.opt");
>>>>> bonmin.readOptionsFile();// This reads the default file  
>>>>> "bonmin.opt"
>>>>>
>>>>> // Options can also be set by using a string with a format similar
>>>>> to the bonmin.opt file
>>>>> // bonmin.readOptionsString("bonmin.algorithm B-BB\n");
>>>>>
>>>>> // Now we can obtain the value of the new option
>>>>> int printSolution;
>>>>> bonmin.options()->GetEnumValue("print_solution",  
>>>>> printSolution,"");
>>>>> if(printSolution == 1){
>>>>>  tminlp->printSolutionAtEndOfAlgorithm();
>>>>> }
>>>>>
>>>>> //Now initialize from tminlp
>>>>> bonmin.initialize(GetRawPtr(tminlp));
>>>>>
>>>>>
>>>>>
>>>>> //Set up done, now let's branch and bound
>>>>> double time1 = CoinCpuTime();
>>>>> double sol[VARSNUM];
>>>>>
>>>>> try {
>>>>>  Bab bb;
>>>>>  bb(bonmin);//process parameter file using Ipopt and do branch and
>>>>> bound using Cbc
>>>>>     if(bb.bestSolution()!=NULL){
>>>>>             for(i=0;i<VARSNUM;i++){
>>>>>                     sol[i]=*(bb.bestSolution()+i);
>>>>>                     printf("\n%f",sol[i]);
>>>>>             }
>>>>>     }
>>>>>     else{
>>>>>             printf("\n\n\tNo feasible solution!\n\n");
>>>>>     }
>>>>>     printf("\n");
>>>>>
>>>>> }
>>>>> catch(TNLPSolver::UnsolvedError *E) {
>>>>>  //There has been a failure to solve a problem with Ipopt.
>>>>>  std::cerr<<"Ipopt has failed to solve a problem"<<std::endl;
>>>>> }
>>>>> catch(OsiTMINLPInterface::SimpleError &E) {
>>>>>  std::cerr<<E.className()<<"::"<<E.methodName()
>>>>>          <<std::endl
>>>>>          <<E.message()<<std::endl;
>>>>> }
>>>>> catch(CoinError &E) {
>>>>>  std::cerr<<E.className()<<"::"<<E.methodName()
>>>>>          <<std::endl
>>>>>          <<E.message()<<std::endl;
>>>>> }
>>>>>
>>>>>
>>>>> return 0;
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> here is the option file:
>>>>>
>>>>>
>>>>>
>>>>> print_solution yes
>>>>> #derivative_test second-order
>>>>> bonmin.bb_log_level 5
>>>>> bonmin.algorithm B-BB
>>>>> #print_level 6
>>>>> max_cpu_time 7200
>>>>> #bound_relax_factor 1e-6
>>>>> #bonmin.iteration_limit 4
>>>>> bonmin.time_limit 60
>>>>>
>>>>>
>>>>>
>>>>> and this is the output (the process is running since 11 hours  
>>>>> despite
>>>>> bonmin.time_limit set to 60!!!!):
>>>>>
>>>>> CppExample$ make clean ; make ;time ./CppExample
>>>>> rm -rf CppExample MyBonmin.o MyTMINLP.o
>>>>> g++ -g -O0 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors
>>>>> -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall
>>>>> -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas
>>>>> -I`echo /home/gaprea/usr/local/include/coin` -I`echo
>>>>> /home/gaprea/usr/local/include/coin/ipopt`  -c -o MyBonmin.o  
>>>>> `test -f
>>>>> 'MyBonmin.cpp' || echo '/'`MyBonmin.cpp
>>>>> MyBonmin.cpp: In function ‘int main(int, char**)’:
>>>>> MyBonmin.cpp:239: warning: unused variable ‘time1’
>>>>> g++ -g -O0 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors
>>>>> -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall
>>>>> -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas
>>>>> -I`echo /home/gaprea/usr/local/include/coin` -I`echo
>>>>> /home/gaprea/usr/local/include/coin/ipopt`  -c -o MyTMINLP.o  
>>>>> `test -f
>>>>> 'MyTMINLP.cpp' || echo '/'`MyTMINLP.cpp
>>>>> bla=;\
>>>>>     for file in MyBonmin.o MyTMINLP.o; do bla="$bla `echo  
>>>>> $file`"; done;
>>>>> \
>>>>>     g++ -Wl,--rpath -Wl,/home/gaprea/usr/local/lib -g -O0
>>>>> -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit
>>>>> -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith
>>>>> -Wwrite-strings -Wconversion -Wno-unknown-pragmas   -o  
>>>>> CppExample $bla
>>>>> -L/home/gaprea/usr/local/lib -lbonmin -lipopt -lCbc -lCgl -lOsiClp
>>>>> -lOsi -lClp -lCoinUtils
>>>>>
>>>>>
>>>>> /home/gaprea/000_System_Biology/SOFTWARE/MINLP/Bonmin-1.0/build/ 
>>>>> ThirdParty/ASL/amplsolver.a
>>>>> -ldl -lm `cat
>>>>>
>>>>> /home/gaprea/usr/local/lib/../share/doc/coin/Ipopt/ 
>>>>> ipopt_addlibs_cpp.txt`
>>>>> `cat /home/gaprea/usr/local/lib/../share/doc/coin/Cgl/ 
>>>>> cgl_addlibs.txt`
>>>>> `cat /home/gaprea/usr/local/lib/../share/doc/coin/Osi/ 
>>>>> osi_addlibs.txt`
>>>>> `cat /home/gaprea/usr/local/lib/../share/doc/coin/Clp/ 
>>>>> clp_addlibs.txt`
>>>>> `cat
>>>>>
>>>>> /home/gaprea/usr/local/lib/../share/doc/coin/CoinUtils/ 
>>>>> coinutils_addlibs.txt`
>>>>>
>>>>>
>>>>>
>>>>> ******************************************************************************
>>>>> This program contains Ipopt, a library for large-scale nonlinear
>>>>> optimization.
>>>>> Ipopt is released as open source code under the Common Public  
>>>>> License
>>>>> (CPL).
>>>>>      For more information visit http://projects.coin-or.org/Ipopt
>>>>>
>>>>>
>>>>> ******************************************************************************
>>>>>
>>>>> NOTE: You are using Ipopt by default with the MUMPS linear solver.
>>>>>   Other linear solvers might be more efficient (see Ipopt
>>>>> documentation).
>>>>>
>>>>>
>>>>> NLP0012I
>>>>>           Num      Status      Obj             It       time
>>>>> NLP0013I     1        OPT         -75.00000003473977      492
>>>>>  890.812
>>>>> BON0001I 105 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I 104 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I 103 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I 102 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I 101 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>>
>>>>> ....................................
>>>>>
>>>>> BON0001I  13 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I  12 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I  11 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I  10 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   9 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   8 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   7 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   6 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   5 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   4 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   3 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   2 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   1 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0001I   0 up   0   0.00000000e+00  down   0   0.00000000e+00
>>>>> BON0002I upMultiplier = 1.000000e+00 downMultiplier = 1.000000e+00
>>>>> BON0003I   0 value = 3.214075e-01 upEstimate = 5.351865e-02
>>>>> downEstimate = 9.464813e-01 infeas = 5.351865e-02 value2 =
>>>>> 5.351865e-02
>>>>> BON0003I   1 value = 3.218285e-01 upEstimate = 5.457120e-02
>>>>> downEstimate = 9.454288e-01 infeas = 5.457120e-02 value2 =
>>>>> 5.457120e-02
>>>>> BON0003I   2 value = 3.218306e-01 upEstimate = 5.457658e-02
>>>>> downEstimate = 9.454234e-01 infeas = 5.457658e-02 value2 =
>>>>> 5.457658e-02
>>>>> BON0003I   3 value = 3.215331e-01 upEstimate = 5.383283e-02
>>>>> downEstimate = 9.461672e-01 infeas = 5.383283e-02 value2 =
>>>>> 5.383283e-02
>>>>>
>>>>> ......................................................
>>>>>
>>>>> BON0003I 104 value = 3.229850e-01 upEstimate = 5.746239e-02
>>>>> downEstimate = 9.425376e-01 infeas = 5.746239e-02 value2 =
>>>>> 5.746239e-02
>>>>> BON0003I 105 value = 3.229850e-01 upEstimate = 5.746239e-02
>>>>> downEstimate = 9.425376e-01 infeas = 5.746239e-02 value2 =
>>>>> 5.746239e-02
>>>>> BON0005I list_[  0] =   0 useful_[  0] = -3.214075e-01
>>>>> BON0005I list_[  1] =   1 useful_[  1] = -3.218285e-01
>>>>> BON0005I list_[  2] =   2 useful_[  2] = -3.218306e-01
>>>>>
>>>>> .........................................
>>>>>
>>>>> BON0006I list2[ 50] =  50 useful2[ 50] = 5.756897e-02
>>>>> BON0006I list2[ 51] =  68 useful2[ 51] = 5.706160e-02
>>>>> BON0006I list2[ 52] =  52 useful2[ 52] = 5.756941e-02
>>>>> BON0004I list_[    0] =    21, usefull_[    0] =
>>>>> -1.0620419692890424e+150  6.2041969289042376e-02
>>>>> BON0004I list_[    1] =    65, usefull_[    1] =
>>>>> -1.0603499841862923e+150  6.0349984186292338e-02
>>>>> BON0004I list_[    2] =    45, usefull_[    2] =
>>>>> -1.0580582195624974e+150  5.8058219562497460e-02
>>>>> BON0004I list_[    3] =    62, usefull_[    3] =
>>>>> -1.0579476520448998e+150  5.7947652044899711e-02
>>>>>
>>>>> ........................................................
>>>>>
>>>>> BON0004I list_[  103] =    86, usefull_[  103] =
>>>>> -3.2140746297613371e-01  5.3518657440334128e-02
>>>>> BON0004I list_[  104] =     0, usefull_[  104] =
>>>>> -3.2140746165193834e-01  5.3518654129845800e-02
>>>>> BON0004I list_[  105] =    23, usefull_[  105] =
>>>>> -3.1875385045788662e-01  4.6884626144716446e-02
>>>>> NLP0013I     2        OPT         -75.00000003322431      574
>>>>>  505.896
>>>>> NLP0013I     3        OPT         -74.9999999873914       252
>>>>>  241.371
>>>>> NLP0013I     4        OPT         -74.99999998750623      523
>>>>>  529.597
>>>>> NLP0013I     5        OPT         -75.00000003116291      437
>>>>>  382.544
>>>>> NLP0013I     6        OPT         -74.99999998735127      378
>>>>>  265.133
>>>>> NLP0013I     7        OPT         -74.99999998749557      519
>>>>>  439.447
>>>>> NLP0013I     8        OPT         -74.9999999875126       445
>>>>>  315.852
>>>>> NLP0013I     9        OPT         -74.9999999874956       439
>>>>>  493.555
>>>>> NLP0013I     10       OPT         -75.00000003005148      569
>>>>>  670.742
>>>>> NLP0013I     11       OPT         -75.00000003466486      296
>>>>>  317.04
>>>>> NLP0013I     12       OPT         -75.00000003310092      435
>>>>>  460.289
>>>>> NLP0013I     13       OPT         -74.99999998737427      253
>>>>>  198.54
>>>>> NLP0013I     14       OPT         -74.99999998728373      547
>>>>>  337.825
>>>>> NLP0013I     15       OPT         -75.00000003314065      436
>>>>>  421.158
>>>>> NLP0013I     16       OPT         -74.99999998751224      668
>>>>>  767.376
>>>>> NLP0013I     17       OPT         -75.00000003492561      475
>>>>>  744.463
>>>>> NLP0013I     18       OPT         -74.99999998738807      569
>>>>>  510.66
>>>>> NLP0013I     19       OPT         -74.99999998751285      757
>>>>>  643.148
>>>>> NLP0013I     20       OPT         -74.9999999874247       549
>>>>>  551.082
>>>>> NLP0012I
>>>>>           Num      Status      Obj             It       time
>>>>> NLP0013I     21       OPT         -75.00000003496038      450
>>>>>  454.336
>>>>> NLP0013I     22       OPT         -74.99999998752237      585
>>>>>  1072.19
>>>>> NLP0013I     23       OPT         -74.9999999874547       401
>>>>>  1041.68
>>>>> NLP0013I     24       OPT         -75.00000003262794      545
>>>>>  486.982
>>>>>
>>>>> ...............................................
>>>>>
>>>>> NLP0013I     86       OPT         -75.00000003314067      303
>>>>>  381.704
>>>>> NLP0013I     87       OPT         -74.99999998749439      165
>>>>>  281.238
>>>>> NLP0013I     88       OPT         -75.00000003234817      583
>>>>>  755.575
>>>>> NLP0013I     89       OPT         -74.99999998737553      325
>>>>>  291.038
>>>>> NLP0013I     90       OPT         -74.99999998737404      109
>>>>>  122.04
>>>>>
>>>>>
>>>>> according to me there is no reason why it should be still  
>>>>> running. I
>>>>> really think that
>>>>> Bonmin should have worked 60 secs in 11 hours. At least I have no
>>>>> reason to think
>>>>> different. I believe I have followed properly all instructions.
>>>>> max_cpu_time is set to
>>>>> 2 hours to give time ipopt to solve the nlp problem, and I also  
>>>>> tried
>>>>> to push bb_log_level
>>>>> to its maximum in order to peek in the solution but this is still
>>>>> unreachable for me.
>>>>> I have also tried to use the option iteration_limit (by the way,  
>>>>> this
>>>>> number has nothing
>>>>> to do with the numbers in the second column of the output, does  
>>>>> it?)
>>>>> but it seem that
>>>>> the right option to stop Bonmin should be bonmin.time_limit. Is  
>>>>> 60 sec
>>>>> too
>>>>> much?
>>>>>
>>>>> cheers,
>>>>>
>>>>> Giuseppe
>>>>
>>>>
>>
>>




More information about the Bonmin mailing list