DICOPT 求解器手册 — 混合整数非线性规划(MINLP)
1. 引言
DICOPT(Discrete and Continuous OPTimizer,离散与连续优化器)是一个用于求解混合整数非线性规划(MINLP)问题的求解器。它使用外逼近(Outer Approximation)算法,通过交替求解非线性规划(NLP)子问题和混合整数线性规划(MIP)主问题来寻找 MINLP 问题的最优解。
DICOPT 特别适用于以下类型的 MINLP 问题:
- 目标函数和约束中包含非线性项
- 部分决策变量为整数或二元变量
- 非线性项是凸的(对于非凸问题,DICOPT 可能只找到局部最优解)
2. 算法
DICOPT 的外逼近算法按以下步骤工作:
- 初始化:求解 NLP 松弛问题(忽略整数约束),获得初始解。
- NLP 子问题:固定整数变量的值,求解 NLP 子问题。
- MIP 主问题:在当前解处构建外逼近,形成 MIP 主问题并求解。
- 收敛检查:如果 MIP 主问题的目标值与 NLP 子问题的目标值之差在容差范围内,则停止。
- 迭代:否则,从 MIP 主问题获得新的整数变量值,返回步骤 2。
DICOPT 需要两个子求解器:
- NLP 求解器:用于求解 NLP 子问题(默认使用 CONOPT)
- MIP 求解器:用于求解 MIP 主问题(默认使用 CPLEX)
3. 使用方法
要在 GAMS 中使用 DICOPT 求解器:
Option MINLP = DICOPT;
Solve mymodel using MINLP minimizing z;
可以通过 GAMS 选项语句指定子求解器:
option nlp = conopt; { 设置 NLP 子求解器 }
option mip = cplex; { 设置 MIP 子求解器 }
也可以通过选项文件设置 DICOPT 的特定选项:
mymodel.optfile = 1;
然后创建名为 dicopt.opt 的选项文件。
其他可用的 GAMS 选项:
- option reslim = x; — 设置 DICOPT 内部及子求解器的总累积时间限制(秒)
- option sysout = on; — 在列表文件中打印额外信息
- m.dictfile = 1; — 写入包含 GAMS 标识符信息的字典文件(用于 nlptracelevel 选项)
4. 选项参考
| 选项 | 描述 | 默认值 |
| algor | 算法选择:0=自动,1=外逼近,2=带等式松弛的外逼近 | 0 |
| doabort | 遇到不可行子问题时终止 | 0 |
| dolith | 在外逼近前仅求解整数问题 | 0 |
| dumper | 每次迭代转储模型到文件 | 0 |
| infeas | 处理不可行子问题的方法:0=可行性割,1=容差松弛 | 0 |
| itlim | 外逼近迭代限制 | GAMS iterlim |
| mipiterlim | MIP 主问题每次求解的迭代限制 | GAMS iterlim |
| mipoptca | MIP 主问题的绝对最优容差 | 0 |
| mipoptcr | MIP 主问题的相对最优容差 | 0 |
| nepum | 每次 NLP 求解的允许评估误差次数 | 2 |
| nlpsoln | 每次外逼近迭代的 NLP 求解次数 | 1 |
| nlptracelevel | NLP 跟踪级别(输出中间解) | 0 |
| reslim | 总时间限制(秒) | GAMS reslim |
| stop | 停止条件:0=使用最优性容差,1=使用 optca/optcr 或目标无改进 | 0 |
| strategy | 求解策略 | 0 |
| warmstart | 热启动:0=关闭,1=开启(重用前次迭代的 NLP 解) | 1 |
在线留言
尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。
|