11 votos

Una peluquería ' enigma s

Mi peluquero Stacey siempre pone una cara feliz, pero a veces se enfatiza acerca de la administración de su tiempo. Hoy Stacey era tarde para mi cita, y muy cohibido. Al obtener mi corte de pelo me preguntaba: ¿Cuánto tiempo debe su estándar de citas? (si la preferencia del cliente para limpiar los números redondos podía ser ignorado, por un momento).

Algo a considerar es el de un 'efecto dominó', donde uno muy tarde el cliente puede llevar a una cadena de retraso en las citas. En realidad, el cabello de los aparadores de forma intuitiva aprender a espacio de las citas más largas y más largas a medida que el miedo de estos días de estrés. Pero un óptimo, elegante solución debe ser alcanzable por algunos estadísticos genio ahi.. (si nos mudo por la realidad un poco)

Supongamos

a) el corte de pelo veces están distribuidos normalmente y

b) sólo hay una peluquería.

El costo de establecimiento de citas demasiado larga es, obviamente, el peluquero de la pérdida de tiempo de espera de la próxima cita. Vamos a costo de esta pérdida de tiempo $1 por minuto.

Pero si la cita no es suficiente, el siguiente cliente se mantiene a la espera, que es un pesado costo de $3 por minuto para los clientes amantes de Stacey.

  • Stacey obras hasta 8 horas por día, y tiene la suficiente demanda que ella puede llenar tantas citas como se puede encajar en

  • La media de corte de pelo lleva 30 minutos, con una enfermedad de transmisión sexual. dev de 10 minutos. (supongamos también cortes de los hombres y de las mujeres de cortes son lo mismo!)

EDITAR - algunos han señalado acertadamente que Stacey podría asistir a los PRIMEROS clientes por delante de su tiempo. Esto añade otra capa de complejidad, pero si tenemos que tratar esto como un problema realista, debemos incluir. Vamos a olvidar mi 90/10 asunción y trate de un supuesto de tal vez un poco más cerca de la realidad.

  • Algunos clientes son finales y algunos son los primeros. La media de clientes son 2 minutos más tarde, con una desviación estándar de 2 minutos (suena razonablemente cerca de la realidad ¿no?)

Exactamente cuánto tiempo debe sus citas?


@alexplanation lo siento me he movido los postes de la meta! Estoy seguro de que R lectores agradezco su respuesta.

13voto

Thomas Rushton Puntos 1638

Hay un montón de piezas móviles en este problema, lo que hace maduro para la simulación.

En primer lugar, como Elvis se menciona en los comentarios, parece que Stacey debe tomar alrededor de 16 citas, ya que cada uno es de una media hora. Pero usted sabe que como las citas comienzan a llegar con retraso, las cosas empiezan a cambio de más y más tarde - así que si Stacey se va a iniciar sólo una cita si ella tiene la mitad de una hora a la izquierda (tanto para barrer el cabello fuera de la planta, eh, Stacey?) a continuación, vamos a tener menos de 16 ranuras, si hemos utilizado una bola de cristal para programar citas sin hora de descanso.

Optimally spaced haircuts

En la siguiente simulación, se puede investigar la curva de costo como una función de nombramiento de longitud. Por supuesto, el resto de los parámetros que se acaban jugando un papel aquí - y, en realidad, Stacey no va a programar sus citas de fracciones de minutos de diferencia, pero esto nos da cierta intuición acerca de lo que está pasando.

enter image description here

También he trazado la vez que Stacey tiene que estar en el trabajo como por el color. Decidí que Stacey nunca programación de su última cita después de las 7:30, pero a veces la cita llega con retraso, o ha habido un retraso! Usted puede ver que el tiempo se llega a ir a casa es cuantificada, por lo que a medida que los nombramientos se hacen más largas, usted consigue uno menos de la cita y, a continuación, no tienen que trabajar tan tarde. Y creo que ese es un elemento que falta aquí - tal vez la programación de sus citas 45 minutos de distancia es grande, pero usted conseguirá una cita adicional en si encuentras a 40. Que el costo es incorporado por Stacey de espera (que es por qué el costo sube como el nombramiento de longitud sube) pero tu valoración de Stacey del tiempo de espera puede no ser correcta.

De todos modos, la diversión problema! Y una buena manera de aprender algunos ggplot bondad y recordar que mi R sintaxis es super inestable. :)

Mi código es el siguiente - por favor, siéntase libre de ofrecer sugerencias para la mejora.


Para generar el código para la parte superior de la parcela:

hairtime = 30
hairsd = 10

nSim = 1000
allCuts = rep(0,nSim)
allTime = rep(0,nSim)

for (i in 1:nSim) {
    t = 0
    ncuts = 0

    while (t < 7.5) {
        ncuts = ncuts+1
        nexthairtime = rnorm(1,hairtime,hairsd)
        t = t+(nexthairtime/60)
    }
    allCuts[i] = ncuts
    allTime[i] = t
}

hist(allCuts,main="Number of haircuts in an 8 hour day",xlab="Customers")

La segunda simulación es mucho más...

nSim = 100
allCuts = rep(0,nSim)
allTime = rep(0,nSim)

allCost = rep(0,nSim)

lateMean = 10
lateSD = 3

staceyWasted = 1
customerWasted = 3

allLengths = seq(30,60,0.25)

# Keep everything in 'long form' just to make our plotting lives easier later
allApptCosts = data.frame(matrix(ncol=3,nrow=length(allLengths)*nSim))
names(allApptCosts) <- c("Appt.Length","Cost","Time")
ind = 1

# for every appointment length...
for (a in 1:length(allLengths)) {
    apptlen = allLengths[a]
    # ...simulate the time, and the cost of cutting hair.
    for (i in 1:nSim) {
        appts = seq(from=0,to=(8-hairtime/60),by=apptlen/60)
        t = 0
        cost = 0
        ncuts = 0

        for (a in 1:length(appts)) {
            customerArrival = appts[a]
            # late!            
            if (runif(1)>0.9) {
                customerArrival = appts[a]+rnorm(1,lateMean,lateSD)/60
            }

            waitTime = t-customerArrival
            # negative waitTime means the customer arrives late
            cost = cost+max(waitTime,0)*customerWasted+abs(min(waitTime,0))*staceyWasted
                                        # get the haircut
            nexthairtime = rnorm(1,hairtime,hairsd)
            t = customerArrival+(nexthairtime/60)
        }
        allCost[i] = cost
        allApptCosts[ind,1] = apptlen
        allApptCosts[ind,2] = cost
        allApptCosts[ind,3] = t
        ind = ind+1
    }
}

qplot(Appt.Length,Cost,geom=c("point"),alpha=I(0.75),color=Time,data=allApptCosts,xlab="Appointment Length (minutes)",ylab="Cost")+
      geom_smooth(color="black",size=2)+
    opts(axis.title.x=theme_text(size=16))+
    opts(axis.title.y=theme_text(size=16))+
    opts(axis.text.x=theme_text(size=14))+
    opts(axis.text.y=theme_text(size=14))+
    opts(legend.text=theme_text(size=12))+
    opts(legend.title=theme_text(size=12,hjust=-.2))

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X