control max iteration of BMI

115 views
Skip to first unread message

Mojtaba Noori Manzar

unread,
May 27, 2015, 1:45:13 PM5/27/15
to yal...@googlegroups.com
I  solved a BMI problem with YALMIP and TOMLAB(PENBMI),

Could you tell me how can I control the maximum iteration of :
Outer Iterations
Inner Iterations
Linesearch steps

I used   "solvesdp( [] ,[], options)"    but I dont know how to control maximum iteration through "options" 

Thanks alot in advance
Best Wishes,
Mojtaba

Mark L. Stone

unread,
May 27, 2015, 3:48:11 PM5/27/15
to yal...@googlegroups.com
>> opt=sdpsettings('solver','penbmi');
>> opt.penbmi
ans =
             DEF: 1
    PBM_MAX_ITER: 50
     UM_MAX_ITER: 100
          OUTPUT: 1
           DENSE: 1
              LS: 0
            XOUT: 0
            UOUT: 0
    NWT_SYS_MODE: 0
       PREC_TYPE: 0
          DIMACS: 0
         TR_MODE: 0
              U0: 1
              MU: 0.7000
             MU2: 0.5000
       PRECISION: 1.0000e-06
           P_EPS: 1.0000e-04
            UMIN: 1.0000e-14
           ALPHA: 0.0100
              P0: 0.1000
          PEN_UP: 0.5000
        ALPHA_UP: 1
     PRECISION_2: 1.0000e-06
      CG_TOL_DIR: 0.0500

Look in the BMI manual and find which parameters you want to change. So for instance
sdpsettings('solver','penbmi','penbmi.PBM_MAX_ITER',300)
If you want to set PBM_MAX_ITER to 300 which is max number of iterations of overall (outer) algorithm.
Similarly, UM_MAX_ITER for max number of unconstrained minimization (I guess, inner iterations).
And LS 0 for linesearch off and 1 for linesearch on, but I don't see control on number of linesearch steps.

So, for instance,

sdpsettings('solver','penbmi','penbmi.PBM_MAX_ITER',300,'penbmi.PBM_MAX_ITER',500,'penbmi.linesearch',1)

Mojtaba Noori Manzar

unread,
May 28, 2015, 3:02:31 AM5/28/15
to yal...@googlegroups.com
Dear Mark,

Many thanks for your answer, But problems of 

Inner Iterations
Linesearch steps

still exist. apparently UM_MAX_ITER doesn't control Inner Iterations and I have a problem with Linesearch steps too.
I can't find anything helpful for Inner Iterations in BMI manual .

All the Best
Mojtaba 

********************************************************************************
F(x_24) =                       -5.8743587115729492E+012
f(x_24) =                       -5.8743587115729639E+012
||f(x_24) -  F(x_24)|| =         1.4648437500000000E-002
||f(x_24) -  f(x_23)|| =         0.0000000000000000E+000
Feasibility (BMI)                9.4484504562242389E+007
Slackness   (BMI)                5.4984066449375000E+009
||grad_x(L(x,U))||               5.8118761468155526E+007
lambda_min(hess_x(L(x,U)))  >=  -0.0000000000000000E+000
Outer Iterations                                      24
Inner Iterations                                     593
Linesearch steps                                    7051
Start time                      Thu May 28 11:16:23 2015
End time                        Thu May 28 11:18:40 2015
Real time                              0 h  2 min 17 sec
Process time (total)                         137.621 sec
Unconstrained minimization                   137.609 sec
      - feval                                  0.866 sec
      - feval (sparse chol)                        0 sec
      - geval                                   0.84 sec
      - heval                                134.078 sec
      - heval (sparse chol)                        0 sec
      - dense chol                             1.817 sec
      - sparse chol                                0 sec
      - eigenvalue                                 0 sec
Multiplier update                                  0 sec
Penalty update                                 0.003 sec
Feasibility check                              0.001 sec
      - dense chol                                 0 sec
      - sparse chol                                0 sec
********************************************************************************

Mark L. Stone

unread,
May 28, 2015, 10:23:50 AM5/28/15
to yal...@googlegroups.com
This is now a PENBMI matter, not a YALMIP matter. You can try contacting PENBMI developers, or at least make sure you have latest PENBMI documentation.\
Take a look at opt.penlab .  This shows parameters like you're interested in.  Maybe PENBMI doesn't even allow control over al the parameters you want?

>> opt.penlab
ans =
                  outlev: 2
             outlev_file: 5
            out_filename: 'penm_log.txt'
                user_prn: []
               maxotiter: 100
               maxiniter: 100
          penalty_update: 0.5000
      penalty_update_bar: 0.3000
         mpenalty_update: 0.5000
            mpenalty_min: 1.0000e-06
         mpenalty_border: 1.0000e-06
          max_outer_iter: 100
        outer_stop_limit: 1.0000e-06
          kkt_stop_limit: 1.0000e-04
              mlt_update: 0.3000
             mmlt_update: 0.1000
                   uinit: 1
               uinit_box: 1
                uinit_eq: 0
                    umin: 1.0000e-10
                   pinit: 1
               pinit_bar: 1
              usebarrier: 0
               xinit_mod: 0
          max_inner_iter: 100
        inner_stop_limit: 0.0100
      unc_dir_stop_limit: 0.0100
              unc_solver: 0
          unc_linesearch: 3
       eq_dir_stop_limit: 0.0100
               eq_solver: 0
           eq_linesearch: 3
      eq_solver_warn_max: 4
            ls_short_max: 3
    min_recover_strategy: 0
         min_recover_max: 3
                   phi_R: -0.5000
             max_ls_iter: 20
           max_lseq_iter: 20
              armijo_eps: 0.0100
               ldl_pivot: 1.0000e-05
             pert_update: 2
                pert_min: 1.0000e-06
            pert_try_max: 50
             pert_faster: 1
           chol_ordering: 1
               luk3_diag: 1

Mark L. Stone

unread,
May 28, 2015, 10:36:52 AM5/28/15
to yal...@googlegroups.com
PENLAB is written bty the same developers as PENBMI.

It looks like in PENLAB you want max_outer_iter and max_inner_iter:.  There are several items relating to linesaerch; I'll let you figure outr what's what (unconstrained line search (?) unc_linesaerch , (equality constrained?) line search eq_linesearch.  What are ls_short_max , max_ls_iter, max_lseq_iter ?

Johan Löfberg

unread,
May 28, 2015, 5:34:58 PM5/28/15
to yal...@googlegroups.com
YALMIP does not support the TOMLAB distribution of PENBMI. If it works, fine, but if it doesn't work, you will have to find out why your self by debugging the code.
Reply all
Reply to author
Forward
0 new messages