问题标签 [docplex]

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 回答
262 浏览

python-3.x - 使用多处理并行运行多个 cplex 模型的问题

我想使用 python 多处理同时解决多个 cplex 模型。我知道python中多处理的基本示例是这样的:

我的脚本结构如下:

当我运行此代码时,cplex 部分不起作用。控制台继续运行,但没有任何反应,并且该过程不会自行完成,我每次都必须用键盘中断它。我的引擎有 32 个虚拟内核,它在 spyder -windows 10 上运行。

0 投票
1 回答
107 浏览

python - 尝试运行 docplex 示例时出现 BrokenProcessPool 错误

我正在尝试与 python 进程池并行运行一些 cplex 模型。我试图在我的 Windows 10 -spyder 3.6.9 上将作为带有 docplex 的进程池示例运行。当我运行时,我收到此错误:

我尝试使用不同的机器并将 max_worker 设置为 1,但它没有帮助。

编辑: 我把我正在使用的代码让它更清楚。这是我的 process_pool.py:

其中一个是 zoomontecarlo2.py,其中包含 cplex 模型并使用 process_pool:

当引擎进入“for future in concurrent.futures.as_completed(future_to_i)”循环时,内存信息为:

svmem(总数=17091981312,可用=9288286208,百分比=45.7,使用=7803695104,免费=9288286208)

当它到达“res = future.result()”时,它会因上述错误而崩溃。

0 投票
1 回答
198 浏览

anaconda - CPLEX with anaconda/python 学术版

我已经安装了 CPLEX 优化工作室(学术版),目前正在寻找一种通过 anaconda/python 访问它的方法。有人有一些见解吗?谢谢!

0 投票
1 回答
129 浏览

python - 如何修复 docplex 错误?它在 CPLEX 中运行良好

我正在尝试创建一组关于简单 VRP 问题的约束。

我试过 add_constraint 但我得到一个无效的语法错误

怎么能解决问题??现在我使用 add_constraint,我的错误和代码如下所示。

在此处输入图像描述

0 投票
2 回答
118 浏览

python - 在 cplex 解决方案池中访问不同类型的变量值的问题

我有这个 MILP 模型,我正在通过 cplex python API 解决:

Sum 是我用来制作第五个约束的变量(我只是用它来将某些范围内的 y 限制为 0)。在解决方案池中,我只需要 y==1 的 y 的索引。我有这个解决模型的解决方案池:

在我添加 constriant #5 之前,解决方案池功能没有问题,但是在添加 #5 之后,我得到了这个错误:

您好,我可以只访问解决方案池上的变量 y 值然后转换为整数吗?

0 投票
1 回答
39 浏览

python - 将使用 CPLEX 的 Tkinter(连同其他模块)Python 代码转换为可执行文件

我有这个 Python 3 代码,它使用 Tkinter、numpy、pylab、os ast 和 matplotlib,以及 CPLEX 和一些文件(txt 和 png)来解决一种车辆路由问题,我想变成一个可执行文件(从不以前做过)。我尝试使用 pyinstaller,但一直收到此错误 Modulenotfound,在寻找解决方案时,我发现到处都是建议,但没有一个有效(或者我可能只是做错了),以至于我想知道我是否甚至可以做出这个可执行文件,因为我的代码是从 CPLEX 实现的(来自 docplex.mp.model 导入模型)。

提前感谢您的所有帮助。

0 投票
0 回答
69 浏览

python-3.x - 为什么 cpx.populate_solution_pool() 需要这么长时间才能运行?

我有一个在 cplex python API 上运行的 MILP 模型。当我使用“cplex.populate_solution_pool()”时,它需要将近 50 分钟才能运行,这对我来说非常长。如何加快运行此命令的速度?

0 投票
3 回答
271 浏览

python-3.x - python中的IBM cplex ilog VS docplex

目前,我正在研究 python 上的 docplex。

我刚刚发现 IBM cplex Ilog 和 docplex 的结果完全不同。

尽管它们的约束条件、目标函数等一切都是相同的,但它们的解决方案却大不相同。

在某些情况下,docplex 说不可行,即使它在 Ilog 中是可行的。

我试图限制 docplex 容差的完整性和最小差距,但同样的问题发生了。

有谁知道为什么会这样?以及如何解决这个问题?

0 投票
3 回答
467 浏览

python - 如何在 Python 中使用 DOcplex.mp 结合 2 个约束以最小化成本和最大化容量

我有以下几点OF可以最大限度地降低供应链的成本:

mdl.minimize(mdl.sum((cs+ch+cf+cv*d[j])*q[j] for j in arcs) + mdl.sum(α*(eh+et*d[j])*q[j] for j in arcs) + mdl.sum(β*(gh+gt*d[j])*q[j] for j in arcs) + mdl.sum(X[f]*cjf for f in comb))

其中cs, ch, cf, cv, eh, et, gh, gt, cjf, α and β是一系列常量参数。

d[j]是在或元组列表中组合的起点i和终点之间的距离。jarcs

q[j]i是 中起点和终点之间j的流量变量arcs

X[f]是一个二元变量,用于在目的地打开设施j,容量为 ,和f的可能组合在中列出。jfcomb

第一个constraint 1确保q[i,j]来自原产地的流量i不超过其材料的最大dQ可用性iD[(i, j)]是一个二进制参数,如果起点和终点1之间的距离小于或等于阈值,则 的值为。(这个参数帮助我们限制传输距离。)ijD[(i, j)]0

for i in I: mdl.add_constraint(mdl.sum(q[(i, j)]*D[(i, j)] for j in J) <= Qi[i])

第二个constraint 2确保流向q[i,j]目的地的流量j等于目的地开放设施的j容量与容量f

for j in J: mdl.add_constraint(mdl.sum(q[(i, j)]for i in I) == mdl.sum(X[(j,f)] for f in F))

但是,我们需要另一个constraint 3来确保f在目的地开放的设施的容量总和j必须尽可能接近容量的总需求E。假设有 100 兆瓦的能源需求E = 100,那么我们希望降低OF供应成本,同时确保满足需求E。否则,最小化成本将为 0。这个约束可以表述为:

mdl.add_constraint(mdl.sum(X[j,f]for j in J for f in F) == E)

不幸的是,这个解决方案永远不可行。如果我们替换==<=是可行的,但它的成本最低,而且容量远不及最大。我们不需要这是一个严格的限制,但我们确实希望通过在具有不同容量E的目的地开设多个设施来尽可能接近。(例如,我们可以有一个 20 兆瓦、一个 5 兆瓦、两个 30 兆瓦和另一个 15 兆瓦的目的地,通过开放 5 个目的地达到 100 兆瓦)jf

一种方法是强制模型打开N多个位置j,但是,我们有一组 128 个位置。要从一系列场景中找到最小成本和最大容量,N=1意味着N=128我们需要运行这个模型 128 次。

除了上述约束之外,我们还有 3 个额外的约束:

  • 我们只能选择目的地j来建造设施,并且只能以一种能力开放f
  • 要打开的目的地之和j大于 0。
  • 始发地和目的地q之间没有负流ij

有没有办法:

  • constraint 3减少绑定,但仍然尝试在保持成本最低的同时达到目标E
  • 重新OF制定以将最小成本与最大容量相结合?

重要的是,我们不想运行模型 128 次。我们要建模选择目的地j以开设设施并f相应地选择容量,以最小化总供应成本并最大化装机容量。在我们的案例中,也不太可能只开设一个目的地j来满足所有需求E。取而代之的是,我们将有多个容量j较小的相加方法。fE

0 投票
1 回答
193 浏览

python-3.x - 为什么我的 cplex 约束使我的模型变慢?

我有一个我正在尝试解决的 MILP 模型。我有一个新的约束,我之前在这个问题上解释过 我的新约束是:

如果:y[(i,j,k)]==1

那么 : y[(j,i,k+1)] ,y[(j,i,k+2)],y[(j,i,k+3)] ,y[(j,i,k+ 4)],y[(j,i,k+5)],y[(j,i,k+6)],y[(j,i,k+7)],y[(j,i, k+8)==0 。

我以这种方式将这个约束放在我的模式上:

但是用这个新的constriant运行我的模型会使我的模型求解速度很慢。我的约束是否有问题,或者有没有办法改变它以使我的模型可以更快地解决?

编辑: 当我以这种方式放置条件时,运行时间很快,但模型不尊重解决方案中的 if then 约束。我的代码: