我们如何以编程方式检索 OPL 中 CP Optimizer 的软件版本号?

How do we programmatically retrieve the software version number of CP Optimizer in OPL?

我想在输出中包含求解时使用的 CP Optimizer 版本(例如 12.9)。我正在处理在软件的多个版本下解决的问题,因此在查看解决方案时了解使用的是哪个版本会很有帮助。我不能只检查关于菜单,因为我将结果写入外部文件并在很长一段时间后查看它们。

有没有办法以编程方式检索 OPL 中的版本号?

我在提供的 Oplide 中使用 OPL。我找到了 .NET 接口的 CP.Version 属性 (https://www.ibm.com/support/knowledgecenter/en/SSSA5P_12.9.0/ilog.odms.cpo.help/refdotnetcpoptimizer/html/P_ILOG_CP_CP_Version.htm),但我无法找出 OPL 代码中的等效项。

好像IloCP scripting class没有导出版本号。但是,我可以看到其他两种获取版本的方法:

选项 1:从 executemain 块中,您可以实例化 IloCP Java class 并使用 class 的 getVersion() 函数:

execute {
   var cpo = IloOplCallJava("ilog.cp.IloCP", "<init>", "()Lilog/cp/IloCP");
   writeln(cpo.getVersion());
   cpo.end();
}

选项 2:IloCplex scripting class 确实提供了 getVersion() 函数。所以在 main 块中你可以做

main {
   writeln(cplex.getVersion());
   // or
   var cpx = new IloCplex();
   writeln(cpx.getVersion());
   cpx.end();
}

CP Optimizer和CPLEX的版本号相同