您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 07-第七章-ILOG-OPL-界面
主讲人:雒兴刚东北大学系统工程研究所Email:luoxinggang@ise.neu.edu.cnTel:83682292优化软件与应用第七章OPL界面IDE介绍IDE是什么:integrateddevelopmentenvironment(IDE)formathematicalprogrammingandcombinatorialoptimizationapplications.Itisthegraphicaluserinterface(GUI)fortheOPLmodelinglanguageandtheILOGScriptforOPLscriptinglanguage.第七章OPL界面IDE介绍IDE能做什么:Createandmodifymodel,data,andprojectfilesusingtheeditingcapabilitiesExecuteaprojectGenerateacompiledmodelGenerateexternaldatafilesorcalculateddatafilestovariousformatsVisualizeOPLresultsintextortabularformVisualizethestateofvariablesatsomepointduringthesearchforasolutionSetGUIoptionsandmathematicalprogrammingoptionsConnecttoadatabaseortoaspreadsheettoreadandwritedataWorkwithILOGScriptforOPL,thescriptinglanguageProfiletheexecutionofamodelSearchforrelaxationsofvariablesandconstraints,andforconflictsbetweenconstraintsDebugscriptsusingthedebugfacilities第七章OPL界面IDE介绍IDE环境处理三种文件:modelfiles,datafiles,andprojectfilesModels:保持OPL语句及ILOG脚本,后缀是.mod。也可以生成编译后的模型格式,后缀是.opl。Data:对于较大规模问题,可以分离数据之数据文件(.dat),数据文件中也可以说明外部数据源,如Excel文件或ODBC数据库源等。Projects:文本格式,XML表示。说明project关联的模型和数据文件。类似VC的工程文件。第七章OPL界面IDE介绍创建新文件:第七章OPL界面IDE介绍运行项目:如何检查语法:运行项目后,出错的语法会以红色标识。修改错误后,继续运行项目。第七章OPL界面IDE介绍查看运行结果:SolutionTAB显示运行的结果。CPLEXstatistics显示算法的具体运行参数。当然,可以通过Options设置显示的项。第七章OPL界面IDE介绍产生一个编译的opl文件:File-GenerateCompiledModelFile…第七章OPL界面IDE介绍IDE文本编辑的特色:MDIapproach;Syntaxcoloring;MultiplelevelsofUndoandRedo;AutomaticindentationBlocks:asdelimitedbycurlybrackets;Bracket(orbrace)matching;Whentyping],}or),highlighted;MarginsymbolstheyellowarrowthatindicatesthecurrentlinetheredboxthatindicatesanerrortheredcirclethatindicatesabreakpointReloadprompt:Ifyoumodifyafilewithanexternaleditor,youarepromptedtoreloadCustomization:optionstocustomizetheeditor第七章OPL界面IDE介绍数据库支持:OPL通过ILOGDBLink5.0支持RDBMS;支持的数据库类型:OPL数据库支持通过函数DBconnection来实现,该函数主要有两个参数:thedatabaseclientyouwanttouse:e.g.oracle81theconnectionstring:e.g.scott/tiger@ilog“后面我们有一个详细的数据库连接的例子。第七章OPL界面IDE介绍为什么使用ILOG脚本?AddpreprocessingtopreparedataforthemodelControltheflowwhilesolvingthemodelSetCPLEXparametersAddpostprocessingtoaggregate,transform,andformatdata(includingresultsdata)fordisplayorforsendingtoanotherapplication,forexample,aspreadsheetSolverepeatedinstancesofthesamemodelFeedback:Createalgorithmicsolutionswheretheoutputofonemodelinstanceisusedastheinputofasecondmodelinstance第七章OPL界面IDE介绍ILOG脚本的入口点ThemainstatementforaflowcontrolscriptTheexecutestatementforpreprocessingandpostprocessingscripts没有独立的脚本文件;脚本文件总是和模型文件结合使用第七章OPL界面例:IDEProject1、在IDE界面中,FileNewProject.红色的星号表示是必选项。选择Location为C:\Temp,在项目Name中键入MyProject;可以看到系统自动命名mod文件和dat文件为MyProject。用户也可以对其名称进行修改,或者点选其右面的图标,选择一个现有的文件添加到本项目中;注意一个项目中mod文件只有1个,dat文件可以有多个;点击“CreateProject”,可以看到系统在C:\Temp下创建了两个文件,Project窗口如右图。第七章OPL界面例:IDEProject2、拷贝下面的代码到mod文件中,保存.{string}Products=...;{string}Resources=...;tupleProductData{floatdemand;floatinsideCost;floatoutsideCost;floatconsumption[Resources];}ProductDataproduct[Products]=...;floatcapacity[Resources]=...;dvarfloat+inside[Products];dvarfloat+outside[Products];executeCPX_PARAM{cplex.preind=0;cplex.simdisplay=2;}minimizesum(pinProducts)(product[p].insideCost*inside[p]+product[p].outsideCost*outside[p]);subjectto{forall(rinResources)sum(pinProducts)product[p].consumption[r]*inside[p]=capacity[r];forall(pinProducts)inside[p]+outside[p]=product[p].demand;}第七章OPL界面例:IDEProject3、如图,选择“Addnewdatafile”,选择和project文件相同的文件夹,输入文件名称MyProject.dat,保存.第七章OPL界面例:IDEProject4、双击MyProject.dat,将下面的代码拷贝到右侧的编辑区,保存。运行文件,结果如图.Products={kluski,capellini,fettucine};Resources={flour,eggs};product=#[kluski:100,0.6,0.8,[0.5,0.2],capellini:200,0.8,0.9,[0.4,0.4],fettucine:300,0.3,0.4,[0.3,0.6]]#;capacity=[20,40];注意:项目可以有多个dat文件。一个dat中的变量定义可能参考另一个dat文件,IDE调取dat文件的顺序是从上到下。因此,可以通过点选dat文件右键菜单的moveup来调整顺序。另外,从项目中移除一个文件也可以通过右键菜单来实现。第七章OPL界面例:IDEProject另外,IDE也支持同时打开多个项目。例如,图中打开了4个项目,红色的、单选框选中的是当前项目。当前项目可以通过右键菜单中的“setasactiveproject”来设定。第七章OPL界面例:IDEProject5、在execute处设置一个断点,然后运行项目。和高级语言的Debug按钮类似:停止运行暂停(当程序长时间运行时)继续运行StepintoStepoutStepoverRuntocursor第七章OPL界面例:IDEProject6、取消断点,继续运行项目。下面以这个例子的结果为例,介绍IDE的界面元素。首先是Output窗口中的Console标签页:如果编译出错,则显示语法错误;如果求解成功显示最优解状态第七章OPL界面例:IDEProjectOutput窗口中的Solution标签页:显示局优解partialsolutions(如果有)和最优解。下面是另一个例子的结果。第七章OPL界面例:IDEProjectOutput窗口中的Infeasibility标签页:因为本例有解,所以标签页为空白。下面是另一个例子的结果。第七章OPL界面例:IDEProjectOutput窗口中的CPLEXLog标签页:显示CPLEX求解过程中的日志信息,包括每个迭代过程的换基过程第七章OPL界面例:IDEProjectOutput窗口中的CPLEXStatistics标签页:显示CPLEX求解的各种统计信息,包括变量个数、约束个数、算法类型、迭代次数等等。第七章OPL界面例:IDEProjectOutput窗口中的Profiler标签页:右面是执行步骤,左面是计算时间和使用内存。通过分析这些信息,可以改进模型(缩短时间和减少内存)第七章OPL界面例:IDEProjectProfiler标签页中,执行步骤主要分为以下两类:左面的计算时间和使用内存的含义见下表:第七章OPL界面例:IDEProjectOutput窗口中的Log标签页:显示运行日志信息。第七章OPL界面例:IDEProject模型窗口显示如图。下面介绍IDE的模型窗口。7、关闭当前项目。第七章OPL界面例:IDEProject可以显示模型的类型、常量、变量、变量的初始化数据。8、重新调入刚才的项目,运行项目。用鼠标点选Data或者Variables中的变量或常量,下面的Property和Value会显示相应的值;同时,右面的编辑区也会定位的模型的相关代码处。第七章OPL界面例:IDEProject9、修改模型代码如下,然后重新运行项目。constraintct1;constraintct2;subjectto{ct1=forall(rinResources)sum(pinProducts)product[p].consumption[r]*
本文标题:07-第七章-ILOG-OPL-界面
链接地址:https://www.777doc.com/doc-3174037 .html