Pyomo:构建抽象模型

问题描述 投票:0回答:1

我目前正在尝试弄清楚如何使用 pyomo 将其变成一个用于 dat 文件的抽象模型。

我附上了我的问题的图片

Problem

我当前的最佳值和最佳解决方案代码以及 dat 文件信息如下:

# Create an Abstract model
model = pyo.AbstractModel()

# Build parameters
model.Crop = pyo.Set()

model.w_labor = pyo.Param(model.Crop, within=pyo.PositiveReals)
model.w_capital = pyo.Param(model.Crop, within=pyo.PositiveReals)
model.profit = pyo.Param(model.Crop, within=pyo.PositiveReals)

model.avail_land = pyo.Param(within=pyo.PositiveReals)
model.avail_labor = pyo.Param(within=pyo.PositiveReals)
model.avail_capital = pyo.Param(within=pyo.PositiveReals)


# define objective function
def value_rule(model):
    return sum( model.w_labor[i] + model.w_capital[i] + model.profit[i] for i in model.Crop )
model.value = pyo.Objective( rule=value_rule, sense=pyo.maximize )

# Build the constraint
def constraint_rule(model):
    return sum(model.w_labor[i] + model.w_capital[i] + model.profit[i] for i in model.Crop) <= model.avail_capital
model.cost_constraint = pyo.Constraint(rule=constraint_rule)

数据文件:

data;

set Crop := Corn Soybeans Oats;

param: w_labor w_capital profit :=
Corn 6 36 40 
Soybeans 6 24 30
Oats 2 18 20;

param avail_land := 12;
param avail_labor := 48;
param avail_capital := 360;

将其变成一个具体的问题非常简单,但我在这个抽象模型上不断遇到错误。我相信我的约束和/或目标存在根本性错误,但我不完全确定如何解决这个问题。如果有人可以提供帮助,我将不胜感激。

python linear-programming pyomo
1个回答
0
投票

这显然是一个硬件问题,所以这里有一些提示:

  1. 您的模型中没有变量。没有什么可以解决的。我希望你需要一个变量,按作物索引来显示种植的作物。

  2. 我在你的问题陈述中看到了 3 个约束,但你只写了 1 个(这是荒谬的错误)。重新思考那些。

  3. 您应该从数据构建一个实例。代码在哪里?

  4. 构建实例后,打印并检查它。它看起来应该与问题陈述非常相似。

  5. 使用正确的代码从模型+数据构建实例后,您应该:

instance.pprint()

并检查。

© www.soinside.com 2019 - 2024. All rights reserved.