- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以在我的一生中,我无法运行我的 pyomo 程序。
我有我的 python 文件:
from pyomo.environ import *
#pyomo solve --solver=glpk diet.py diet.dat
model = AbstractModel()
# Foodss
model.m = Param(within=NonNegativeIntegers)
model.n = Param(within=NonNegativeIntegers)
model.warehouses = RangeSet(1, model.m)
model.stores = RangeSet(1, model.n)
model.cost = Param(model.warehouses,model.stores)
model.a = Param(model.warehouses)
model.b = Param(model.warehouses)
model.d = Param(model.stores)
model.amounts = Var(model.warehouses, model.stores, within = NonNegativeIntegers)
model.pprint()
# Minimize the cost of food that is consumed
def cost_rule(model):
return sum(
model.cost[n,i] * model.amounts[n,i]
for n in model.warehouses
for i in model.stores
)
model.cost = Objective(rule=cost_rule)
def minDemandRule(store, model):
return sum(model.a[i]*model.amounts[i, store] for i in model.warehouses) >= model.d[store]
model.demandConstraint = Constraint(model.stores, rule=minDemandRule)
# Limit the volume of food consumed
def maxSupplyRule(warehouse,model):
return sum(model.amounts[warehouses,j] for j in model.stores) <= self.b[warehouse]
model.supplyConstraint = Constraint(model.warehouses, rule=maxSupplyRule)
加上.dat 文件:
set warehouses := warehouseone warehousetwo warehousethree warehousefour;
set stores := storeone storetwo storethree storefour storefive storesix;
param cost:
storeone storetwo storethree storefour storefive storesix :=
warehouseone 23 12 34 25 27 16
warehousetwo 29 24 43 35 28 19
warehousethree 43 31 52 36 30 21
warehousefour 54 36 54 46 34 27;
param m := 4 ;
param n := 6 ;
param: a:=
warehouseone 15
warehousetwo 25
warehousethree 40
warehousefour 70;
param: b :=
warehouseone 10
warehousetwo 5
warehousethree 7
warehousefour 4;
param: d :=
storeone 45
storetwo 120
storethree 165
storefour 214
storefive 64
storesix 93;
根据我对其工作原理的理解,您可以将事物从一种映射到另一种。这对我来说似乎没问题,但是当我运行它时。
pyomo solve --solver=glpk transport.py data.dat
[ 0.00] Setting up Pyomo environment
[ 0.00] Applying Pyomo preprocessing actions
2 Set Declarations
amounts_index : Dim=0, Dimen=2, Size=0, Domain=None, Ordered=True, Bounds=None
Virtual
cost_index : Dim=0, Dimen=2, Size=0, Domain=None, Ordered=True, Bounds=None
Virtual
2 RangeSet Declarations
stores : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=True, Bounds=None
Not constructed
warehouses : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=True, Bounds=None
Not constructed
6 Param Declarations
a : Size=0, Index=warehouses, Domain=Any, Default=None, Mutable=False
Not constructed
b : Size=0, Index=warehouses, Domain=Any, Default=None, Mutable=False
Not constructed
cost : Size=0, Index=cost_index, Domain=Any, Default=None, Mutable=False
Not constructed
d : Size=0, Index=stores, Domain=Any, Default=None, Mutable=False
Not constructed
m : Size=1, Index=None, Domain=NonNegativeIntegers, Default=None, Mutable=False
Not constructed
n : Size=1, Index=None, Domain=NonNegativeIntegers, Default=None, Mutable=False
Not constructed
1 Var Declarations
amounts : Size=0, Index=amounts_index
Not constructed
11 Declarations: m n warehouses stores cost_index cost a b d amounts_index amounts
WARNING: Implicitly replacing the Component attribute cost (type=<class 'pyomo.core.base.param.IndexedParam'>) on block unknown with a new Component (type=<class 'pyomo.core.base.objective.SimpleObjective'>).
This is usually indicative of a modelling error.
To avoid this warning, use block.del_component() and block.add_component().
[ 0.01] Creating model
ERROR: Constructing component 'a' from data={'warehousefour': 70, 'warehouseone': 15, 'warehousethree': 40, 'warehousetwo': 25} failed:
RuntimeError: Failed to set value for param=a, index=warehousefour, value=70.
source error message="Error setting parameter value: Index 'warehousefour' is not valid for array Param 'a'"
[ 0.02] Pyomo Finished
ERROR: Unexpected exception while running model:
Failed to set value for param=a, index=warehousefour, value=70.
source error message="Error setting parameter value: Index 'warehousefour' is not valid for array Param 'a'"
我觉得dat文件没有被正确读取,但是当我查看其他示例时,这就是它的完成方式,所以我有点困惑。
最佳答案
您的代码中存在几个问题,从拼写错误到错误的 pyomo 使用。以下是固定版本。如果它适合您并且您有更具体的问题,请为此发布新问题。
文件diet.py
:
from pyomo.environ import *
#pyomo solve --solver=glpk diet.py diet.dat
model = AbstractModel()
# Foodss
model.warehouses = Set()
model.stores = Set()
model.a = Param(model.warehouses)
model.b = Param(model.warehouses)
model.d = Param(model.stores)
model.cost = Param(model.warehouses, model.stores)
model.amounts = Var(model.warehouses, model.stores, within = NonNegativeIntegers)
model.pprint()
# Minimize the cost of food that is consumed
def cost_rule(model):
return sum(
model.cost[n,i] * model.amounts[n,i]
for n in model.warehouses
for i in model.stores
)
model.costObjective = Objective(rule=cost_rule)
def minDemandRule(model, store):
return sum(model.a[i]*model.amounts[i, store] for i in model.warehouses) >= model.d[store]
model.demandConstraint = Constraint(model.stores, rule=minDemandRule)
# Limit the volume of food consumed
def maxSupplyRule(model, warehouse):
return sum(model.amounts[warehouse,j] for j in model.stores) <= model.b[warehouse]
model.supplyConstraint = Constraint(model.warehouses, rule=maxSupplyRule)
文件diet.dat
:
param: warehouses:
a b :=
warehouseone 15 10
warehousetwo 25 5
warehousethree 40 7
warehousefour 70 4;
param: stores:
d :=
storeone 45
storetwo 120
storethree 165
storefour 214
storefive 64
storesix 93;
param cost:
storeone storetwo storethree storefour storefive storesix :=
warehouseone 23 12 34 25 27 16
warehousetwo 29 24 43 35 28 19
warehousethree 43 31 52 36 30 21
warehousefour 54 36 54 46 34 27;
示例运行(请注意,我在这里使用 CLP 求解器,但不是主要的):
$ pyomo solve --solver=clp test.py test.dat
[ 0.00] Setting up Pyomo environment
[ 0.00] Applying Pyomo preprocessing actions
4 Set Declarations
amounts_index : Dim=0, Dimen=2, Size=0, Domain=None, Ordered=False, Bounds=None
Virtual
cost_index : Dim=0, Dimen=2, Size=0, Domain=None, Ordered=False, Bounds=None
Virtual
stores : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
Not constructed
warehouses : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
Not constructed
4 Param Declarations
a : Size=0, Index=warehouses, Domain=Any, Default=None, Mutable=False
Not constructed
b : Size=0, Index=warehouses, Domain=Any, Default=None, Mutable=False
Not constructed
cost : Size=0, Index=cost_index, Domain=Any, Default=None, Mutable=False
Not constructed
d : Size=0, Index=stores, Domain=Any, Default=None, Mutable=False
Not constructed
1 Var Declarations
amounts : Size=0, Index=amounts_index
Not constructed
9 Declarations: warehouses stores a b d cost_index cost amounts_index amounts
[ 0.00] Creating model
[ 0.02] Applying solver
[ 0.03] Processing results
Number of solutions: 1
Solution Information
Gap: None
Status: optimal
Function Value: 532.113571429
Solver results file: results.json
[ 0.04] Applying Pyomo postprocessing actions
[ 0.04] Pyomo Finished
$
关于python - 获取空模型 pyomo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47086708/
我刚开始使用 Pyomo,我一直无法弄清楚如何编写双重求和代码。类似于 this . 有人可以给我提示吗?谢谢你们的帮助!! 最佳答案 假设您的模型声明如下: m = ConcreteModel()
我的优化需要几个小时才能在高性能服务器上解决。我想将解决方案保存到磁盘,然后在我的笔记本电脑上将它们重新加载到模型实例中。这将使我能够在 python 命令行中以交互方式探索结果,并开发或测试新编写的
我正在尝试从我的 pyomo 模型中输出目标值。我确实访问了变量值,但无法访问目标函数值。我的代码是: instance = model.create_instance(data) opt =
我不想在程序变量中设置初始值和对偶值。有没有具体的方法来做到这一点。我可以看到 Var 对象中有一个初始化选项,但我不确定如何以这种方式使用它 最佳答案 如果要在声明变量时设置变量的值,可以使用ini
我正在努力寻找一种有效的方法来检索优化问题的解决方案。该解决方案包含大约 200K 个变量,我希望在 pandas DataFrame 中使用这些变量。在网上搜索后,我发现访问变量的唯一方法是通过一个
我正在尝试使用 ANTIGONE 求解器(在 GAMS 中获得许可)解决 MINLP 问题,但我很难更改求解器的高级设置。 首先,我按如下方式从 Pyomo 调用求解器。 solver = pe.So
我尝试使用 pip 中的附加功能安装 pyomo,并使用后来的 Conda。一切都显示正常,但当我尝试使用它时,我收到以下错误。 from pyomo.environ import * 文件“C:..
我注意到 Pyomo 5.3 提供了一个 GAMS 求解器插件。 https://github.com/Pyomo/pyomo/blob/master/pyomo/solvers/plugins/so
我写信是因为我在安装时遇到问题 Pyomo使用 pip在 Mac OSX 10.14 上的 Python 3.6 我正在按照安装说明进行操作 here . 我可以成功执行第一个命令: pip inst
我对新算法有疑问,在这里我展示我的代码以便更好地理解它。 import pyomo.environ from pyomo.core import * from pyomo.opt import Sol
我正在使用 pyomo 构建许多模型,据我了解,pyomo 在求解模型之前会重新制定模型。 我想确切地知道模型在传递给求解器文件 ipopt 和 couenne 时是什么样子。 据我所见here我不清
我正在尝试将使用 CPLEX 求解器在 GAMS 中编写的模型传输到 Pyomo。 CPLEX 具有允许建模者在模型不可行时放宽约束和决策变量的功能 - FeasOpt(适用于可行优化)。我无法在 P
我是 Pyomo 的新手,我想知道如何更改具有一个或多个索引的现有模型参数的值。 我看过一些标量参数的例子,即没有索引。例如: model5 = ConcreteModel() model5.data
我有一个相当大的模型(大约 500 万个变量和约束)。 构建时间是几分钟,求解时间也是几分钟(使用 gurobi) 但是写模型需要很长时间(大约2小时) 这是我使用 model.write('mode
我正在尝试将一些数据转化为 PYOMO 模型以解决优化问题。 materials = ['steel', 'alum', 'carbon', 'cheese'] 每种 Material 都有 2 个属
我的脚本是: from __future__ import division import numpy import scipy from pyomo.environ
我在 Pyomo 中构建了一个抽象模型,效果很好。 但是,当我尝试使用字典来实例化抽象模型时,出现以下错误“错误:为目标值生成表达式时规则失败: RuntimeError:无法在抽象集“I”之前迭代
我一直在使用 Gurobi 来解决 MILP 问题,并使用 Pyomo 来生成模型。 Gurobi 支持返回一个解决方案池,我希望能够使用这个池生成多个解决方案。这在 Pyomo 中支持吗? 我试过使
Pyomo 中多目标优化的任何示例吗? 我正在尝试最小化 4 个目标(非线性),并且我想使用 pyomo 和 ipopt。还可以访问古罗比。 我想看一个非常简单的例子,我们尝试优化一系列决策变量(不仅
以下是我尝试运行的优化代码的一部分。 from pyomo.environ import * model = ConcreteModel() ## Define sets model.k = Set(
我是一名优秀的程序员,十分优秀!