学会使用cplex的第一步.doc_第1页
学会使用cplex的第一步.doc_第2页
学会使用cplex的第一步.doc_第3页
学会使用cplex的第一步.doc_第4页
学会使用cplex的第一步.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学会使用cplex的第一步在Microsoft Visual C+使用cplex 已有 1678 次阅读2011-11-25 16:21|系统分类:科研笔记|关键词:cplex visual studio cCPLEX对学习OPERATION RESEARCH的人来说是必备工具,在解决最优化问题上依然是最知名的。主要记录下cplex的初步使用,本文主要参考的英文网址在:.au/ilog/cplex/12.1/mvs/c_cpp.html本文主要记录如何初次在cplex安装好后,在visual studio中运行cplex的例子。对英文说明进行了解释,将自己以前遇到的问题也写出来,方便大家解决。学会如何使用 Microsoft Visual Studio 1.安装并运行 cplex中的C and C+ examples (see dotnet.html for the C# and VB examples). 2.将cplex和C or C+ project 链接。下载cplex和安装CPLEX 安装目录记住最好安装到默认的C:ILOGCPLEX121 (the default location)*我因为没有安装到这个目录,遇到的问题:“问题:将cplex安装在c:program filesIBM下,在vc2008的cmd窗户下运行例子时候,出现C:Program 不是内部或外部命令,也不是可运行的程序或批处理文件。.原因:cplex安装的C:Program Files下,中间有空格,由于路径中有空格,所以,出了这个问题 ;解决办法:就用正常的路径,将路径全加上了双引号。其实,如果当初安装时候把cplex安装到c盘根目录,就不会出现这样的问题了。Library Locations cplex的一些文件都在默认路径下得多个文件夹下。都是后缀为lib的文件。 下面来试试建立和运行第一个cplex例子吧Building and Running CPLEX Examples所有的例子都在默认目录下examplesx86_.net2005_8.0stat_mtaexamples.sln. 1. 运行vc2005或者2008 2. File-Open Project/Solution.-examplesx86_.net2005_8.0stat_mta. 选择例子,打开. 3. 比如选择blend例子To build only one example (for instance, blend): 选择该项目Select the blend project in the Solution Explorer window. 建立项目From the Build menu, choose Build blend.项目完成Wait for the completion of the building process. 4.运行例子 run an example (for instance, blend): 怎么看结果呢?方法:打开vc中的command prompt window ,在vc菜单的tool下面的 Visual Studio 2005 Command prompt: 0:先要在cmd窗口中设置路径,得打出来Type set path C:ILOGCPLEX_Studio_Preview123cplexbinx86_win32 so that cplex121.dll is on the path. 0然后运行例子Type C:ILOGCPLEX_Studio_Preview123cplexexamplesx86_windows_vs2008stat_mtablend. 0然后就能看到结果了The result is then displayed. 附:在vc中debug那些例子的话,会出来这样的对话框:debugging information for iloplex.l.exe can Not be found or does not match.网上找到了解决方案,共享一下: 1. 1. 打开项目属性,把 Configuration Properties - C/C+ - General - Debug Information Format 设置成 Program Database (/Zi) 或 Program Database for Edit & Continue (/ZI) ; 2. 把 C/C+ - General - Optimization 设置成 Disabled (/Od) ; 3. 把 Linker - Debugging - Generate Debug Info 设置成 Yes (/DEBUG); 2. 这个问题似乎只在用 General/Empty Project 模版出现,用 Win32/Win32 Console Application 模版设置 Application Settings/Empty Project 就没有。 建立自己的cplex项目下面新建的项目的设置很麻烦,其实有个很简单的方法,就是在已经有的例子的example某个例子下面直接复制一份,在该例子的文件里面写上自己的代码即可,省的下面新建的文件需要设置很多参数环境,还挺麻烦的说。想建立一个test.exe : 包含一个源文件 test.cpp 使用 Concert Technology or test.c a folder where this file is located and which, for the sake of simplicity, well refer to as . 建立一个 test.vcproj 项目1. 运行vc的 Microsoft Visual Studio 2005. 2. 建立 test.sln solution.File -New-Project.3. 依次按照下面步骤进行The New Project dialog box appears. o In the Project Types pane, select Visual C+ Projects. o In the Templates pane, select the Win32 Project icon. o Fill in the project name (test). o If necessary, correct the location of the project (to ) o Click OK When the Win32 Application Wizard appears. o Click on Application Settings. o Select Console Application as Application type. o Make sure that Empty project is checked in Additional Options. o Click Finish. This creates a solution, test, with a single project, test. You can see the contents of the solution by selecting Solution Explorer in the View menu. 4. Now you must add your source file to the project. From the Project menu, choose Add Existing Item.o Move to the folder and select test.cpp or test.c. o Click Open. 5. Next, you have to set some options so that the project knows where to find the CPLEX and Concert include files and the CPLEX and Concert libraries.From the Project menu, choose Properties.The test Property Pages dialog box appears. In the Configuration drop-down list, select Release. Select C/C+ in the Configuration Properties tree. o Select General: In the Additional Include Directories field, add the directories: include. include. For Debug Information Format, choose Disabled (/Zd). Choose No for Detect 64-bit Portability Issues. o Select Preprocessor: Add IL_STD to the Preprocessor Definitions field. This defines the macro IL_STD which is needed to use the STL. o Select Code Generation: Set Runtime Library to Multi-threaded (/MT). Select Linker in the Configuration Properties tree. o Select Input and then select Additional Dependencies. Add the files: wsock32.lib libx86_.net2005_8.0stat_mtacplex121.lib libx86_.net2005_8.0stat_mtailocplex.lib libx86_.net2005_8.0stat_mtaconcert.lib The latter two are only necessary if you are using Concert Technology. Click OK to close the test Property Pages dialog box. 6. Next, you have to set the default project configuration. From the Build menu, select Configuration Manager.o Select Release in the Active Solution Configuration drop-down list. o Click Close. 7. Finally, to build the project, from the Build menu, select Build Solution After completion of the compiling and linking process, the target is created. The full path of the test.exe is testReleasetest.exe. Remark: From the Concert point of view, the only difference between the Win32 Release and Win32 Debug targets is: the NDEBUG macro is defined for the Win32 Release target. the NDEBUG macro is not defined for the Win32 Debug target. This is why we have suggested using Release in the test.sln example, even though it is not the default proposed by Visual C+ .NET. Refer to the Visual C+ Reference Manual for full information on Release and Debug configurations. The interaction of the NDEBUG macro and the Concert inline member functions is documented in the Concepts section of the CPLEX C+ API Reference Manual.cplex操作有很多种方法(1)使用interactive optimizer首先到在安装文件的目录下找到CPLEX的執行檔,其路徑如下:C:ILOGCPLEX12.1bin bin文件夹中,双击cplex.exe 运行;输入help便可得到這些指令的清單及其敘述;具体教程,参加安装目录下的 doc文档中的 教程吧,很简单的额。(2)Matlab与cplex的混合编程1.安装matlab(cplex只支持7.5 版本的互联)和cplex12.12.点击matlab中filesetpath-添加安装盘中cplex安装文件下的matlab包,和example中的matlab示例。3在matlab的help中输入cplex,查找到cplex的教程,找到matlab和cplex互联教程,学习吧。4Matlab与cplex互联,默认的格式为min f*xst. Aineq*x = bineq Aeq*x = beqlb = x ”,则说明安装成功且license配置正确。 新建 VC+ 项目。【以下内容对 C:ILOGCPLEX121c_cpp.html(Using IBM ILOG CPLEX with Microsoft Visual C+ ) 做了重要的补充,按照以下步骤操作可以不必阅读该文件,但该文件仍未最重要的参考资料】启动 Visual Studio 2008,新建一个 Visual C+ Win32 控制台应用程序。 为 Visual Studio 2008 设置头文件路径【此设置仅需一次即可应用于所有在本机 VS 下的项目】。工具|选项|项目和解决方案|VC+目录|包含文件,添加头文件路径:C:ILOGCPLEX121include 和 C:ILOGConcert29include。 配置 VC+ 项目。解决方案资源管理器|“你的项目”右键|属性:【此设置需对每个用于 CPLEX 的 VC+ 项目进行】 配置选为“Release” 配置属性|C/C+|常规|检测64位可以执行问题:否;|调试信息格式:禁用 配置属性|C/C+|预处理器|预处理器定义:添加“IL_STD” 配置属性|C/C+|代码生成|运行时库:多线程(/MT) 配置属性|链接器|输入|附加依赖项:添加: “wsock32.lib” “C:ILOGCPLEX121libx86_windows_vs2008stat_mtacplex121.lib” “C:ILOGCPLEX121libx86_windows_vs2008stat_mtailocplex.lib” “C:ILOGConcert29libx86_windows_vs2008stat_mtaconcert.lib” 设置默认的项目配置。生成|配置管理器|活动解决方案配置:Release。 拷贝动态链接库文件。将 C:ILOGCPLEX121binx86_win32cplex121.dll 拷贝至 C:ILOGCPLEX121includeilcplex下。项目编译完成后,再将cplex121.dll拷贝至项目安装路径下的 Release 文件夹中(该文件夹含有程序编译生成的 .exe 文件)。这时就可以调试运行了! 至此 CPLEX 12.1 就全部配置完成了,可以在所建项目中新建或添加已有的 c+ 文件,调用 CPLEX 进行计算 不得不说,yeah!与Cplex奋斗了将近半年了,先是搞清了怎么使用他的Interactive Optimizer求解问题,算是使用他的第一步吧,然而,很快就被另外一个重要的问题所困扰,如何使用Concert Technology在C+程序中调用它,这个问题从三月份以来一直困扰着我,终于,在今天,有了一些突破。一直以来,认为只能按照说明文档的 Build 和Link 的步骤来完成编译和运行,认为只能在MSDOS命令行中先设置路径,然后再调用程序运行。因此,摆在我面前最大的障碍就是如何在我的程序执行窗口中调用他,并输出他的结果。终于,在绝望,失望的边缘,通过在网上广搜资料,终于,万川一月的日志“让你的第一个Cplex程序运行” 给了我灵感,能否直接在c+中点击运行即运行使用Concert Technology 写的程序呢?实验证明,its ok!步骤如下:1.按照Cplex说明文档中的步骤,设置你的工程。其中要注意的就是在project setting-C/C+-code genertion-use runtime library中,说明文档中说是设置为Single Threaded,而事实证明,需要设置为Multithreaded Dll才行。这一点曾经也是深深的困扰了我很久,后来在研学论坛上求助,终于三个月后,亲爱的网友发现了我的帖子,并给我指明了这一点,我的一大障碍自此扫除。感谢不知名的网友的友情赐教。 这一步完成后,如果你的程序编译正常,那么就ok了,说明没有问题。2.去安装Cplex的文件夹,找到Cplex90.dll这个文件,复制到你写的程序所在的文件夹(以后每次都得这么做!);-引自万川一月的日志“让你的第一个Cplex程序运行”。 这个非常重要。尽管万川一月采用的是用C调用Cplex Callable Library,但是基本的思路是相同的。 这一步完成后,执行结果出来,自此成功。 下面我的另一个挑战就是把这些代码整合进我的C+GA程序中,和我的程序结合起来。(个人总结的ILOG-CPLEX最简约的建模和使用方法,非常实用) 数学规划模型可描述极为复杂的实际问题。利用优化算法,应用程序能迅速找到这些问题模型的解决方案。 ILOG CPLEX 的速度非常快,可以解决现实世界中许多大规模的问题,并利用现在的应用系统快速提交可靠的解决方案。这一特点可以从它在全球各地的使用情况和能在极端苛刻条件下应用的现状得到完全证明。它能够处理有数百万个约束 (constraint) 和变量,而且一直刷新数学规划的最高性能记录。ILOG CPLEX接受的优化问题的一般形式:max/min cTx s.t. Alex ble Aeqx=beq bounds. lb x ub其中x中的决策变量可指定为连续类型(NumVarType.Float)或离散(整数)类型(NumVarType.Int);下界lb最小至零(即决策变量非负),上届最大至C#可处理的最大值(System.Double.MaxValue)。这里规定所有不等式约束的方向为“”。调用CPLEX求解前需要给出:double c 优化函数向量,数组长度为决策变量个数;这里要看看c能否为数组的数组,添加目标函数时能否按照数组的数组添加;doublevar 其行数为决策变量的组数,其列数应为决策变量的个数;double A_le 不等式约束矩阵,其列数应为决策变量的个数;double b_le 不等式约束界,数组长度与A_le的行数保持一致;double A_eq 等式约束矩阵,其列数应为决策变量的个数;double b_eq 等式约束界,数组长度与A_eq的行数保持一致;double lb 决策变量的下界,数组长度与决策变量个数保持一致,若某个xi无下界则置为0;double ub 决策变量的上界,数组长度与决策变量个数保持一致,若某个xi无上界则置为System.Double.MaxValue;double xt 决策变量类型,数组长度与决策变量个数保持一致;xti = NumVarType.Float表示连续变量,xti = NumVarType.Int表示整数变量;若混合整数规划问题退化为线性规划问题(即所有xti = NumVarType.Int)则可省略xt;【注】为调用ILOG CPLEX,项目中需要添加引用指定路径下的ILOG.CONCERT.DLL及ILOG.CPLEX.DLL,同时为调用求解器本身,需要加载CPLEX.DL L(可置于程序所在目录);此外需要使用命名空间ILOG.CONCERT及ILOG.CPLEX。以下假定已经为以上提到的所有数组均赋值,且数据一致性良好。需要说明的是若无不等式约束/等式约束,则勿将对应数组赋空(null);以等式约束不存在为例,请赋为:double A_eq = ;double b_eq = ;若某变量xi无下界(程序限制非负),则lbi = 0.0;若xi无上界,则ubi = System.Double.MaxV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论