【问题标题】:PuLP - Python - Hotel Revenue OptimizationPuLP - Python - 酒店收入优化
【发布时间】:2017-06-25 00:11:02
【问题描述】:

我正在尝试重新创建一篇使用线性规划来优化酒店收入的论文。 我有许多不同的 x[i,j] 我正在尝试解决 x 在哪里接受预订,i 是入住日,j 是退房日。我对我正在导入的这些 [i,j] 对中的每一个都有需求,并且接受的预订必须是

到目前为止,这是我的代码:

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 的新手,因此非常感谢任何帮助。

【问题讨论】:

    标签: python optimization pulp


    【解决方案1】:

    我创建了一些数据来测试一些案例,我认为以下应该可行。如果没有,请分享您的需求SAHRO.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
    
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2020-12-13
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多