gpt4 book ai didi

python - 在 PuLP(Python) 中指定 lowBound 和 upBound

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:12 25 4
gpt4 key购买 nike

我要最小化的决策变量是:

DV2 = {   "P1" : {"V1" : 38.11, "V2" : 21.47, "V3" : 27.98, "V4" : 24.95, "V5" :25.22},
"P2" : {"V1" : 31.10355934, "V2" : 34.20506007, "V3" : 30.46890595, "V4" : 33.74346353, "V5" : 29.47098217},
"P3" : {"V1" : 29.13518894, "V2" : 38.89035574, "V3" : 30.97508704, "V4" : 33.50849106, "V5" : 34.94861333}
}

它与运输问题类似,不同之处在于目标函数为:0.71*成本*DV2 + 0.29*风险*DV2,其中成本为:

cost= { "P1" : {"V1" : 0.2, "V2" : 0.22, "V3" : 0.2, "V4" : 0.2, "V5" :0.17},
"P2" : {"V1" : 0.2, "V2" : 0.21, "V3" : 0.19, "V4" : 0.19, "V5" : 0.19},
"P3" : {"V1" : 0.19, "V2" : 0.19, "V3" : 0.2, "V4" : 0.19, "V5" : 0.2}
}

风险是:

   risk= { "P1" : {"V1" : 0.5, "V2" : 0.52, "V3" : 0.25, "V4" : 0.25, "V5" :0.57},
"P2" : {"V1" : 0.5, "V2" : 0.51, "V3" : 0.9, "V4" : 0.9, "V5" : 0.9},
"P3" : {"V1" : 0.6, "V2" : 0.6, "V3" : 0.7, "V4" : 0.8, "V5" : 0.9}
}

lowBound 将是:

min1= { "P1" : {"V1" : 500, "V2" : 500, "V3" : 500, "V4" : 0, "V5" :500},
"P2" : {"V1" : 500, "V2" : 0, "V3" : 500, "V4" : 500, "V5" : 0},
"P3" : {"V1" : 500, "V2" : 500, "V3" : 500, "V4" : 500, "V5" : 500}
}

upBound 将是:

      max1= { "P1" : {"V1" : 5000, "V2" : 5000, "V3" : 5000, "V4" : 0, "V5" :5000},
"P2" : {"V1" : 5000, "V2" : 0, "V3" : 5000, "V4" : 5000, "V5" : 0},
"P3" : {"V1" : 5000, "V2" : 5000, "V3" : 5000, "V4" : 5000, "V5" : 5000}
}

如果有人能告诉我如何在这种情况下制定目标函数,我将非常感激,因为 lowBound 和 upBound 应该只采用实数(这是我得到的错误)。

最佳答案

对于标量边界:

L = 1.0
U = 2.0
x = LpVariable.dicts("x",J,L,U,LpContinuous)

对于索引边界使用约束:

L = {"a": 0.2, "b" : 0.3}
U = {"a": 1.2, "b" : 1.3}
for j in J:
prob += x[j] >= L[j]
prob += x[j] <= U[j]

LP/MIP 求解器将在预求解阶段内部对单例约束进行限制。

关于python - 在 PuLP(Python) 中指定 lowBound 和 upBound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49230532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com