PuLP - Python - 酒店收入优化
PuLP - Python - Hotel Revenue Optimization
我正在尝试重新创建一篇使用线性规划优化酒店收入的论文。
我有许多不同的 x[i,j],我试图解决其中 x 是接受预订的地方,i 是入住日,j 是退房日。我对我正在导入的这些 [i,j] 对中的每一个都有需求,并且接受的预订必须 <= 需求。
对于我的生活,我无法弄清楚如何在任何给定的第 k 天对已经入住酒店的人 + 在第 k 天入住的人 - 在第 k 天退房的人必须 <= 容量进行编程。
这是我要编写的代码:
到目前为止,这是我的代码:
import pandas as pd
import pulp
# Instantiate our problem class
model = pulp.LpProblem("Hotel revenue maximization", pulp.LpMaximize)
#Import demand info
demand= pd.DataFrame.from_csv("demandSAHRO.csv", index_col=
['Check_in_day_i', 'Check_out_day_j'])
#Will optimize for # bookings to accept for any i,j pairing
bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
# Objective Function - 0.84 is unit revenue per room
model += (
pulp.lpSum([
0.84 * bookingsaccepted[i, j] for i, j in demand.index])
)
# Constraints
capacity = 400
#Accepted Check in before day k + accepted check in on day k - accepted check out on day k <= capacity
model +=
for i, j in demand.index:
for k in range(1,10):
#Day k between check in and check out dates
while i<k<j:
#Rooms already occupied during night k
pulp.lpSum([bookingsaccepted[i, j] for i, j in demand.index]))
+
#Rooms checking in on day k
-
#Rooms checking out on day k
我是 Python 编码的新手,也是使用 PuLP 的新手,非常感谢任何帮助。
我创建了一些数据来测试某些情况,我认为以下应该可行。如果没有,请分享您的 demandSAHRO.csv 数据,我会尝试对其进行调整:
for k in range(1, T):
model += pulp.lpSum([bookingsaccepted[i, j] \
+ bookingsaccepted[k, j] \
- bookingsaccepted[i, k] \
for i, j in demand.index if i < k < j]) \
<= capacity
我正在尝试重新创建一篇使用线性规划优化酒店收入的论文。
我有许多不同的 x[i,j],我试图解决其中 x 是接受预订的地方,i 是入住日,j 是退房日。我对我正在导入的这些 [i,j] 对中的每一个都有需求,并且接受的预订必须 <= 需求。
对于我的生活,我无法弄清楚如何在任何给定的第 k 天对已经入住酒店的人 + 在第 k 天入住的人 - 在第 k 天退房的人必须 <= 容量进行编程。
这是我要编写的代码:
到目前为止,这是我的代码:
import pandas as pd
import pulp
# Instantiate our problem class
model = pulp.LpProblem("Hotel revenue maximization", pulp.LpMaximize)
#Import demand info
demand= pd.DataFrame.from_csv("demandSAHRO.csv", index_col=
['Check_in_day_i', 'Check_out_day_j'])
#Will optimize for # bookings to accept for any i,j pairing
bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
# Objective Function - 0.84 is unit revenue per room
model += (
pulp.lpSum([
0.84 * bookingsaccepted[i, j] for i, j in demand.index])
)
# Constraints
capacity = 400
#Accepted Check in before day k + accepted check in on day k - accepted check out on day k <= capacity
model +=
for i, j in demand.index:
for k in range(1,10):
#Day k between check in and check out dates
while i<k<j:
#Rooms already occupied during night k
pulp.lpSum([bookingsaccepted[i, j] for i, j in demand.index]))
+
#Rooms checking in on day k
-
#Rooms checking out on day k
我是 Python 编码的新手,也是使用 PuLP 的新手,非常感谢任何帮助。
我创建了一些数据来测试某些情况,我认为以下应该可行。如果没有,请分享您的 demandSAHRO.csv 数据,我会尝试对其进行调整:
for k in range(1, T):
model += pulp.lpSum([bookingsaccepted[i, j] \
+ bookingsaccepted[k, j] \
- bookingsaccepted[i, k] \
for i, j in demand.index if i < k < j]) \
<= capacity