CPLEX学习笔记

1. CPLEX的获取

1)公司花钱
2)申请IBM学术版


2. CPLEX的使用方式

1) OPL IDE,对应的命令为oplide。

优点:基于Eclipse的IDE,功能丰富。
缺点:内存消耗大,不能支持打印中间可行解。


2) 命令行方式,对应的命令为oplrun

优点:内存消耗较小
缺点:不能支持打印中间可行解


3) 对应的交互方式,对应的命令为cplex

优点:内存消耗小,可以通过中断-恢复计算的方式,查看中间解;也可以通过设置参数set output intsolfileprefix...存储每个可行解
缺点:命令行


4. 建议修改的非默认选项,用于改善速度或内存开销(整数规划MIP)

1)set output intsolfileprefix
设置存储每个可行解的文件

2)set output writelevel 4
设置存储可行解的详细程度

3)set mip interval 100
设置log的间隔时间

4) set workmem 256
设置工作内存空间大小,默认128M

5)set mip strategy file 3
默认情况下,搜索节点的大小超过工作空间大小,就会被转换成节点文件——压缩存储在内存中
可以设置成将节点文件存储在磁盘中,从而节省内存开销——会带来额外的计算开销


常见问题

1 从opl模型文件导出lp、mps等规划问题的标准格式?
利用opl ide中的导出功能:在设置文件中勾选,然后运行该配置知道预处理完成就可以在工作目录下看到对应的导出文件


2 得到第一个可行解后就停止求解?
http://www-01.ibm.com/support/docview.wss?uid=swg21400089


3 如何重用cplex参数

1) 从当前环境导出参数(默认文件cplex.par)
cplex>display settings changed (该命令会在控制台打印所有参数及参数值,同时将这些信息存储到log文件中)
从log文件中复制这些信息,并保存到cplex执行目录下的cplex.par文件中(如果使用别的文件名,需要修改环境变量CPLEXPARFILE 

2)使用cplex.par文件
将cplex.par文件放在cplex执行目录就行了

参考:


4. 如何从某个可行解开始求解MIP?

1) 得到可行解

可以用启发式方法得到,但是需要保存成MST或者sol文件格式(参考cplex文档)

也可以利用上次运行得到的可行解,即

cplex>write start.sol m8(其中m8是cplex已经算出来的可行解的名字,可以用display命令进行查看)

参考:http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r2/index.jsp?topic=%2Filog.odms.cplex.help%2FContent%2FOptimization%2FDocumentation%2FCPLEX%2F_pubskel%2FCPLEX570.html

2) 利用可行解作为初始解
cplex>read problem.lp

cplex>read start.sol

cplex>optimize


5. 如果cplex求解长时间得不到更好的可行解,怎么办?

1)修改emphasis mip参数为1,使得求解可行解优先而非最优性优先

2)修改mip strategy heuristicfreq,提高应用node启发式的频率

3)修改mip strategy nodeselect为best-estimate策略来搜索下一个节点,有时更容易找到可行解

4)利用Solution polishing,基于当前可行解来改进

5)修改mip strategy variableselect为3,启用strong branching

参考:
http://www-01.ibm.com/support/docview.wss?uid=swg21399949

file:///C:/Program%20Files/IBM/ILOG/CPLEX_Studio125/doc/html/en-US/CPLEX/UsrMan/topics/discr_optim/mip/troubleshoot/56_find_more_feas.html
file:///C:/Program%20Files/IBM/ILOG/CPLEX_Studio125/doc/html/en-US/CPLEX/UsrMan/topics/discr_optim/mip/troubleshoot/58_best_node_stuck.html


6. 如何得到中间可行解的方案?

1)利用cplex的display命令和log文件

2)设置cplex中的output intsolfileprefix参数,自动保存每个中间可行解


7. “out of memory”问题分析

参考:http://www-01.ibm.com/support/docview.wss?uid=swg21400051


8. 评估MIP模型的难度及可能存在的问题

参考:MIP kappa: detecting and coping with ill-conditioned MIP models

你可能感兴趣的:(programming,tools,cplex)