我正在尝试在Pyomo中建模一个简单的线性问题。我在AMPL中完成了建模并得到了正确的答案,但由于一些奇怪的原因,Pyomo说它没有界限。
如果有人能好心地看一下我所做的,看看为什么它不能在pyomo中工作。所有数据和代码如下:
这是最初的问题:BCoE已确定,在未来12个月的每个月,它将需要下表所示的笔记本电脑数量。为了满足这些要求,BCoE租用笔记本电脑的期限为一个月、两个月或三个月。一台笔记本电脑一个月的租金是100美元,两个月的租金是180美元,三个月的租金是250美元。在第一个月初,BCOE有70台笔记本电脑。确定以最低成本满足未来12个月需求的租赁计划。为这个问题写出一个数学程序,然后用你选择的求解器来求解。
月份 | 笔记本电脑需求 | 1 | 700 | 2
---|---|
1100 | |
3 | 500 |
600 | |
1100 | |
500 | |
700 | |
700 | |
9 | 300 |
600 | |
700 | |
12 | 700 |
这个问题是无界的,因为你没有限制变量的域,所以它可以是负的,求解器发疯了,因为它试图建立"负购买"模型。也这就解决了问题。(注意:你也不必初始化变量):
model.full = Var(fullData, domain=NonNegativeReals)
同样,如果您在这方面做了一些工作,您可以稍微收紧您的模型构造。您应该能够处理约束的RHS值列表,并使用循环将它们全部生成,而不是单独将它们写出来。创建月度指数也是如此。你能想出一个数学表达式来表示每月手头的计算机数量吗?如果是这样,您可以使用一些列表推导和简单的条件动态创建索引。:)