问题标签 [cplex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3492 浏览

c++ - 使用 cplex 求解时如何设置间隙

我正在用 C++ 编写代码并调用 CPLEX 来解决它。它可以快速找到一个非常好的解决方案,但需要很长时间才能尝试改进它。所以我想将间隙设置为更大的值来终止代码,这就是我使用的:

但是编译器给了我一个错误,说EpGap是一个未声明的标识符。相对间隙的默认名称是什么?

0 投票
1 回答
160 浏览

matlab - 距离+负载分配matlab OR cplex

我正在尝试解决 MATLAB 或 CPLEX 上的优化问题。我们有两个集合 A(n 个元素)和 B(m 个元素)。我们必须将 A 中的一个元素准确地分配给 B 中的一个元素。

B 中的单个元素可以根据需要在 A 中分配任意数量的元素(最大 n)。将 A 中的元素 i 分配给 B = cij中的 j 元素是有代价的。

此外,与分配给 B 中的元素的 A 中元素的数量(负载)相关联的另一个成本。该成本是: lj = ( sum (分配给 j 的元素数) ^2 )

因此,总成本为:sum (cij+lj)

我们希望找到最优分配,使得 sum (cij+lj) 最小化。如果没有负载,该问题可以表述为二进制整数编程。我关心的是如何在 MATLAB 或 CPLEX 中编写这样的函数。

0 投票
1 回答
3708 浏览

c - 在 C 中使用 CPLEX API 的 MEX 文件的“未找到体系结构 x86_64 的符号”

我目前正在 MATLAB 中编写一个 MEX 文件,该文件使用 C 中的 CPLEX API 来解决线性规划问题。不幸的是,当我尝试编译时遇到了“未找到架构 x86_64 的符号”问题,但我不知道如何解决它。

一些基本信息:

  • 我可以编译yprime.c和其他不使用 CPLEX API 的 MEX 文件
  • 我在 Mac OSX 10.7.2 上使用 MATLAB 2011b
  • 我正在使用 XCode 4.2 中包含的 GCC 4.2 包。
  • 我已经为 MATLAB 应用了 XCode 4.2 补丁

我将非常感谢人们可能提出的任何建议。我在下面包含了一份详细的错误报告。

0 投票
1 回答
1291 浏览

c - 使用 CPLEX API 的 MEX 文件的编译器错误

我目前正在 MATLAB 中编写一个 MEX 文件,该文件使用 C 中的 CPLEX API 来解决线性规划问题。

不幸的是,当我尝试编译时遇到了“未找到架构 x86_64 的符号”问题,但我不知道如何解决它。我在下面包含了(MATLAB)输出的副本。我需要做什么才能成功编译?

还有很多与寄存器分配和保存相关的链接器“无法创建紧凑展开”错误。太多了,我删除了其中的 80% 以使其更具可读性。这些有关系吗?他们是否值得关注?

其他一些可能有用的信息:

  • 我可以编译 yprime.c 和其他不使用 CPLEX API 的 MEX 文件
  • 我在 Mac OSX 10.7.2 上使用 MATLAB 2011b
  • 我正在使用 XCode 4.2 中包含的 GCC 4.2 包。
  • 我已经为 MATLAB 应用了 XCode 4.2 补丁

这是(MATLAB)输出:

问题解决了:

为了将来参考,警告消息在使用 CPLEX 时不是问题。实际问题是缺少符号,这些符号通常捆绑在 XCode 4.2 中的 CoreFoundation 和 IOKit 框架中。通常可以通过使用 -framework CoreFoundation 和 -framework IOKit 标志来包含它们,但 MATLAB 中的 mex 命令不支持此功能。不过幸运的是,您可以使用 LDFLAGS='\$LDFLAGS -framework CoreFoundation -framework IOKit' 为链接过程添加基于自定义的标志...

0 投票
0 回答
151 浏览

c# - How can error in external API depend on calls to GC.Collect() in main application?

I have been trying to explaing this behavior in my c# optimization routine.

The program creates and solves large LPs using the cplex 12.2 API in a subroutine. For the purpose of hunting this bug, I changed it so that it solves the same problem repeatedly. After solving, I call cplex.End() on the instance, and the cplex instance goes out of scope, so the memory will be deallocated.

The second time I create the model and call cplex.Solve(), it does not solve the model. It gives the error: "CPLEX error 1217: No Solution Exists", which is not so credible since it solved the same problem the first time. (memory requirements at the moment of the crash were just 1.3 GIG)

Now, if I force a garbage collect between the two solves, cplex solves the model the second time as it did the first time.

Can anyone explain this behavior to me? And the way to properly fix it?

0 投票
2 回答
881 浏览

java - 运行 32&64 位 java 代码

我正在开发一个调用 32 位 CPLEX 优化器的 Java 程序,
但我将在 64 位机器上运行此代码。
我可以在 64 位中运行部分程序,而在 32 位中运行其他部分吗?

0 投票
1 回答
426 浏览

linear-algebra - 试图在 cplex 中读取二次程序,得到错误

我正在尝试使用“读取”命令将 CPLEX LP 文件加载到 CPLEX。我相信在这个问题中,我有一组二次约束。但是,据我了解,CPLEX 仍将尝试解决二次规划问题。

但是,当我尝试将其读入时,出现此错误:

在阅读二次规划问题时,我需要做些什么特别的事情吗?

注意:我可以将此 LP 文件加载到 scip 并使用以下方法解决它:scip -f

0 投票
1 回答
1346 浏览

java - CPLEX Java 的最佳使用以实现高吞吐量

我正在使用 CPLEX Java API 解决大型优化问题。目前我只是

这很好用,但我经常重复这个过程,我只是在改变系数。每次重复时,我都会创建一个新cplex对象并重新创建所有变量。

有没有更有效的方法来做到这一点?IBM 文档中有“将模型添加到模型实例”之类的语言,这听起来很奇怪,但我认为它暗示了能够重用事物。

来自更有经验的用户的任何建议都会很棒。谢谢。

0 投票
1 回答
841 浏览

matlab - 解决由于非线程安全 API 函数而并行发生的分段错误

我目前正在 MATLAB 中编写一个 MEX 文件,以使用 MATLAB 2012a 中的 parfor 函数并行运行实验。MEX 文件执行一些非常简单的数字任务,但依赖于 IBM 的 CPLEX 12.4 API。

虽然我的 MEX 文件是按顺序运行的,但当我并行运行时,我不可避免地会收到“随机”分段错误。在将分段错误的堆栈跟踪发送到 MATLAB 后,他们建议错误源自 C 库中的“putenv()”函数,这显然不是线程安全的。

我没有在 MEX 代码中使用 putenv() 函数,但事实证明,我绝对必须从 CPLEX 12.4 调用的函数之一确实使用了它。我想知道是否有什么办法可以避免此功能导致的分段错误。以前有人建议“锁定我的位”和“使用信号量”,但当谈到这些概念时,我真的有点不知所措。

任何建议或方向将不胜感激。

0 投票
2 回答
6055 浏览

c++ - 如何访问矩阵形式的所有变量的解值?

(注意:这个问题与IBM 的 ILOG CPLEX C++ API、2007 年前后通过 HTTP 的 pdf 格式的文档有关,以及可通过 IBM 的 FTP获得的“版本 12”的当前材料)

我有一个矩阵变量,我想将它们的值传递给矩阵参数。这就是我所做的:

但显然getValues()只适用于IloNumVarArray. 我怎样才能解决这个问题?