好文档 - 专业文书写作范文服务资料分享网站

CPLEX初学笔记

天下 分享 时间: 加入收藏 我要投稿 点赞

CPLEX初学笔记

CPLEX是什么?

CPLEX是一款数学解模工具,能够帮助你求解模型中的最优解或是可行解,当然也可以告诉你因为某某限制条件冲突而无解。

CPLEX怎么用?

要让CPLEX帮你求解,首先必须让它读懂你的数学模型,简单的说,我们的数学模型文件必须采用一定的、规范的语句书写。此外,解模还需要一组自变量的值作为数据输入,也就是我们的数据文件,显然,数据文件的书写也是需要一定格式的。因此,我们使用CPLEX求解的过程,其实也就是书写模型文件与数据文件,然后运行CPLEX、等待答案。

如何调用CPLEX工作?我个人分为了以下三种方法:

1. AMPL脚本语言调用(个人认为最简单、易学的方法)

AMPL脚本语言位于用户与数学解模工具之间,简单的说,用户使用AMPL脚本语言的语法书写自己的数学模型,然后同样以AMPL既定的格式排版数据文件。完成之后,运行命令执行数学解模工具,请注意,这里说的是数学解模工具,而非仅仅是CPLEX。因为AMPL能够支撑多种数学解模工具,例如Gurobi,MINOS,SNOPT,CPLEX等等。我们可以简单的通过键入option solver cplex来指定使用CPLEX工具进行解模。

何处下载AMPL相关软件?

下载AMPL+CPLEX工具,个人推荐到AMPL官方网站上下载,给个可靠的下载链接吧: http://www.ampl.com/DOWNLOADS/index.html

在这个地址上,可以找到AMPL + MINOS 5.5 + CPLEX 11.2 + Gurobi 2.0 +Kestrel 的一体免费简装包下载,这也是我自己使用的版本。同级的目录中,还可以进入EXAMPLE下载一些例子教程什么的,或是进入Complete download details,找到更详细的下载列表。

如何使用AMPL写数学模型文件和数据文件?

打开写字板或是记事本,即可开始书写AMPL的模型文件与数据文件,之后键入命令关联先前已写的模型与输入数据文件,执行求解过程。关于AMPL语言怎么写的教学说明,网上有很多的pdf资料,这里推荐几个个人认为比较好的下载地址吧:

http://wenku.http://www.diyifanwen.net//view/0eb3db8b6529647d272852bc.html这是一篇中文的、台湾同胞写的AMPL调用Cplex使用心得,前半段讲的内容有些繁琐,但是文章后部分使用例子很多,帮助很大。

http://wenku.http://www.diyifanwen.net//view/60613282d4d8d15abe234e63.html http://wenku.http://www.diyifanwen.net//view/07c9cd244b35eefdc8d3331c.html

这是两篇英文的教学文档,写的很全面,前一篇是关于AMPL脚本语言的“简述”,后篇是官方出的用户指南8.0版,除此之外,大家还可以直接上AMPL官网找找例子教程什么的,给个链接

http://www.ampl.com/EXAMPLES/index.html

2. 使用IBM CPLEX Studio IDE

这是IBM官方出的cplex的工具平台,其功能强大令人惊讶,并且能免费下载到三个月使用期的免费版,唯一麻烦的是要注册一个IBM的用户账户(免费但繁琐),下载链接:

http://www-01.ibm.com/software/integration/optimization/cplex-optimization-studio/ 页面中点击Try it free for 90 days键入你的账号即可下载。

如何使用IBM CPLEX Studio IDE写数学模型文件和数据文件?

运行IBM CPLEX Studio,可新建OPL项目,并在项目中添加相应的模型文件与数据文件,在IDE内完成模型和数据的书写。当然,这时你使用的应该是OPL语言了,其实和AMPL还是很相像的,难度也并不大,当你完成IBM CPLEX Studio IDE的安装后(安装目录在D:\\StudySoft\\CPLEX\\),那么可在安装目录下的D:\\StudySoft\\CPLEX\\cplex\\opl\\examples\\opl文件夹中找到大量的opl例子,比起英文的使用文档,在IDE中看看这些例子,可以搞懂很多特别的用法,帮助很大。

由于我自己就是学着例子写的东西,所以也没看过啥教OPL&CPLEX的文档,不过推荐个论坛吧(同样需要IBM的免费账号):

https://www.ibm.com/developerworks/forums/forum.jspa?forumID=2059&start=0

这是个IBM的官方论坛,可以在上面提出你使用IBM CPLEX Studio IDE的具体问题,回答率相当高,貌似里头也有IBM自身的技术人员吧,帮我解答了很多疑惑。

然后这个链接里头有个“第一个cplex例子”全图教程,感谢原作者! http://blog.sina.com.cn/s/blog_50c154510100r0nm.html

3. Cplex with Concert Technology -> 使用编程语言直接解模

cplex现今提供了C++, Java,.NET,C等编程语言实现的算法库支持,也就是说,你可以通过学习使用各种编程语言的API应用,直接以编程语言新建cplex求解模型项目,或是在你现有的项目中添加cplex模块。

如何配置编程环境?(c++)

1. 安装cplex软件,假定我的安装目录是D:\\StudySoft\\CPLEX 2. 在你的项目中添加头文件路径

D:\\StudySoft\\CPLEX\\cplex\\include\\ilcplex D:\\StudySoft\\CPLEX\\concert\\include\\ilconcert

由于安装的cplex版本不同,可能具体路径也太不一样,但均需要添加cplex自身的.h与concert目录下的.h文件所在目录,这个步骤解决的也正是API函数头文件寻找不到的问题。

3. 在你的项目中添加静态库依赖项

D:\\StudySoft\\CPLEX\\cplex\\lib\\x86_windows_vs2008\\stat_mda\\ilocplex.lib D:\\StudySoft\\CPLEX\\cplex\\lib\\x86_windows_vs2008\\stat_mda\\cplex123.lib D:\\StudySoft\\CPLEX\\concert\\lib\\x86_windows_vs2008\\stat_mda\\concert.lib

由于cplex版本不同,或是vs版本不同、需求不同,具体路径不一样,举例说:若你装的是

vs2010,那么相应的lib就在D:\\StudySoft\\CPLEX\\concert\\lib\\x86_windows_vs2010\\... ;若你需要用的是静态多线程,而非我上文中对应的动态多线程,相应的lib目录就换作

D:\\StudySoft\\CPLEX\\cplex\\lib\\x86_windows_vs2008\\stat_mta\\...,但无论如何,你都得添上三个lib,两个在cplex目录下,一个在concert目录下。

这个步骤解决的是API函数木有定义的问题。

4. 在C++预处理器中添加IL_STD,在标准库中使点不点h的头文件们相认,这个步骤解决的是你明明 #include <***> ,编译器始终报错cannot find ***.h的问题 5. 将配置选项设为“release”而不是“debug”

6. 在项目属性中将C/C++|代码生成 运行时库设置为多线程(/MT)通常用多线程(/MT)就行了,若你在步骤3使用了stat_mda下的lib库,可使用多线程DLL(/MD)。

7. 在项目中添加动态链接库D:\\StudySoft\\CPLEX\\cplex\\include\\ilcplex\\cplex123.dll,这个步骤解决的是编译“找不到cplex101.dll”的问题

个人推荐使用vs2008以上版本(我是在xp&vs08上用以上步骤运行成功的),如果还有其他的问题无法解决,可以看看D:\\StudySoft\\CPLEX\\cplex\\c_cpp.html,这是一个官方给出的配置文档,以及这个链接http://blog.sina.com.cn/s/blog_50c154510100g81w.html,这是我学习c++&cplex参考的一个很好的博客,感谢原作者。

如何使用c++调用cplex?

使用编程语言调用cplex解模型的过程中,并非仅仅使用C++等语言调用cplex接口,而是ILOG本身使用C++实现了cplex的算法优化库。因此,Concert Technology的运行速度并不会比CPLEX Studio IDE慢。同时,由于本身就是C++的东西,我们也可以很自然的把自己的一些算法以C++实现并添加在cplex项目中,这并不妨碍cplex运行。

关于c++或是其他编程语言API的使用,可参看cplex用户手册,给个链接:

http://wenku.http://www.diyifanwen.net//view/df82870c581b6bd97f19ea6b.html

CPLEX初学笔记

CPLEX初学笔记CPLEX是什么?CPLEX是一款数学解模工具,能够帮助你求解模型中的最优解或是可行解,当然也可以告诉你因为某某限制条件冲突而无解。CPLEX怎么用?要让CPLEX帮你求解,首先必须让它读懂你的数学模型,简单的说,我们的数学模型文件必须采用一定的、规范的语句书写。此外,解模还需要
推荐度:
点击下载文档文档为doc格式
8cogs5rfze86wqv5qtzz
领取福利

微信扫码领取福利

微信扫码分享