[Ipopt] IpOpt code: Detereministic or Random across various runs?

Jonathan Hogg jonathan.hogg at stfc.ac.uk
Mon Dec 17 12:05:51 EST 2012


I'd try something along the lines of
OMP_NUM_THREADS=1 matlab -singleCompThread
when launching from the command line in linux to cover as many options 
as possible.

You can presumably monitor the number of threads being used, for example 
I tend to use
top -d 0.5

Jonathan

On 17/12/12 17:02, AliReza Khoshgoftar Monfared wrote:
>
> Thanks Vivek and Jonathan,
>
> I also suspect that this issue has something to do with MATLAB (or 
> settings of BLAS and LAPACK).
> My original MATLAB code should be single-threaded, but I am suspicious 
> that when I call Ipopt(), which uses the corresponding mex file, there 
> might be multiple threads involved.
> Is there a way to force a single thread in MATLAB though?
>
> Alireza
>
>
>     Might also be worth seeing if you can force everything to run
>     single-threaded and seeing if that has any effect. Some parallel
>     algorithms will produce different results on different runs, and even
>     small changes in the descend direction can produce different
>     results as
>     you describe.
>     Jonathan.
>     On 15/12/12 11:52, Vivek Periaraj wrote:
>     >/Maybe the data structures interfaced from MATLAB to IPOPT are in
>     different orders in each run? Sometimes the order in which the
>     variables are created affect the solution the algorithm converges
>     to in the end. Especially true when multiple optimal solutions exists.
>     />
>     >/Regards,
>     />/Vivek
>     />
>     >
>     >/Hi,
>     />
>     >/I have been trying to solve an optimization with Ipopt.
>     />
>     >/I'm using the MATLAB interface of Ipopt, and my optimization
>     problem is a
>     />/not so complicated quadratic problem satisfying a number of
>     distance
>     />/inequalities for some points.
>     />
>     >/I have noticed that in different cases of my problem, whether it
>     is solved
>     />/(status 0), detected infeasible (status 2) or exceeded maximum
>     iterations
>     />/(status -2), even if I run the code with the exact same initial
>     point and
>     />/exact same options, I get results that are different.
>     />/Now, I know that my problem does not have a unique solution,
>     e.g. in case
>     />/of instances that are solved completely I get different results
>     while all
>     />/satisfy the constraints. But still, I expect ipopt to give
>     />/me similar results when I run it with similar conditions.
>     />
>     >/Is there any option in Ipopt that accounts to randomness. Or is it a
>     />/behavior of MATLAB?
>     />
>     >/I have noticed that building Ipopt with various versions of BLAS
>     and LAPACK
>     />/does not affect this in my case (I tried third party versions
>     provided, and
>     />/also ATLAS implementations of libraries in Liunx), but forcing
>     MALTAB to
>     />/use different BLAS and LAPACK versions (through environment
>     variables
>     />/BLAS_VERSION and LAPACK_VERSION) has an effect (although in no
>     case, I get
>     />/exactly similar results) .
>     />
>     >/Has anybody else had such an experience with IpOpt? Should I
>     change a
>     />/setting in Ipopt ot MATLAB?
>     />
>     >/Thanks
>     />/ALireza
>     />
>     >
>     >/PS: If it helps, here is a summary of Ipopt options I have changed:
>     />
>     >/ipopt.hessian_approximation = 'limited-memory';
>     />>/ipopt.mu_strategy = 'adaptive'; > tols = [1e-6; Options.MaxR;
>     Options.MaxR]; > ipopt.tol = sum(tols); > ipopt.constr_viol_tol =
>     tols(1); > ipopt.compl_inf_tol = tols(2); > ipopt.dual_inf_tol =
>     tols(3); > hessian_constant = 'yes'; > ipopt.warm_start_init_point
>     = 'yes';
>     />/_______________________________________________
>     />/Ipopt mailing list
>     />/Ipopt at list.coin-or.org
>     <http://list.coin-or.org/mailman/listinfo/ipopt>
>     />/http://list.coin-or.org/mailman/listinfo/ipopt
>     / --
>     Scanned by iCritical.
>
>
>
> On Fri, Dec 14, 2012 at 7:11 PM, AliReza Khoshgoftar Monfared 
> <khoshgoftar at gmail.com <mailto:khoshgoftar at gmail.com>> wrote:
>
>     Hi,
>
>     I have been trying to solve an optimization with Ipopt.
>
>     I'm using the MATLAB interface of Ipopt, and my optimization
>     problem is a not so complicated quadratic problem satisfying a
>     number of distance inequalities for some points.
>
>     I have noticed that in different cases of my problem, whether it
>     is solved (status 0), detected infeasible (status 2) or exceeded
>     maximum iterations (status -2), even if I run the code with the
>     exact same initial point and exact same options, I get results
>     that are different.
>     Now, I know that my problem does not have a unique solution, e.g.
>     in case of instances that are solved completely I get different
>     results while all satisfy the constraints. But still, I expect
>     ipopt to give me similar results when I run it with similar
>     conditions.
>
>     Is there any option in Ipopt that accounts to randomness. Or is it
>     a behavior of MATLAB?
>
>     I have noticed that building Ipopt with various versions of BLAS
>     and LAPACK does not affect this in my case (I tried third party
>     versions provided, and also ATLAS implementations of libraries in
>     Liunx), but forcing MALTAB to use different BLAS and LAPACK
>     versions (through environment variables BLAS_VERSION and
>     LAPACK_VERSION) has an effect (although in no case, I get exactly
>     similar results) .
>
>     Has anybody else had such an experience with IpOpt? Should I
>     change a setting in Ipopt ot MATLAB?
>
>     Thanks
>     ALireza
>
>
>     PS: If it helps, here is a summary of Ipopt options I have changed:
>
>         ipopt.hessian_approximation = 'limited-memory';
>         ipopt.mu_strategy             =  'adaptive';
>         tols = [1e-6; Options.MaxR; Options.MaxR];
>         ipopt.tol                              =  sum(tols);
>         ipopt.constr_viol_tol         =  tols(1);
>         ipopt.compl_inf_tol           =  tols(2);
>         ipopt.dual_inf_tol              =  tols(3);
>         hessian_constant             =  'yes';
>         ipopt.warm_start_init_point = 'yes';
>
>


-- 
Scanned by iCritical.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20121217/5ecef386/attachment-0001.html>


More information about the Ipopt mailing list