我试图用gurobi MILP建立一个简单的库存收益最大化模型,但我一直在为如何编写净现值最大化的目标函数而烦恼。
数组A=np.random.randint( 100 ,1500,100)是库存中每100项的值
from gurobipy import *
val=A
m = Model()
n = len(val) # number of items
# Indicator variable for each item
x = {}
for i in range(n):
x[i] = m.addVar(vtype=GRB.BINARY, name="x%d" % i)
#Indicator variable for each period of operation
prd={}
for u in range(7):
prd[u]=m.addVar(vtype=GRB.BINARY name="prd%d" % u)
m.update()
# Set objective
m.setObjective((quicksum((quicksum((val[i])*x[i] for i in range(n)))/(1+0.1**(u+1)))*prd[u] for u in range(7))), GRB.MAXIMIZE)如果这是对这种类型的问题建模的正确方法,那么下一步就是添加约束,以便在单个时间段内只使用一个项目。
发布于 2016-08-01 11:57:20
quicksum()计算线性表达式;您需要将嵌套表达式转换为单个线性表达式。您可以通过计算系数值来实现此目的。
https://stackoverflow.com/questions/38681871
复制相似问题