首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ILOG优化演播室中OPL接口与Concert技术的区别

ILOG优化演播室中OPL接口与Concert技术的区别
EN

Stack Overflow用户
提问于 2021-03-20 01:52:59
回答 2查看 262关注 0票数 0

我是IBM的CMPLEX优化工作室的新手,我试图了解实现目标的最佳方法是什么。我试图实现一个决策优化解决方案,表示为混合整数线性规划,为我的问题创建了一个相关的表示,然后与CMPLEX解决程序接口。

最初,我开始用OPL语言开发模型。但是,由于我打算从C++应用程序中动态调用具有相同模型但具有不同数据的求解器,我意识到构建模型并通过Concert技术(#reff1#reff2)的一部分CMPLEX C++ API调用解决程序更有意义。当然,Concert技术为构建您的模型提供的接口级别要低得多,与在OPL中构建模型和直接运行它相比,表示它的难度要低得多。然后,我了解了"OPL接口“,它还公开了一个C++ API,如果正确理解它,您可以从OLP定义加载模型并使用自定义数据源,并调用解决程序。

那么,我的问题是,对于特定语言,OPL接口和CMPLEX (Concert Technology)如何比较两者是否可以用于相同的目的,以建立和执行优化模型?据我所知,OPL接口与OPL的C++ API是基于C++音乐会技术的。如果目标是快速测试模型,但使用C++应用程序动态提供的自定义数据输入,我应该选择OPL INterfaces,还是有理由在Concert技术中使用CMPLEX C++ API更好?

软件版本: ILOG优化Studio 20.1.0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-20 23:44:09

与亚历克斯的回答不同(我们都很了解对方!),我肯定会建议直接从C++使用Concert调用。在过去20年中,我在许多项目中使用了OPL,我也在许多项目上使用了来自C++、Java和C#的Concert调用。至少对我来说,我发现将建模变量和约束更细粒度地集成到我的C++ (或C#或Java)代码中是一个巨大的优势。

如果您来自一个熟悉建模语言(AMPL、GAMS、MPL等)的背景,那么当您第一次开始使用Concert时,它可能看起来更加复杂或困难。但是,如果您来自使用C++、C#或Java的标准编码背景,那么将CPLEX作为一组库对象和函数来处理可能比学习另一种专门的编程语言更自然。

我们发现完全使用来自C++ (或C#或C#)的Concert会改变您对使用CPLEX的看法。与我们一起工作的软件开发人员似乎更快乐,因为CPLEX只是我们可以像其他软件一样使用的另一块软件。我们可以将CPLEX IloNumVars等作为普通C++类中的成员变量,将它们放入字典、列表或数组中;通常将它们视为普通的C++对象。这使您很容易将CPLEX建模变量和约束集成到您的软件中。

如果你想使用OPL,那么它肯定会鼓励(强制?)标准(C++)代码与数学模型内部的分离。您可能会发现这是一种优势(将模型单独保留在另一种语言中)。即使使用OPL,如果您的数据结构(在数据、数据库或C++中)发生了更改,您可能也必须更新OPL结构和代码,因此我们发现这通常会给您留下一组额外的东西来保持更新或同步。

确实没有“正确”的选择--这取决于你(和你的团队)的喜好。无论您使用OPL还是Concert,这些只是将您的模型导入CPLEX的方法。在解决问题的性能上不应该有任何区别。

票数 3
EN

Stack Overflow用户

发布于 2021-03-20 07:41:27

我用优化(也称为规定性分析):我们应该用建模语言还是通用编程语言编写模型?来回答这个问题

我倾向于推荐OPL,然后您可以通过OPL C++ API将所有OPL对象视为C++对象。除非您想节省时间和内存,并且准备花费更多的人工时间来构建您的模型。

我在https://www.linkedin.com/pulse/which-aml-gpl-do-you-use-call-cplex-alex-fleischer/做了一些调查

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

https://stackoverflow.com/questions/66717561

复制
相关文章

相似问题

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