我正在尝试在Mac OS 10.7.5上使用Python中的CPLEX.CPLEX似乎只支持32位python.我在python shell中使用它来检查它是否是32位:
import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32
Run Code Online (Sandbox Code Playgroud)
我按照man 1 python的建议尝试了这两个命令,但似乎都没有强制32位:
export VERSIONER_PYTHON_PREFER_32_BIT=yes
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
Run Code Online (Sandbox Code Playgroud)
似乎唯一有用的是:
arch -i386 python
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用调用其他脚本的arch运行脚本,它们似乎都以64位模式启动.是否有另一个系统范围的变量强制它进入32位模式?
设置目标函数和约束后,我使用
prob.solve()
print prob.solution.get_objective_value()
Run Code Online (Sandbox Code Playgroud)
实际上,我只想打印目标值,然而,它显示了很多cplex的信息,
Tried aggregator 1 time.
LP Presolve eliminated 5 rows and 1 columns.
All rows and columns eliminated.
Presolve time = -0.00 sec. (0.00 ticks)
0.5
Run Code Online (Sandbox Code Playgroud)
我只想显示最后一行0.5,如何避免Cplex打印其他信息?先感谢您.
python logging mathematical-optimization linear-programming cplex
我正在尝试用大量变量和约束来解决线性程序.我需要动态生成约束矩阵并在python中构建lp.我可以在Cplex for Python上找到的唯一一个教程是来自IBM的官方教程,这个教程还不太详细.所以我的问题是:首先,一般问题是,是否有更好的教程或有充分记录的内容?第二,一个更具体的问题,在官方教程中,有一个例子显示填充lp的不同方法,问题陈述是:
Maximize
x1 + 2x2 + 3x3
subject to
–x1 + x2 + x3 <= 20
x1 – 3x2 + x3 <= 30
with these bounds
0 <= x1 <= 40
0 <= x2 <= infinity
0 <= x3 <= infinity
Run Code Online (Sandbox Code Playgroud)
并按行填充如下:
def populatebyrow(prob):
prob.objective.set_sense(prob.objective.sense.maximize)
# since lower bounds are all 0.0 (the default), lb is omitted here
prob.variables.add(obj = my_obj, ub = my_ub, names = my_colnames)
# can query variables like the following:
# lbs is a …Run Code Online (Sandbox Code Playgroud) 我是LP的新手,并且只PuLP在Python中使用过.
为什么SCIP 3.2.1 - CPLEX 12.63和之间存在速度差异CPLEX 12.6.3?SCIP是否仍然使用CPLEX进行求解?
为什么有人将SCIP与CPLEX求解器一起使用,而不是直接使用CPLEX?
我转向 CPLEX,因为我有一个很大的线性问题需要解决。
如果我们使用scipy.optimize.linprog表示法:
最小化:c^T * x
服从:A_ub * x <= b_ub 且 A_eq * x == b_eq,
那么我的A_ub矩阵的形状大致为 (20000, 10000):20000 个约束,10000 个变量。
使用 numpy 构造矩阵A_ub、A_eq和向量c、b_ub、b_eq非常快。
但从中创建 CPLEX 问题大约需要 30 秒(这在我的情况下是不可接受的)。发生这种情况是因为他们的 Python API 无法将矩阵作为输入(至少在测试不同场景几天后我找不到这样的功能)。
创建问题的唯一方法是逐列或逐行构造它,如下所示:
problem = cplex.Cplex()
problem.set_problem_type(problem.problem_type.LP)
problem.objective.set_sense(problem.objective.sense.minimize)
problem.variables.add(obj=c)
n_constraints, n_vars = A_ub.shape
index = list(range(n_vars))
list_rhs = list(b_ub)
# for each row (constraint) create a SparsePair instance
sparse_pairs = [cplex.SparsePair(ind=index, val=A_ub[i]) for i in range(n_constraints)]
# this piece takes 30 seconds …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 ILOG 目录中存在的 setup.py 文件安装 CPLEX for python。我正在使用 Windows 8 32 位和 python 2.7。我正在使用此命令进行安装:
python setup.py install
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误,
error: could not create 'build': access is denied.
Run Code Online (Sandbox Code Playgroud)
是因为权限吗?我怎样才能解决这个问题?谢谢
我正在使用 CPLEX 12.8 为我的论文项目建模,但我遇到了无法解决的问题。我得到以下输出:
CPLEX 12.8.0.0: integer infeasible.
1828 MIP simplex iterations
316 branch-and-bound nodes
No basis.
Run Code Online (Sandbox Code Playgroud)
有没有办法知道哪些约束相互矛盾?
我是 cplex 的新手。在我的 ilp 中,我有几个 if-else 语句。我想使用 cplex 使用 java API 解决我的问题。我不知道如何在 cplex 中制定 if-else。例子:
if x>0 then a=1
else if x=0 then a=0
Run Code Online (Sandbox Code Playgroud) 我有一个优化问题,我编写了一个 python 程序来解决它。我将 Pulp 与 CPLEX 求解器一起使用:
import pulp
prob = LpProblem("myProblem", LpMinimize)
x = pulp.LpVariable.dicts("p", range( K ), 0, 1, pulp.LpContinuous)
prob += pulp.lpSum( x[k] for k in range( K ) )
...
# Rest of the constraints
status = prob.solve( pulp.CPLEX( msg = 0 ) )
Run Code Online (Sandbox Code Playgroud)
我收到错误:
File "C:\Anaconda\lib\site-packages\pulp\solvers.py", line 468, in readsol
raise PulpSolverError, "Unknown status returned by CPLEX: "+statusString
pulp.solvers.PulpSolverError: Unknown status returned by CPLEX: infeasible
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何测试问题是否不可行?我想阻止这个事件,如果问题不可行则返回 0。
我试过 :
if prob.status == 'infeasible':
...
Run Code Online (Sandbox Code Playgroud)
我试过 …
我在 GMAS 中编写了我的 MIP 模型,求解器表明我的模型中有 1535272 行、3287490 列和 8425140 个非零值(我不确定它对 GAMS 来说是否太大)。经过 899677 次迭代(1:26:36 运行时间),GAMS 显示
资源使用,限制 1084.469 1000.000 迭代次数,限制 900026 2000000000
MIP 状态 (108):超出时间限制,没有整数解 Cplex 时间:1002.13 秒(确定 849920.06 滴答) CPLEX 错误 1217:不存在解。超出资源限制,未找到整数解。我的电脑有 i7-8700 CPU @ 3.2GHZ 和 32 RAM(计算停止时还没有用完)。我该如何处理这个问题,或者它对 GAMS 来说太大了?