问题标签 [gurobi]
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.
java - Gurobi 无法添加约束
我正在用 Java 编写一个程序来解决 Gurobi 的 MIP 问题。这个问题需要很多约束和变量,但第一个不能添加到我的模型中。在问题的更深处,当我尝试添加约束时,模型会显示它(通过调试读取),但row_no
等于-1。第一件事:
创建变量的多维矩阵:
/li>添加约束(看起来像 Xij < 10):
/li>调试项目:有
iMax * jMax
列、iMax * jMax
变量、iMax * jMax
约束(带row_no
= -1)和 0 行。
任何的想法?
编辑
我不确定 的使用row_no
,但我认为 Gurobi(从抽象的角度来看)将数据组织成一个伪矩阵,其中变量存储为列,约束存储为行。为什么我这么说?因为每次我添加一个变量时,列的计数器都会增加 1 并且它col_no
与特定的列相关联,而不是当我添加一个约束时,行的计数器不会改变。
列:http ://www.gurobi.com/documentation/6.0/refman/java_grbmodel_getcol.html 行:http ://www.gurobi.com/documentation/6.0/refman/java_grbmodel_getrow.html
编辑 2
我对列、行或其他任何内容都没有任何问题,但是当我尝试解决宽松模型时,Gurobi 会显示以下输出:
该解决方案是可行的,但无法显示任何有用的信息。我坚持我应该只在添加变量而不是约束之后更新模型。另外,我从 Gurobi 文档中了解到,如果模型需要更新,它会抛出异常(不是我的情况):
“缺少更新的最常见症状是 NOT_IN_MODEL 异常,这表明您尝试引用的对象尚未在模型中”
编辑 3
我已经按照您的建议更新模型(添加约束后)并且一切正常。我认为这不是强制性的,但是与文档(和代码示例)相比,它是强制性的。
python - 在 Python 中反复求解 Gurobi 模型
我需要反复求解 gurobi 模型(每次迭代使用不同的变量值)。我不是每次迭代都重建模型,而是尝试设置模型,然后循环重复优化,但变量值不会更新。这是一个简单的例子。
如何一遍又一遍地使用现有模型?
amazon-web-services - 在 Amazon EC2 上免费提供学术 Gurobi?
Gurobi 为学术用途提供免费许可。我想在执行 MapReduce 流程时在 Amazon EC2 上使用 Gurobi。Amazon EWS 提供 Gurobi 服务,但太贵了。这对于需要大量机器的 MapReduce 来说会更多,每台机器同时使用 Gurobi。我想知道是否有人尝试部署学术许可证以在 EC2 上使用 Gurobi。
java - Gurobi 无法设置或打印(手动)变量值
我正在使用 Gurobi 6.0.2 用 Java 编写程序,但我在管理变量方面遇到了一些麻烦,特别是我无法设置或打印它们。
例子:
NetBeans 显示此消息:
当我解决松弛模型时也会发生此问题,因此我无法检索变量的值。
python - Gurobi 线性约束
在 Python 中将此约束添加到 gurobi 的最简单方法是什么。
D 是具有正项(常数)的给定矩阵。b 是我的变量的向量。T 和 K 是常数。
gurobi - 如何在 Gurobi 中更新约束的常数项
我面临一个问题,我必须迭代地调用 Gurobi 引擎。在运行之间,我必须更新一些约束中的常数项。我查看了手册,其中我发现 GRBModel::chgCoeff() 可用于更改约束中的变量系数,但没有与更改常数项相关的函数。有什么想法吗?谢谢!
python - Gurobi,如何将连续变量更改为二进制变量
我正在使用 gurobi-python 界面。无论如何将连续变量转换为二进制变量。我只是不想转换
至
我必须以另一种方式来做,而不是使用
感谢您的可能反馈。
谢谢你。
python - Gurobi Python - 当我将代码移动到服务器时,RHS“改变”
我在我的个人电脑上用 python/gurobi 写了一个运输线性程序。需求节点的典型约束j
可能如下所示:
在哪里
x[i, j]
是边缘 (i,j) 上流的决策变量
arcs
是供需节点之间所有边的集合
demand[j]
是在 j 处所需的已知分数常数
当我在我的个人计算机上测试此代码时,它工作正常。但是,当我将它移动到我组织的计算集群并尝试运行它时,右侧 ( demand[j]
) 不一样,我得到的x[i,j]'s
.
linux - Anaconda Python for Gurobi 6.0.4 安装_Py_FalseStruct 错误
为了运行优化问题,我们将 Gurobi 6.0.4 与
- Anaconda (2.2.0 版) Python (Python 2.7.9.) 上
- 带有 2.6.32-504.16.2.el6.x86_64 内核的 Linux CentOS 版本 6.6(最终版)
遵循 Gurobi 的安装指南(在此处列出:http: //www.gurobi.com/documentation/6.0/quickstart_linux.pdf)
一切都在第一步中解决了。Gurobi 已安装,可以获得许可证。此外,已根据手册设置了 PATH 变量(在 .bashrc 中),对 anaconda python 的引用进行了一些扩展(而不是 python 的其他本地版本(即 2.7 和 3.4):
按照我们执行的程序:python2.7 setup.py install
在各自的目录/opt/gurobi604/linux64
中。在此之后,您通常可以import gurobipy
在 python 解释器中运行该命令而不会出现错误。对于旧版本的 Gurobi(如 5.6.3),这非常有效。
对于 6.0.4,虽然我们不断收到错误:
这是非常可重现的,无论我们是否将 anaconda 也放在全局路径中,并检查 bash 是否有任何环境变量覆盖,但事实并非如此。
在 Windows 8 上,Gurobi 6.0.4 和 Anaconda Python 2.2.0 可以毫无问题地协同工作。
也从这里应用提示:Linux 上的 Python 模块错误 没有解决。
有没有其他人在使用这种工具组合时遇到过这些问题?谢谢。
python - Gurobi Python == 和变量
==
Gurobi Python是如何工作的?
在我创建了所需的变量 ( x[s,d,r]
) 之后,我试图做出一个if
类似x[s,d,r] == 1
. x[s,d,r]==0
问题是,这个陈述总是正确的,所以我将它设置为or并不重要x[s,d,r]==2
,它总是一样的。
x[s,d,r]
是由 定义的二进制变量 x[s,d,r] = m.addVar(0.0,1.0,1.0,GRB.BINARY,"x_"+ s+"_"+ d +"_" + r)
。
因此,如果 x[s,d,r]>0.001: 是始终评估为“真”的部分。