https://coin-or.github.io/Ipopt/OUTPUT.html


优化过程中的输出

This pages describes the standard Ipopt console output with the default setting for option print_level. The output is designed to provide a quick summary of each iteration as Ipopt solves the problem.

Before Ipopt starts to solve the problem, it displays the problem statistics (number of nonzero-elements in the matrices, number of variables, etc.). Note that if you have fixed variables (both upper and lower bounds are equal), Ipopt may remove these variables from the problem internally and not include them in the problem statistics.

Following the problem statistics, Ipopt will begin to solve the problem and you will see output resembling the following,

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls0  1.6109693e+01 1.12e+01 5.28e-01   0.0 0.00e+00    -  0.00e+00 0.00e+00   01  1.8029749e+01 9.90e-01 6.62e+01   0.1 2.05e+00    -  2.14e-01 1.00e+00f  12  1.8719906e+01 1.25e-02 9.04e+00  -2.2 5.94e-02   2.0 8.04e-01 1.00e+00h  1

and the columns of output are defined as,

  1. iter: The current iteration count. This includes regular iterations and iterations during the restoration phase. If the algorithm is in the restoration phase, the letter “r” will be appended to the iteration number.

  2. objective: The unscaled objective value at the current point. During the restoration phase, this value remains the unscaled objective value for the original problem.

  3. inf_pr: The unscaled constraint violation at the current point. This quantity is the infinity-norm (max) of the (unscaled) constraints ( gL≤g(x)≤gU in (NLP)). During the restoration phase, this value remains the constraint violation of the original problem at the current point. The option inf_pr_output can be used to switch to the printing of a different quantity.

  4. inf_du: The scaled dual infeasibility at the current point. This quantity measure the infinity-norm (max) of the internal dual infeasibility, Eq. (4a) in the implementation paper [12], including inequality constraints reformulated using slack variables and problem scaling. During the restoration phase, this is the value of the dual infeasibility for the restoration phase problem.

  5. lg(mu): log10 of the value of the barrier parameter μ.
    ||d||: The infinity norm (max) of the primal step (for the original variables x and the internal slack variables s). During the restoration phase, this value includes the values of additional variables, p and n (see Eq. (30) in [12]).

  6. lg(rg): log10 of the value of the regularization term for the Hessian of the Lagrangian in the augmented system ( δw in Eq. (26) and Section 3.1 in [12]). A dash ("-") indicates that no regularization was done.

  7. alpha_du: The stepsize for the dual variables ( αzk in Eq. (14c) in [12]).

  8. alpha_pr: The stepsize for the primal variables ( αk in Eq. (14a) in [12]). The number is usually followed by a character for additional diagnostic information regarding the step acceptance criterion:

  9. ls: The number of backtracking line search steps (does not include second-order correction steps).


返回值的含义

Note that the step acceptance mechanisms in Ipopt consider the barrier objective function (Eq (3a) in [12]) which is usually different from the value reported in the objective column. Similarly, for the purposes of the step acceptance, the constraint violation is measured for the internal problem formulation, which includes slack variables for inequality constraints and potentially scaling of the constraint functions. This value, too, is usually different from the value reported in inf_pr. As a consequence, a new iterate might have worse values both for the objective function and the constraint violation as reported in the iteration output, seemingly contradicting globalization procedure.

When the algorithm terminates, Ipopt will output a message to the screen based on the return status of the call to Optimize. The following is a list of the possible return codes, their corresponding output message to the console, and a brief description.

Solve_Succeeded:

Console Message: EXIT: Optimal Solution Found.

This message indicates that Ipopt found a (locally) optimal point within the desired tolerances.

Solved_To_Acceptable_Level:

Console Message: EXIT: Solved To Acceptable Level.

This indicates that the algorithm did not converge to the “desired” tolerances, but that it was able to obtain a point satisfying the “acceptable” tolerance level as specified by the acceptable_tol options. This may happen if the desired tolerances are too small for the current problem.

Feasible_Point_Found:

Console Message: EXIT: Feasible point for square problem found.

This message is printed if the problem is “square” (i.e., it has as many equality constraints as free variables) and Ipopt found a point that is feasible w.r.t. constr_viol_tol. It may, however, not be feasible w.r.t. tol.

** Infeasible_Problem_Detected: **

Console Message: EXIT: Converged to a point of local infeasibility. Problem may be infeasible.

The restoration phase converged to a point that is a minimizer for the constraint violation (in the ℓ1-norm), but is not feasible for the original problem. This indicates that the problem may be infeasible (or at least that the algorithm is stuck at a locally infeasible point). The returned point (the minimizer of the constraint violation) might help you to find which constraint is causing the problem. If you believe that the NLP is feasible, it might help to start the optimization from a different point.

** Search_Direction_Becomes_Too_Small: **

Console Message: EXIT: Search Direction is becoming Too Small.

This indicates that Ipopt is calculating very small step sizes and is making very little progress. This could happen if the problem has been solved to the best numerical accuracy possible given the current scaling.

**Diverging_Iterates: **

Console Message: EXIT: Iterates divering; problem might be unbounded.

This message is printed if the max-norm of the iterates becomes larger than the value of the option diverging_iterates_tol. This can happen if the problem is unbounded below and the iterates are diverging.

**User_Requested_Stop: **

Console Message: EXIT: Stopping optimization at current point as requested by user.

This message is printed if the user call-back method Ipopt::TNLP::intermediate_callback returned false.

**Maximum_Iterations_Exceeded: **

Console Message: EXIT: Maximum Number of Iterations Exceeded.

This indicates that Ipopt has exceeded the maximum number of iterations as specified by the option max_iter.

**Maximum_WallTime_Exceeded: **

Console Message: EXIT: Maximum wallclock time exceeded.

This indicates that Ipopt has exceeded the maximum number of wallclock seconds as specified by the option max_wall_time.

**Maximum_CpuTime_Exceeded: **
Console Message: EXIT: Maximum CPU time exceeded.

This indicates that Ipopt has exceeded the maximum number of CPU seconds as specified by the option max_cpu_time.

** Restoration_Failed:**

Console Message: EXIT: Restoration Failed!

This indicates that the restoration phase failed to find a feasible point that was acceptable to the filter line search for the original problem. This could happen if the problem is highly degenerate, does not satisfy the constraint qualification, or if your NLP code provides incorrect derivative information.

Error_In_Step_Computation:

Console Output: EXIT: Error in step computation!

This message is printed if Ipopt is unable to compute a step towards a new iterate and the current iterate is not acceptable for the specified tolerances.

A possible reason is that a search direction could not be computed despite several attempts to modify the iteration matrix. Usually, the value of the regularization parameter then becomes too large. One situation where this can happen is when values in the Hessian are invalid (NaN or Inf). You can check whether this is true by using the option check_derivatives_for_naninf.

Another reason is that the feasibility restoration phase could not be activated because the current iterate is not infeasible. Reasons for this again include that the problem is highly degenerate, badly scaled, does not satisfy the constraint qualification, or that your NLP code provides incorrect derivative information. Before Ipopt 3.14, this resulted in a Restoration_Failed status code with message “Restoration phase is called at almost feasible point…”

Invalid_Option:

Console Message: (details about the particular error will be output to the console)

This indicates that there was some problem specifying the options. See the specific message for details. This return code is also used when a linear solver is choosen that was not linked in and a library that contains this linear solver could not be loaded.

Not_Enough_Degrees_Of_Freedom:

Console Message: EXIT: Problem has too few degrees of freedom.

This indicates that your problem, as specified, has too few degrees of freedom. This can happen if you have too many equality constraints, or if you fix too many variables (Ipopt removes fixed variables by default, see also the option fixed_variable_treatment).

Invalid_Problem_Definition:

Console Message: EXIT: Problem has inconsistent variable bounds or constraint sides.

This indicates that either there was an exception of some sort when building the IpoptProblem structure in the C or Fortran interface or bounds specified for variables or constraints were inconsistent (lower bound larger than upper bound, left-hand-side larger than right-hand-side). Likely there is an error in your model or the main routine.

Unrecoverable_Exception:

Console Message: (details about the particular error will be output to the console)

This indicates that Ipopt has thrown an exception that does not have an internal return code. See the specific message for details.

NonIpopt_Exception_Thrown:

Console Message: Unknown Exception caught in Ipopt

An unknown exception was caught in Ipopt. This exception could have originated from your model or any linked in third party code. See also Ipopt::IpoptApplication::RethrowNonIpoptException.

Insufficient_Memory:

Console Message: EXIT: Not enough memory.

An error occurred while trying to allocate memory. The problem may be too large for your current memory and swap configuration.

Console Message: EXIT: Integer type too small for required memory.

A linear solver requires more working space than what can be communicated to it via the used integer type.

Internal_Error:

Console: EXIT: INTERNAL ERROR: Unknown SolverReturn value - Notify IPOPT Authors.

An unknown internal error has occurred. Please notify the authors of Ipopt via the mailing list.

To print additional diagnostic tags for each iteration of Ipopt, set the option print_info_string to yes. With this, a tag will appear at the end of an iteration line with the following diagnostic meaning that are useful to flag difficulties for a particular Ipopt run.

Tag Description Reference
! Tighten resto tolerance if only slightly infeasible Section 3.3 in [12]
A Current iteration is acceptable Alternate termination
a Perturbation for PD singularity impossible, assume singular Section 3.1 in [12]
C Second Order Correction taken Section 2.4 in [12]
Dh Hessian degenerate based on multiple iterations Section 3.1 in [12]
Dhj Hessian/Jacobian degenerate based on multiple iterations Section 3.1 in [12]
Dj Jacobian degenerate based on multiple iterations Section 3.1 in [12]
dx δx perturbation too large Section 3.1 in [12]
e Cutting back α due to evaluation error in backtracking line search
F- Filter should be reset, but maximal resets exceeded Section 2.3 in [12]
F+ Resetting filter due to last few rejections of filter Section 2.3 in [12]
L Degenerate Jacobian, δc already perturbed Section 3.1 in [12]
l Degenerate Jacobian, δc perturbed Section 3.1 in [12]
M Magic step taken for slack variables in backtracking line search
Nh Hessian not yet degenerate Section 3.1 in [12]
Nhj Hessian/Jacobian not yet degenerate Section 3.1 in [12]
Nj Jacobian not yet degenerate Section 3.1 in [12]
NW Warm start initialization failed in Warm Start Initialization
q PD system possibly singular, attempt improving sol. quality Section 3.1 in [12]
R Solution of restoration phase Section 3.3 in [12]
S PD system possibly singular, accept current solution Section 3.1 in [12]
s PD system singular Section 3.1 in [12]
s Square Problem. Set multipliers to zero Default initialization routine
Tmax Trial θ is larger than θmax filter parameter, see (21) in [12]
W Watchdog line search procedure successful Section 3.2 in [12]
w Watchdog line search procedure unsuccessful, stopped Section 3.2 in [12]
Wb Undoing most recent SR1 update Section 5.4.1 in [1]
We Skip Limited-Memory Update in restoration phase Section 5.4.1 in [1]
Wp Safeguard B0=σI is not positive Section 5.4.1 in [1]
WS Skip Limited-Memory Update since Δx is too small Section 5.4.1 in [1]
y Dual infeasibility, use least square multiplier update during ipopt algorithm
z Apply correction to bound multiplier if too large during ipopt algorithm

Bibliography

[1]
L.T. Biegler. Nonlinear Programming: Concepts, Algorithms and Applications to Chemical Processes. SIAM, Philadelphia, 2010.

[2]
N.-Y. Chiang and V.M. Zavala. An inertia-free filter line-search algorithm for large-scale nonlinear programming. Computational Optimization and Applications, 64(2):327–354, 2016.

[3]
F.E. Curtis, J. Huber, O. Schenk, and A. Wächter. A note on the implementation of an interior-point algorithm for nonlinear optimization with inexact step computations. Mathematical Programming, 136(1):209–227, 2012. preprint at http://www.optimization-online.org/DB_HTML/2011/04/2992.html.

[4]
A.V. Fiacco, editor. Introduction to Sensitivity and Stability Analysis in Nonlinear Programming, volume 165 of Mathematics in Science and Engineering. 1983.

[5]
R. Fourer, D.M. Gay, and B.W. Kernighan. AMPL: A Modeling Language For Mathematical Programming. Thomson Publishing Company, Danvers, MA, USA, 1993.

[6]
W. Hock and K. Schittkowski. Test examples for nonlinear programming codes. Lecture Notes in Economics and Mathematical Systems, 187, 1981.

[7]
J. Nocedal, A. Wächter, and R.A. Waltz. Adaptive barrier strategies for nonlinear interior methods. SIAM Journal on Optimization, 19(4):1674–1693, 2008. preprint at http://www.optimization-online.org/DB_HTML/2005/03/1089.html.

[8]
H. Pirnay, R. López-Negrete, and L.T. Biegler. Optimal sensitivity based on Ipopt. Mathematical Programming Computations, 4(4):307–331, 2012. preprint at http://www.optimization-online.org/DB_HTML/2011/04/3008.html.

[9]
B. Tasseff, C. Coffrin, A. Wächter, and C. Laird. Exploring benefits of linear solver parallelism on modern nonlinear optimization applications. arXiv 1909.08104, 2019.

[10]
A. Wächter and L.T. Biegler. Line search filter methods for nonlinear programming: Local convergence. SIAM Journal on Optimization, 16(1):32–48, 2005.

[11]
A. Wächter and L.T. Biegler. Line search filter methods for nonlinear programming: Motivation and global convergence. SIAM Journal on Optimization, 16(1):1–31, 2005.

[12]
A. Wächter and L.T. Biegler. On the implementation of a primal-dual interior point filter line search algorithm for large-scale nonlinear programming. Mathematical Programming, 106(1):25–57, 2006. preprint at http://www.optimization-online.org/DB_HTML/2004/03/836.html.

[13]
A. Wächter. An Interior Point Algorithm for Large-Scale Nonlinear Optimization with Applications in Process Engineering. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, USA, January 2002.

[14]
A. Wächter. Short tutorial: Getting started with Ipopt in 90 minutes. In H. D. Simon U. Naumann, O. Schenk, editor, Combinatorial Scientific Computing. 2009.

Ipopt输出的含义相关推荐

  1. MATLAB图像处理—imfindcircles的输出变量含义

    MATLAB图像处理-imfindcircles的输出变量含义 1.centers - Coordinates of circle centers(圆心坐标) centers输出的是两列矩阵(two- ...

  2. globk平差输出选项含义

    globk平差输出选项含义: CORR 输出协方差矩阵 BLEN 输出基线长度和分量 BRAT 输出基线长度和分量的变化率 CMDS globk命令概要写入到globk和glorg输出文件 VSUM ...

  3. 理解YOLOv2训练过程中输出参数含义

    转载自https://blog.csdn.net/dcrmg/article/details/78565440 原英文地址: https://timebutt.github.io/static/und ...

  4. pandas.describe()输出参数含义

    如下图,调用describe()函数时输出如下函数: 1.count:非空值总数 2.mean:非空值的平均值 3.std:方差 4.min:最小值 5. 25%:25%分位数 6. 50%:50%分 ...

  5. git diff命令输出的含义

    以Kconfig文件为例,修改之前: 在第3行输入#sundi,第4行输入#Andy,如下图: git diff Kconfig输出的结果: index 048d9fa..ab9eb5f 100755 ...

  6. C语言中不同格式化输出的含义(%e、%g、%u、%hd)等

    %d:整型输出,%ld长整型输出 %o:以八进制数形式输出整数,打印的是无符号类型 %x:以十六进制数形式输出整数,%X以大写字母输出,打印的是无符号类型 %u:以十进制数输出unsigned型数据( ...

  7. Linux命令 ls -l s输出内容含义详解

    1. ls  只显示文件名或者文件目录 2. ls -l(这个参数是字母L的小写,不是数字1) 用来查看详细的文件资料 在某个目录下键入ls -l可能会显示如下信息: 文件属性(占10个字符空间)  ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  9. c++输出小数点后几位_2.1 怎么在屏幕上输出各种类型的数据

    在<C语言在屏幕上显示内容>一节中,我们使用 puts 来输出字符串.puts 是 output string 的缩写,只能用来输出字符串,不能输出整数.小数.字符等,我们需要用另外一个函 ...

最新文章

  1. As与强制类型转换的区别以及Is运算符的使用
  2. 最近面试了一位4年的Java,什么都不知道!还自认为很牛逼...
  3. 程序员的工资VS普通人的工资...
  4. 「洛谷P1343」地震逃生 解题报告
  5. NOTIFYICONDATA结构
  6. Angular 里 unknown 和 any 的区别
  7. 这4种钱没有也要借,不能等
  8. ICPC 徐州 H Yuuki and a problem (树状数组套主席树)
  9. corda_使用Spring WebFlux从Corda节点流式传输数据
  10. hadoop java访问_Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群
  11. LeetCode-1423:可获得的最大点数
  12. ps字体识别_秒抠毛发,去除海报字体……解锁PS的3个隐藏工具
  13. 【编码】-整数排序-2016.08.10
  14. PHP-自定义模板-学习笔记
  15. html排版跟代码不一致_用壹伴助手,几分钟搞定公众号排版
  16. vc linux 中文版下载64位,VSCode 64位下载
  17. jsp注册页面java代码_JSP 实现登录注册功能-Fun言
  18. python的下载安装以及两种打开方式
  19. 如何在路演中获得投资机会|兆骑科创
  20. “碳中和”研究为什么需要气象数据

热门文章

  1. uniapp 实现聊天页面 textarea固定在底部且高度自增
  2. 《炬丰科技-半导体工艺》 超临界二氧化碳处理技术在光刻技术中的应用及其对微抗蚀剂图案附着力的影响
  3. 游戏必备组件_一款Beta版游戏周销量 30 万份,独立游戏究竟有多火?
  4. 半导体芯片为什么一定要用硅?
  5. 【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站
  6. 网络游戏服务器构架设计
  7. opengles绘制天空盒
  8. Sap Program 自动创建供应商资料,BP
  9. [机器学习笔记] 用Python分析:红葡萄酒质量分析(数据探索)
  10. 《左耳听风-高效学习篇》阅读笔记