【发布时间】:2021-12-16 08:23:36
【问题描述】:
我正在尝试创建模拟,但由于某种原因,我收到“列表索引超出范围”错误。我不确定我到底做错了什么。
import numpy as np
import math
roomPrice = 280
dayAvailable = [1, 2, 3, 4, 5]
dayDemand = [[1], [2], [3], [4], [5], [1,2], [2,3], [3,4], [4,5], [1,2,3]]
customers = np.random.poisson(lam=250, size=1000)
deny = 0
customersDenied = []
bookings = []
customersHelped = 0
capacityFull = 0
def priceAccept(p):
value = 1/(1+math.exp(0.025*p-7.5))
return value
for c in customers:
capacity = [50, 50, 50, 50, 50]
probability = np.random.choice([0,1,2,3,4,5,6,7,8,9,],
size = c,
p = [0.15,0.05,0.1,
0.05,0.1,0.2,
0.1,0.1,0.05,0.1])
for prob in probability:
for i in dayDemand[prob]:
if capacity[i] == 0:
capacityFull += 1
deny += 1
if capacityFull == 0:
priceAcceptCustomer = np.random.choice([1,0], size = 1, p=[priceAccept(roomPrice),1-priceAccept(roomPrice)])
if priceAcceptCustomer == 1:
for d in dayDemand[prob]:
if capacity[d-1] > 0:
capacity[d-1] -= 1
customersHelped += 1
bookings.append(customersHelped)
customersDenied.append(deny)
它不断在if capacity[i] == 0:返回以下内容
IndexError: 列表索引超出范围
如何修复此模拟以使其正常运行?
【问题讨论】:
-
容量有五个元素,因此有效索引为 0 到 4。索引 5 超出范围。
标签: python