Một câu hỏi hóc búa


11

Thợ làm tóc Stacey của tôi luôn mang một khuôn mặt vui vẻ, nhưng thường bị căng thẳng về việc quản lý thời gian của mình. Hôm nay Stacey đã quá hạn cho cuộc hẹn của tôi và rất xin lỗi. Trong khi đi cắt tóc, tôi tự hỏi: cuộc hẹn tiêu chuẩn của cô ấy nên kéo dài bao lâu? (nếu sở thích của khách hàng về số tròn sạch có thể bị bỏ qua, trong giây lát).

Một cái gì đó để xem xét là một "hiệu ứng gợn" nhất định trong đó một khách hàng rất muộn có thể dẫn đến một loạt các cuộc hẹn bị trì hoãn. Trong thực tế, những người làm tóc trực giác học cách lên các cuộc hẹn không gian ngày càng dài hơn vì họ sợ những ngày căng thẳng này. Nhưng một giải pháp tối ưu, thanh lịch phải có thể đạt được bởi một số thiên tài thống kê ngoài kia .. (nếu chúng ta giảm bớt thực tế một chút)

Giả sử

a) thời gian cắt tóc thường được phân phối và

b) chỉ có một tủ quần áo tóc.

Chi phí thiết lập các cuộc hẹn quá lâu rõ ràng là thời gian của thợ làm tóc lãng phí chờ đợi cho cuộc hẹn tiếp theo. Chúng ta hãy tiêu tốn thời gian lãng phí này $ 1 mỗi phút.

Nhưng nếu cuộc hẹn không đủ dài, khách hàng tiếp theo sẽ tiếp tục chờ đợi, đó là chi phí nặng hơn 3 đô la mỗi phút cho Stacey yêu thích khách hàng.

  • Stacey làm việc tới 8 giờ mỗi ngày và có đủ nhu cầu để cô có thể lấp đầy nhiều cuộc hẹn mà cô có thể phù hợp

  • Việc cắt tóc trung bình mất 30 phút, với một std. dev 10 phút. (chúng ta cũng giả sử vết cắt của đàn ông và vết cắt của phụ nữ là như nhau!)

EDIT - một số người đã chỉ ra một cách đúng đắn rằng Stacey có thể tham dự với khách hàng SỚM trước thời gian chỉ định của họ. Điều này thêm một lớp phức tạp khác, nhưng nếu chúng ta coi đây là một vấn đề thực tế, chúng ta cần đưa nó vào. Hãy quên đi giả định 90/10 của tôi và thử một giả định có lẽ gần với thực tế hơn một chút.

  • Một số khách hàng đến trễ và một số là sớm. Giá trị trung bình của khách hàng trễ 2 phút với độ lệch chuẩn là 2 phút (nghe có vẻ gần thực tế không?)

Chính xác thì cuộc hẹn của cô nên kéo dài bao lâu?


@alexplanation xin lỗi tôi đã chuyển mục tiêu bài viết về bạn! Tôi chắc chắn độc giả R đánh giá cao câu trả lời của bạn.


2
Nếu cô ấy có khả năng bắt đầu cắt tóc tiếp theo sớm hơn dự kiến, cô ấy không được phép làm như vậy?
giả định

N(μ=8 hours,σ=40 minutes)

Bạn đang thiếu một vài thông tin. 1) phân phối thời gian đầu HOẶC thực tế là khách hàng sớm không gây ra bất kỳ chi phí nào cho Stacy cho đến thời gian hẹn theo lịch trình của họ và 2) Phân phối thời gian trễ. Có lẽ bạn chỉ nên xác định phân phối thời gian đến liên quan đến thời gian đến dự kiến?
Jbowman

Ngoài ra, chuyện gì sẽ xảy ra vào cuối tám giờ nếu cô ấy không hoàn thành cuộc hẹn? Nếu cô ấy tiếp tục làm việc, rõ ràng cuộc hẹn cuối cùng nên được lên lịch trong 8 giờ sau cuộc hẹn đầu tiên (sẽ bắt đầu vào ngày), bất kể có bao nhiêu cuộc hẹn được lên lịch.
jbowman

Câu trả lời:


13

Có rất nhiều bộ phận chuyển động trong vấn đề này, làm cho nó chín muồi để mô phỏng.

Trước hết, như Elvis đã đề cập trong các bình luận, có vẻ như Stacey nên mất khoảng 16 cuộc hẹn, vì mỗi cuộc hẹn khoảng nửa giờ. Nhưng bạn có biết rằng khi các cuộc hẹn bắt đầu bị trì hoãn, mọi thứ bắt đầu thay đổi sau đó - vì vậy nếu Stacey sẽ chỉ bắt đầu một cuộc hẹn nếu cô ấy còn nửa giờ nữa (rất nhiều cho việc quét tóc khỏi sàn, eh, Stacey ?) thì chúng ta sẽ có ít hơn 16 vị trí có thể, nếu chúng ta sử dụng một quả cầu pha lê để sắp xếp các cuộc hẹn mà không có thời gian nghỉ ngơi.

Cắt tóc tối ưu

Trong mô phỏng tiếp theo, chúng ta có thể điều tra đường cong chi phí như là một hàm của độ dài cuộc hẹn. Tất nhiên, phần còn lại của các tham số cũng sẽ đóng vai trò ở đây - và trên thực tế, Stacey sẽ không sắp xếp các cuộc hẹn của mình cách nhau vài phút, nhưng điều này cho chúng ta một số trực giác về những gì đang diễn ra.

nhập mô tả hình ảnh ở đây

Tôi cũng đã vạch ra thời gian mà Stacey phải làm việc như màu sắc. Tôi quyết định rằng Stacey sẽ không bao giờ sắp xếp cuộc hẹn cuối cùng của cô ấy sau 7:30, nhưng đôi khi cuộc hẹn đến muộn, hoặc có sự chậm trễ! Bạn có thể thấy rằng thời gian cô ấy về nhà được lượng tử hóa, do đó, khi các cuộc hẹn dài hơn, bạn sẽ có một cuộc hẹn ít hơn và sau đó không phải làm việc muộn. Và tôi nghĩ rằng đó là một yếu tố còn thiếu ở đây - có thể sắp xếp các cuộc hẹn của bạn cách nhau 45 phút là tuyệt vời, nhưng bạn sẽ có thêm một cuộc hẹn nếu bạn có thể ép nó lên 40. Chi phí đó được kết hợp bởi sự chờ đợi của Stacey (đó là lý do chi phí giảm tăng khi thời lượng cuộc hẹn tăng lên) nhưng việc đánh giá thời gian chờ đợi của Stacey có thể không chính xác.

Dù sao, vấn đề vui vẻ! Và một cách tốt để tìm hiểu một số tính tốt của ggplot và hãy nhớ rằng cú pháp R của tôi siêu run. :)

Mã của tôi ở bên dưới - xin vui lòng cung cấp các đề xuất để cải thiện.


Để tạo mã cho cốt truyện hàng đầu:

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")

Mô phỏng thứ hai dài hơn rất nhiều ...

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))

1
Đẹp! Bạn có phản đối hiển thị mã?
Elvis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.