Probabilidade de reservas de hotel
Um hotel tem 100 quartos e cobra os hóspedes pelos quartos com antecedência. O número de reservas para amanhã à noite é indicado como$n$. Os quartos são reservados até as 22h, mas se o hóspede não comparecer até as 22h, a reserva é cancelada e o hotel mantém a cobrança da reserva. O hotel aprendeu com experiências anteriores que a probabilidade de qualquer hóspede com reserva realmente aparecer por volta das 22h é$p = 19/20$, e que os hóspedes do hotel apareçam (ou não) independentemente uns dos outros. Deixei$X$ denota o número de convidados reservados que aparecem antes das 22h.
Suponha que o hotel ganhe 50 dólares de lucro para cada hóspede e não comparecimento, mas tenha que pagar uma compensação de 60 dólares para cada hóspede que não puder se hospedar devido a overbook. Supondo que a demanda por quartos pré-reservados seja ilimitada, quantos quartos devem ser vendidos para maximizar o lucro esperado?
Então nós temos isso $P(X=k)={n \choose k}(p)^k\times(1-p)^{n-k}$. Estou tendo problemas para tentar criar uma função de lucro. Minha primeira tentativa foi$$v(X) = \begin{cases} 50n-60(X-100) & X > 100\\ 50n & X \leq 100 \end{cases}$$No entanto, para maximizar o retorno, parece que o hotel precisaria de um entendimento adequado de quem exatamente aparecerá, o que é aleatório. Esta função também não parece capturar a probabilidade de os hóspedes aparecerem, o que deve pesar as escolhas que o hotel fará. Que tipo de função de lucro levará em conta a probabilidade de os convidados aparecerem?
Respostas
Sua função de lucro está correta. O que você deseja maximizar aqui é o lucro esperado , ou seja:$$\mathbb E[v(X)]=\sum_{x=1}^n p(X=x)\cdot v(x)$$
Podemos escrever um script R para otimizar esta função:
# function to find expected profit if they book n rooms
expected_profit <- function(n){
X = seq(0,n)
prob = dbinom(X, size=n, prob=19/20)
profit = ifelse(X>100, 50*n-60*(X-100), 50*n)
return(sum(prob*profit))
}
# plotting that function
plot(
seq(1,400),
unlist(Map(expected_profit, seq(1,400))),
type="l"
)
# finding the maximum
which.max(unlist(Map(expected_profit, seq(1,400))))
Isso dá o resultado $n=108$. Ou seja, eles otimizam seu lucro médio reservando 108 quartos.
É óbvio que o número ideal de reservas que geram lucro máximo deve ser maior do que o número de quartos disponíveis (ou seja, 100). Assim, só precisamos pesquisar o número de reserva ideal com$n > 100$.
$Average Profit(n)$
$= 50n - 60\sum_{k=101}^n (k-100){n \choose k}p^k\times(1-p)^{n-k}$.
Isso dá o número de reserva ideal 108 para $p=0.95$, as mesmas fornecidas acima pela PedroSebe .