[Bonmin] does cpu time limit change the result?
Giuseppe Aprea
giuseppe.aprea at gmail.com
Thu Jul 9 07:40:42 EDT 2009
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