问题标签 [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 投票
1 回答
734 浏览

c++ - 如何避免 C++ 中的多线程问题(wxWidgets 和 Cplex)?

我使用用于 GUI 的 wxWidgets 和 IBM ILOG Cplex 用 C++ 编写了一个工具来解决优化问题。

在 wx 事件处理程序调用的函数之一中,我调用了 IBM ILOG Cplex Optimizer,它本身就是多线程代码。

我意识到这会导致带有无意义的内存内容的不确定性错误。

由于我没有编写多线程代码的经验,并且想在不花三周时间学习如何做的情况下离开,我想知道:

是否有一些安全的,可能不优雅的方法来避免这里的问题?(也许比将文件写入磁盘、通过操作系统调用不同的任务并将输出读回更优雅)。

从 wx 线程启动 Cplex 线程是不是一个坏主意?

使用两个可能在内部使用不同库来实现多线程的库通常是一个坏主意吗?(我不知道除了 pthreads 以及 cplex 或 wx 使用什么之外还有什么)。

任何帮助和背景信息表示赞赏。

0 投票
1 回答
765 浏览

c++ - CPLEX:抛光时发现的每个解决方案调用的任何回调?

抛光期间会调用哪些回调?更具体地说,是否有一个回调会为在抛光过程中找到的每个新解决方案调用?

我在 C++ 中有一些(旧)代码使用 MIPInfoCallback 并且在 B&B 期间可以正常调用,但是在抛光过程中它似乎没有被调用,即使抛光发现可能有 20 或 30 个改进的解决方案。该文档指出,在抛光期间通常会调用回调,但可能是 MIPInfoCallback 仅在探索每个节点之前被调用,在我的情况下,抛光不会探索任何额外的节点。

我尝试切换到使用现有回调,但这似乎对我产生了巨大的性能影响 - 只需将回调的类型从 MIPInfoCallback 更改为 IncumbentCallback 即可将获得第一个整数可行解决方案的时间从大约 20 分钟更改为超过 3小时(我真的只是改变回调的类型,保持回调的主体不变)。我怀疑这是因为使用现有回调会在搜索中关闭某些内容。

这是在带有 CPLEX 12.1 的 Windows 上的 C++ 中,但计划很快更新到 12.5。

0 投票
2 回答
3165 浏览

c++ - 如何从 Cplex 获取约束数量

我有一个用 C++ 编写的很长的程序,我正在用ILOG Cplex12.5 Solver它来解决它。如何获得约束的总数?有它的功能吗?

0 投票
1 回答
1208 浏览

c++ - 我可以获得 IloNumVarArray 的值吗?关于目标函数的定义

我正在使用 CPLEX 来解决 mip。我的目标是最小化正的决策值的总和。所以我在定义目标函数的时候需要判断决策值的符号。例如:

如何正确表达?定义目标函数时可以得到“pp”的值吗?

0 投票
1 回答
1063 浏览

cplex - 使用 ILOG 在 CPLEX 中最大化目标函数

我正在处理一个项目,我想知道关于 CPLEX for ILOG 的功能。例如,我为每个客户销售产品,我对 6 种产品中的每一种都有不同的概率。这意味着一个人购买产品的概率是不同的。假设我有 2 个客户和 6 个产品。对于第一个客户,第一个产品的概率是 0.5,第二个产品的概率是 0.3,等等……所以我想最大化我的利润,我知道每种产品的收入。我的问题是如何根据这些概率选择最有利可图的产品。显然,必须有一种使用这些概率的方法。在项目中,它们只是给出概率,但没有解释如何使用它们。现在,我的功能是这样的:

数量用于确定渠道用于销售产品的次数。4 个不同的频道需要付费。

0 投票
1 回答
1596 浏览

c++ - CPLEX C++ 接口:如何获取违反约束的索引?

我尝试使用 C++ 中的求解器 IBM ILOG CPLEX 求解整数线性程序 (ILP)。求解器指出问题不可行并指出违反约束的索引。我的问题涉及 C++ 中这种约束的识别和分析。

分析约束的手动方法是使用该函数将问题导出到文本文件extractModel并在该文件中查找违反的约束。

最好,我想在 C++ 中获取违反约束的索引,并尽可能多地获取有关此冲突的信息。

目前,我正在使用冲突优化器,但没有从中获得任何有用的信息。具体来说,我保留了IloRangeArray我曾经添加到模型中的所有约束,调用refineConflict这个数组,然后使用该函数getConflict来查询(可能)违反的约束。结果是我曾经添加的所有约束都可能被违反,并且没有任何约束被证明被违反。

如何访问错误消息中报告的指出问题不可行的一个约束的索引?

另外,我是否错误地使用了冲突优化器?例如,当我将添加到模型中的约束复制到单独的数组中时,我做错了什么吗?(Cplex 中某些类的复制构造函数和赋值运算符似乎具有我不理解的非标准行为。)

任何帮助表示赞赏。

0 投票
1 回答
742 浏览

c++ - 使用 CPLEX 和 VS2010 的访问冲突写入位置

我是 C 编程新手。我正在使用 Visual Studio 2010 在 C++ 代码中运行 CPLEX 库。执行某些操作时出现访问冲突。

违规在 CRT 文件 mlock.c 中定义的函数 void __cdecl _unlock 中报告。具体的行是 LeaveCriticalSection(_locktable[locknum].lock);。

错误消息是 0x0f63443b 处的未处理异常:0xC0000005:访问冲突写入位置 0xeb43c7c4。我的解释是这是一个与内存相关的问题,但我不确定。另外,我不知道如何在代码中跟踪内存块 0xeb43c7c4。

下面是调用栈:

_unlock 的源代码位于 mlock.c 文件中:

printf 的来源在文件 printf.c 中,如下所示:

如果我在项目属性中删除音乐会文件的链接,我会收到相同的错误消息,但在文件 tidtable.c 中的 _CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue() 行:PFLS_GETVALUE_FUNCTION flsGetValue = FLS_GETVALUE;

我会很感激任何建议。

谢谢。

0 投票
1 回答
1184 浏览

c++ - Cplex c++ 循环

我需要使用 Visual c++ 中的可调用库编写一个 cplex 程序。

我需要以这种方式使用 numrows 和 numcols 。

我只放了程序的开头,因为我的问题在开头。我的程序崩溃了,我找到了哪里。它发生在循环增加numrows之后。似乎它不能跳出循环和 std::cout << NUMROWS << "and "; 永远不会出现。如果我把它写在循环中,我会看到这个值,但不是之后。我找不到原因。你知道为什么吗?

谢谢

0 投票
2 回答
385 浏览

c++ - 绘制 cplex 优化的进度

我希望能够绘制由 cplex 解决的 MIP 的进度。具体来说,我想将下限和上限绘制为 cpu-time 的函数。但是从节点日志复制粘贴似乎不是最聪明的方法。是否可以在优化期间访问这些信息并将它们打印出来/保存到文件中?我正在使用 Concert Technology C++ 接口。

0 投票
1 回答
367 浏览

c - CPLEX、C 编码

我正在用 C 编写 linux 上的优化问题。我正在使用 CPLEX 来解决这个优化问题。我编写了我的代码和所有内容,但是当我尝试在终端中编译时,我收到了这样的错误:

等等......我正在尝试将我的代码中的 CPX 更改为 CPXX 但我仍然有一个 64 位机器 model.c 是我的 C 文件的名称。model.c:(.text+0x115c): undefined reference to "CPXnewrows" model.c:(.text+0x121b): undefined reference to "CPXchgcoeflist" model.c:(.text+0xd62): undefined reference to "CPXnewcols" 请任何帮助将不胜感激!!!