第二天:Interactive Optimizer 教程

来源:互联网 发布:android 查看端口占用 编辑:程序博客网 时间:2024/06/06 07:36

一、启动

在cmd中输入cplex,跳出

二、帮助

输入help command name


三、输入问题

enter用于从键盘输入新问题;

使用LP格式,按如下顺序:目标函数->约束->界限

输入目标函数之前必须申明是最小化还是最大化,前缀maximize或minimize;

变量名称格式和高级编程语言类似,但是不能包含e或E,因为它们用于指数,例子:maximize x1+2x2+3x3

约束前面加前缀subject to或者st,例子:

st

-x1+x2+x3<=20

x1-3x2+x3<=30

约束名称,缺省为c1,c2……,cn,也可以自己定:

st

time:-x1+x2+x3<=20

labor:x1-3x2+x3<=30

目标函数名称缺省为obj,也可以自己定。

界限,上限和下限,缺省为[0,正无穷),bounds必须单独位于一行:

bounds

x1<=40

最后结束输入end


四、显示问题

display命令,详见Interactie Optimizer显示问题


五、对问题求解

optmize命令

接下来,在屏幕上会出现迭代日志。 CPLEX 在其对问题求解时报告其进度。 求解过程涉及两个阶段:

  • 在阶段 I 期间,CPLEX 搜索可行解法

  • 在阶段 II 期间,CPLEX 搜索最优可行解法。

报告解法

CPLEX 在找到最优解法后会报告以下内容:

  • 目标函数值

  • 问题求解时间(以秒为单位)

  • 总迭代计数

  • 阶段 I 迭代计数(用括号括起来)

提交迭代日志

每次 CPLEX 对问题求解时,出现在屏幕上的大部分信息还会定向到日志文件中。 此文件由 CPLEX 使用名称 cplex.log 自动创建。 如果在启动 CPLEX 的目录中存在现有 cplex.log 文件,那么 CPLEX 会将当前会话数据附加到现有文件。 如果要保留问题会话的唯一日志文件,那么可以使用set logfile 命令更改缺省名称。 (请参阅《CPLEX 用户手册》。) 日志文件以标准 ASCII 格式编写并可使用任何文本编辑器进行编辑。

重新求解

您可以通过重新发出 optimize 命令来对问题重新求解。 CPLEX 从先前最优基重新启动求解过程,并因此不需要迭代。 如果您不希望从高级基重新启动问题,请使用set advance 命令关闭高级启动指示符。

请记住,在发出 optimize 命令之前,问题必须存在于内存中(通过 enter 命令输入或从文件读取)。

使用替代优化器

optimize 命令外,CPLEX 还可使用主单纯形法优化器(primopt 命令)、对偶单纯形法优化器(tranopt 命令)、内点优化器(baropt 命令)和网络优化器(netopt 命令)。 使用这些替代优化器(在《CPLEX 用户手册》中进行了更详细的记录)可以更快对许多问题求解。 如果要对混合整数规划问题求解,那么 optimize 命令与 mipopt 命令等效。

中断优化

我们的简短示例非常快速地得到求解。 但是,较大的问题(尤其是混合整数问题)所需时间可能要长得多。 有时,中断优化过程可能很有用。 如果使用control-c,那么 CPLEX 允许此类中断。 (必须同时按 controlc 键。) 此时会中断优化,CPLEX 发出指示该过程已停止的消息,并且显示进度信息。 如果在同一会话中发出另一个优化命令,那么 CPLEX 将从中断位置恢复优化。


有关解法的以下特征的信息可通过 display solution 命令获取

注意:cmd中用shift+enter换行


退出用quit


0 0