小编jab*_*zzo的帖子

pyomo 列出可用的求解器

要在 pyomo 中实例化求解器,通常使用求解器工厂:

from pyomo.opt import SolverFactory
opt = SolverFactory('glpk')
Run Code Online (Sandbox Code Playgroud)

有没有办法知道 SolverFactory 将接受哪些字符串?解决方案如下所示:

print(SolverFactory.list_detected_solvers())
Run Code Online (Sandbox Code Playgroud)

optimization python-3.x pyomo

6
推荐指数
1
解决办法
1万
查看次数

uint8 numpy数组的内存有效绝对差

我有两个大的np.uint8 ndarrays,ab。我需要计算:c = np.sum(np.abs(a - b), axis=(-2,-1,))

由于它们是未签名的,所以我不能仅减去它们。一种简单的解决方法是将它们转换为更大的数据类型:

c = np.sum(np.abs(a.astype(np.int16) - b.astype(np.int16)), axis=(-2,-1,))
Run Code Online (Sandbox Code Playgroud)

其中在总使用4 *倍数组的内存。在理想的世界中,我想成为这样的人:

c = np.sum(np.abssub(a, b), axis=(-2,-1,))
Run Code Online (Sandbox Code Playgroud)

它将使用与阵列相同的内存量。可悲的是,我在numpy的文档中找不到这样的功能。目前,我正在执行以下操作:

diff = np.empty_like(a)

mask = a > b
diff[mask] = (a - b)[mask]
# b shape is different but broadcasts to a
# That is why I use mask after substracting

mask = np.logical_not(mask, out=mask)
diff[mask] = (b - a)[mask]

c = np.sum(np.abs(diff, out=diff), axis=(-2,-1,))
Run Code Online (Sandbox Code Playgroud)

其用途是仅仅 2.5 **的存储器中作为阵列倍量。

有一个更好的方法吗?


* …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy integer-overflow

3
推荐指数
1
解决办法
71
查看次数

Pyomo 找不到 gurobi 求解器

我正在尝试运行一个简单的问题来测试我的设置:

#! /usr/bin/env python3

import pyomo.core as pyomo
from pyomo.opt import SolverFactory, IOptSolver

model = pyomo.ConcreteModel()
model.d = pyomo.Var(initialize=1, bounds=(0,2,))
model.g = pyomo.Var(initialize=1, bounds=(0,2,))
model.s = pyomo.Var(initialize=1, bounds=(0,2,))
model.b = pyomo.Var(initialize=1, bounds=(0,2,))

objective_rule = model.d - model.b*model.g + model.s*model.b
model.objective = pyomo.Objective(rule=objective_rule, sense=pyomo.minimize)

# After digging in pyomo source I figured out this
# should print all solvers available in my system
print(IOptSolver._factory_cls)

# This fails
opt = SolverFactory("gurobi", solver_io="python")
# opt = SolverFactory("neos") This also fails

# Create a …
Run Code Online (Sandbox Code Playgroud)

python-3.x gurobi ubuntu-16.04 pyomo

1
推荐指数
1
解决办法
9004
查看次数