[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.