You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需硬编码100容量限制,优化停车场需求预测的比率方法

停车场预约需求预测优化方案

问题背景

需要预测容量为100的停车场未来7天的停车预约数,用于制定租赁定价策略。当前采用比率法:用7天前对应日期的「最终预约数/早期预约数」比值,乘以当前未来日期的早期预约数得到预测值,但该方法会出现预测值超过停车场容量的情况,且希望避免硬编码容量上限。

优化思路

1. 引入可配置容量参数

将停车场容量作为独立参数传入,替代硬编码值,提升代码灵活性和可维护性。

2. 饱和需求建模

使用逻辑斯蒂饱和函数替代线性比率计算,模拟真实场景中预约数趋近容量时增长放缓的规律,从原理上避免预测值突破上限。函数核心逻辑:

final_pred = 容量 / (1 + exp(-k * (当前早期预约数 - 中点值)))

其中k和中点值由历史数据拟合得到,分别控制曲线的陡峭程度和增长拐点位置。

3. 历史数据驱动的参数校准

从历史数据中提取关键统计量,用于初始化饱和函数参数,保证预测贴合实际运营情况:

  • 历史平均早期预约数
  • 历史平均转化率(最终预约/早期预约)
  • 历史最大利用率(最终预约/容量)

修改后的代码实现

from datetime import datetime, timedelta
import math

# 可配置参数:停车场容量
PARKING_CAPACITY = 100

# 历史数据:(早期预约数, 最终预约数)
historical_data = {
    '18-Feb-23': (35, 38),
    '19-Feb-23': (40, 50),
    '20-Feb-23': (35, 50),
    '21-Feb-23': (28, 50),
    '22-Feb-23': (15, 65),
    '23-Feb-23': (10, 54),
    '24-Feb-23': (3, 70)
}

# 未来数据:(早期预约数, 待填充的预测最终预约数)
future_data = {
    '25-Feb-23': (40, None),
    '26-Feb-23': (35, None),
    '27-Feb-23': (28, None),
    '28-Feb-23': (20, None),
    '1-Mar-23': (25, None),
    '2-Mar-23': (3, None),
    '3-Mar-23': (1, None)
}

# 计算历史统计量
historical_early = [data[0] for data in historical_data.values()]
historical_final = [data[1] for data in historical_data.values()]
avg_early = sum(historical_early) / len(historical_early)
avg_conversion = sum(f/e for f, e in zip(historical_final, historical_early) if e > 0) / len(historical_early)
max_utilization = max(f/PARKING_CAPACITY for f in historical_final)

# 拟合饱和函数参数:基于历史数据调整曲线斜率和拐点
k = 0.05 * avg_conversion
midpoint = avg_early

def predict_final(current_date, early_reservations):
    # 比率法初始预测
    past_date = (datetime.strptime(current_date, '%d-%b-%y') - timedelta(days=7)).strftime('%d-%b-%y')
    if past_date in historical_data:
        past_e, past_f = historical_data[past_date]
        initial_pred = early_reservations * past_f / past_e if past_e > 0 else past_f
    else:
        initial_pred = early_reservations * avg_conversion
    
    # 饱和函数修正+历史利用率约束
    saturation_pred = PARKING_CAPACITY / (1 + math.exp(-k * (early_reservations - midpoint)))
    capped_pred = min(initial_pred, saturation_pred, PARKING_CAPACITY * max_utilization)
    return int(round(capped_pred))

# 生成并更新预测结果
for current_date in future_data:
    early = future_data[current_date][0]
    final_pred = predict_final(current_date, early)
    future_data[current_date] = (early, final_pred)

# 输出预测结果
for date in future_data:
    print(f"{date}: 预期最终预约数 = {future_data[date][1]}")

方案优势

  • 无硬编码容量上限:所有约束基于可配置参数和历史数据自动计算
  • 贴合真实需求:饱和函数模拟了预约数趋近容量时的增长放缓特性
  • 鲁棒性更强:结合比率法的短期准确性和历史数据的长期规律,避免极端预测值

内容的提问来源于stack exchange,提问作者user13744439

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:25:10