主要内容

intlinprog输出函数和绘图函数语法

什么是输出函数和绘图函数?

intlinprog可以在算法中发生某些事件后调用输出函数或绘图函数。这些事件包括完成算法的一个阶段,如解决根LP问题,添加切割,成功完成启发式,在分枝定界过程中找到一个新的整数可行解,显著改善相对间隙,或在分枝定界树中探索若干节点。

谨慎

intlinprog输出函数和绘图函数不同于其他求解器中的函数。有关其他最优化工具箱™求解器中的输出函数或绘图函数,请参阅输出函数和绘图函数语法绘制函数

  • 有一个内置的输出函数:savemilp金宝搏官方网站solutions.该函数收集算法在事件时刻找到的整数可行点。它将可行点放入一个名为xIntSol在您的基本工作空间中,其中每一列是一个整数可行点。它将目标函数的值保存在一个名为fIntSol,其中每一项是中相应列的目标函数xIntSol

  • 有一个内置的绘图功能:optimplotmilp.这个函数绘制出最佳目标函数值的内部计算界限。有关它的使用示例,请参见工厂,仓库,销售分配模型:基于求解器

调用输出函数或绘图函数OutputFcnPlotFcn名称-值对,包括输出函数或绘图函数的句柄。例如,

选择= optimoptions (@intlinprog,“OutputFcn”@savemilps金宝搏官方网站olutions,“PlotFcn”, @optimplotmilp);x = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托,选项);

如果您有多个输出函数或绘图函数,请将它们作为单元格数组传递。

选择= optimoptions (@intlinprog,“OutputFcn”, {@savemil金宝搏官方网站psolutions, @customFcn});

自定义函数的语法

使用下面的语法编写自己的输出函数或plot函数:

函数停止= customFcn (x, optimValues状态)

intlinprog传递的数据xoptimValues,状态你的功能。

  • 停止——设置为真正的停止intlinprog.设置为允许intlinprog继续。

  • x-一个空矩阵[]或者一个N——- - - - - -1这个向量是一个可行点。x只有在什么时候非空intlinprog求一个新的整数可行解。x何时可以非空阶段“启发式”“分支”

  • optimValues-一个结构,其细节在optimValues结构

  • 状态-这些价值之一:

    • “init”- - - - - -intlinprog正在开始。使用此状态设置所需的任何图或数据结构。

    • “通路”- - - - - -intlinprog就是解决问题。访问与求解程序进程相关的数据。例如,绘制或执行文件操作。

    • “完成”- - - - - -intlinprog他已经解决了这个问题。关闭任何文件,完成对图的注释等。

有关编写输出函数或plot函数的示例,请参阅内置函数savemilp金宝搏官方网站solutions.moptimplotmilp.m

optimValues结构

optimValues 意义
阶段

算法的阶段。可能的值:

  • “rootlp”- - - - - -intlinprog解决了根LP问题。

  • “cutgen”- - - - - -intlinprog增加切割和改进下界。

  • “启发式”- - - - - -intlinprog用启发式方法找到新的可行点。

  • “分支”- - - - - -intlinprog在分支绑定树中创建和探索节点。

fval

到目前为止在一个整数可行点上找到的最佳目标函数。当阶段“rootlp”fval为根节点处的目标函数值,不一定是整数可行点。

下界

目标函数值的全局下界。空的时候阶段“rootlp”

relativegap

相对差距下界fval.相对差距是0到100之间的一个百分比,就像输出论点。空的时候阶段“rootlp”numfeaspoints0

numnodes

探测节点数。非零只有当阶段“分支”

numfeaspoints

已找到的整数可行解的个数。金宝搏官方网站

时间

以秒为单位的时间,用抽搐toc从那时起状态“init”