如何设置Mosek的最大迭代次数?

Mosek作为求解优化问题的软件,最大的迭代次数是软件的默认值,有时候我们希望看到没一次迭代的结果,那么怎么办呢?Mosek是没有设置输出迭代过程的功能,但是我们可以设置最大迭代次数来得到没一次迭代的结果。

我用的是Yalmip+mosek,所以下面给出一个例子:

下面是使用modek默认设置的计算日志:

MOSEK Version 8.0.0.60 (Build date: 2017-3-1 13:09:33)
Copyright (c) MOSEK ApS, Denmark. WWW: mosek.com
Platform: Windows/64-X86


Problem
 Name : 
 Objective sense : min 
 Type : CONIC (conic optimization problem)
 Constraints : 76 
 Cones : 59 
 Scalar variables : 269 
 Matrix variables : 0 
 Integer variables : 0 


Optimizer started.
Conic interior-point optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries : 1 time : 0.00 
Lin. dep. - tries : 1 time : 0.01 
Lin. dep. - number : 0 
Presolve terminated. Time: 0.03 
Optimizer - threads : 2 
Optimizer - solved problem : the primal 
Optimizer - Constraints : 17
Optimizer - Cones : 60
Optimizer - Scalar variables : 211 conic : 179 
Optimizer - Semi-definite variables: 0 scalarized : 0 
Factor - setup time : 0.00 dense det. time : 0.00 
Factor - ML order time : 0.00 GP order time : 0.00 
Factor - nonzeros before factor : 153 after factor : 153 
Factor - dense dim. : 0 flops : 4.88e+004 
ITE PFEAS DFEAS GFEAS PRSTATUS POBJ DOBJ MU TIME 
0 5.8e+001 1.0e+000 1.0e+000 0.00e+000 0.000000000e+000 0.000000000e+000 1.0e+000 0.05 
1 2.8e+001 4.9e-001 7.4e-001 2.69e+000 -4.254048024e-001 -2.844728402e-001 4.9e-001 0.11 
2 9.9e+000 1.7e-001 1.4e+000 1.42e+000 -2.952027207e-001 -3.496907606e-001 1.7e-001 0.11 
3 2.7e+000 4.6e-002 8.0e-001 2.05e+000 -2.917533988e-001 -3.004520037e-001 4.6e-002 0.11 
4 1.1e+000 1.9e-002 5.1e-001 1.25e+000 -2.945747896e-001 -2.977818412e-001 1.9e-002 0.13 
5 4.5e-001 7.8e-003 3.4e-001 1.09e+000 -2.950900595e-001 -2.964001014e-001 7.8e-003 0.13 
6 1.6e-001 2.8e-003 2.1e-001 1.04e+000 -2.944637949e-001 -2.949282232e-001 2.8e-003 0.13 
7 3.3e-002 5.7e-004 9.7e-002 1.02e+000 -2.943788616e-001 -2.944751249e-001 5.7e-004 0.14 
8 7.6e-003 1.3e-004 4.7e-002 1.00e+000 -2.944441319e-001 -2.944664877e-001 1.3e-004 0.14 
9 1.2e-003 2.1e-005 1.9e-002 1.00e+000 -2.944543542e-001 -2.944579238e-001 2.1e-005 0.14 
10 1.2e-004 2.1e-006 6.0e-003 1.00e+000 -2.944553323e-001 -2.944556878e-001 2.1e-006 0.16 
11 3.2e-005 5.6e-007 3.1e-003 1.00e+000 -2.944554230e-001 -2.944555190e-001 5.6e-007 0.16 
12 1.2e-005 2.1e-007 1.9e-003 1.00e+000 -2.944554811e-001 -2.944555166e-001 2.1e-007 0.16 
13 2.2e-008 3.8e-010 8.4e-005 1.00e+000 -2.944554930e-001 -2.944554931e-001 3.8e-010 0.17 
Interior-point optimizer terminated. Time: 0.17. 


Optimizer terminated. Time: 0.31 


Interior-point solution summary
 Problem status : PRIMAL_AND_DUAL_FEASIBLE
 Solution status : OPTIMAL
 Primal. obj: -2.9445549304e-001 nrm: 1e+000 Viol. con: 5e-009 var: 0e+000 cones: 0e+000 
 Dual. obj: -2.9445549311e-001 nrm: 3e-001 Viol. con: 0e+000 var: 1e-010 cones: 0e+000 
Optimizer summary
 Optimizer - time: 0.31 
 Interior-point - iterations : 13 time: 0.17 
 Basis identification - time: 0.00 
 Primal - iterations : 0 time: 0.00 
 Dual - iterations : 0 time: 0.00 
 Clean primal - iterations : 0 time: 0.00 
 Clean dual - iterations : 0 time: 0.00 
 Simplex - time: 0.00 
 Primal simplex - iterations : 0 time: 0.00 
 Dual simplex - iterations : 0 time: 0.00 
 Mixed integer - relaxations: 0 time: 0.00 




ans = 


 struct with fields:


 yalmiptime: 3.5286
 solvertime: 0.4354
 info: 'Successfully solved (MOSEK)'
 problem: 0

下面设置最大迭代次数:下面的ops是设置最大次数而添加的代码行。

ops = sdpsettings('solver','mosek','MSK_IPAR_INTPNT_MAX_ITERATIONS',10);
solvesdp(F,object_fun,ops)

这样就可以了。Mosek的相关参数可以参考:https://docs.mosek.com/7.0/toolbox/Parameters.html.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值