首页 > 解决方案 > IBM 的 CPLEX cplex.setOut(env.getNullStream()) 无法正常工作

问题描述

我已经浏览了这些问题,看看是否有人已经问过这个问题,据我所知,没有其他人遇到过这个问题。

我试图从命令行抑制 oplrun 的详细输出。我知道有些人很幸运地使用了 cplex.setOut(env.getNullStream()),其中 cplex 是 IloCplex 类型的对象。函数 setOut() 继承自 IloAlgorithm 类。

当我尝试在模型 (.mod) 文件中的主代码块中使用它时,我收到错误消息:

脚本运行时错误:未知属性“setOut”。

我在调用solve() 之前调用函数。

有什么想法可能是错的吗?

谢谢。

这是一个代码片段:

main{

    var opl = thisOplModel;
    var mod = opl.modelDefinition;
    var dat = opl.dataElements;
    var set = opl.settings;
    var cplex1 = new IloCplex();

    cplex1.setOut(env.getNullStream()); //Giving me problems

    opl = new IloOplModel(mod,cplex1);
    opl.addDataSource(dat);
    opl.generate();

    cplex1.tilim = opl.tiLim;
    cplex1.mipemphasis = 0;

    cplex1.solve();
    // more stuff ... 
}

标签: optimizationcplexopl

解决方案


啊,您正在使用IBM ILOG Script for OPL(又名 oplscript)。该setOut方法仅在 C++、Java、.NET OPL API 中可用(例如,请参见此处)。

根据文档中的页面,CPX_PARAM_SCRIND是“没有等效 OPL 选项的 CPLEX 参数”之一。除非您切换到使用 C++、Java 或 .NET OPL API 之一,否则我认为不可能按照您的要求进行操作。在此处的官方 IBM developerWorks 论坛上提出了类似的问题。


推荐阅读