首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置子模型的时间限制?

问如何设置子模型的时间限制?
EN

Stack Overflow用户
提问于 2019-03-27 10:05:22
回答 1查看 67关注 0票数 1

我希望将给定配置的整个运行时间限制为1800s,该配置由主问题组成,通过这些主问题调用子问题:1和2。除此之外,您能告诉我如何针对不同的子模型设置不同的时间限制吗?例如,如果我想将子问题1的运行时间限制在500s,将子问题2的运行时间限制在800s。我使用了代码描述中所示的行- execute{ cplex.tilim=1800;},但程序的运行时间超过1800s。

代码语言:javascript
复制
 //-----------------Main-problem.mod-------------------------------
 //variables definition here

 execute {cplex.tilim= 1800;}
 Objective function;

 subject to {
     Constraints:1-7
       }

 execute FillDuals {
     Dual of constraint 1;
         }       
 }   

 main{
 thisOplModel.settings.mainEndEnabled = true;
 thisOplModel.generate();
 var masterDef = thisOplModel.modelDefinition;
 var masterCplex = cplex;
 var masterData = thisOplModel.dataElements;
 var masterOpl = new IloOplModel(masterDef,masterCplex);
 masterOpl.addDataSource(masterData);
 masterOpl.generate();
 masterCplex.solve();
 masterOpl.postProcess();

 //\**************Calling Sub-Problem 1*********************************
 var SubSource1 = new IloOplModelSource("Sub-Problem1.mod");
 var Sub1Def = new IloOplModelDefinition(SubSource1);
 var Sub1Def = thisOplModel.modelDefinition;
 var Sub1Cplex = cplex;
 var Sub1Data = thisOplModel.dataElements;
 var Sub1Opl = new IloOplModel(Sub1Def,Sub1Cplex);
 Sub1Opl.addDataSource(Sub1Data);
 Sub1Opl.generate();
 Sub1Cplex.solve();
 //\****************************************************************

 //\*******************Calling Sub-Problem2*********************************
 var SubSource2 = new IloOplModelSource("Sub-Problem2.mod");
 var Sub2Def = new IloOplModelDefinition(SubSource2);
 var Sub2Def = thisOplModel.modelDefinition;
 var Sub2Cplex = cplex;
 var Sub2Data = thisOplModel.dataElements;
 var Sub2Opl = new IloOplModel(Sub2Def,Sub2Cplex);
 Sub1Opl.addDataSource(Sub2Data);
 Sub2Opl.generate();
 Sub2Cplex.solve();
 //\****************************************************************

 } //end of main

 //--------------------Sub-Problem1.mod------------------------
 variables and constants definition;
 Objective function;
 subject to {
     Constraints:
       }
 //SubOpl1 doesnt have main function main{}

  //-------------------Sub-Problem2.mod----------------------
 variables and constants definitions;
 Objective function;
 subject to {
     Constraints:
       }
 //SubOpl2 doesnt have main function main{}
 //-------------------------------------------------------
EN

回答 1

Stack Overflow用户

发布于 2019-03-27 17:01:49

您可以像在预处理过程中一样设置时间限制,但也可以在主块中执行此操作:

你可以改变

代码语言:javascript
复制
Sub1Opl.generate();
Sub1Cplex.solve();

转到

代码语言:javascript
复制
Sub1Opl.generate();
Sub1Cplex.tilim=60;
Sub1Cplex.solve();

如果您需要Sub1CPLEX在60秒后停止。

注:该时间限制适用于cplex解算,因此如果您需要对多个解算设置总1800个时间限制,则需要对每个解算使用较小的时间限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55368722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档