Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Execute LISP Online

;note - two conflicting seat count calcuations
;note - count is replace with ..s, i.e. seatCount -> seats
;note - consider replacing area (m2 etc.) with size to avoid confusion with facility e.g. play area
;note - consider replacing area (as in play area) with facility
;note - replace ...GC with ...Orders except for peakGC)

(defvar peakGC 261) ; peak guest count - number of orders at 50th busiest hour
(defvar growth .1) ; future growth
(defvar drivethruShare .3) ; share at drivethru of total orders
(defvar groupsize 2.5) ; group size
(defvar takeoutShare .1) ; share of orders at frontcounter that are takeout
(defvar seatingMargin 1) ; margin
(defvar seatingUtilization .8) ; seating occupancy
(defvar visitDuration 35) ; guest visit duration
(defvar topQuarterShare .25) ; top quartile (percentage of guest count during busiests 15 minuts of 50th peak hour)
(defvar orderSize 6) ; ItemCountPerOrder
(defvar servicePlatform "Multipoint")
(defvar kioskShare .3) ;peakFrontcounterKioskOrderPercentage
(defvar redirectShare .1);frontCounterKioskOrdersCashOnly
(defvar collectOrders 220) ;temporary, will be calculated
(defvar kiosksMin 3)
(defvar toiletAreas (list 25 30))
(defvar toiletA 0)
(defvar toiletThresholds (list 100 200)); indoor guests topquarterajusted (pgc * growth * (- 1 drivethruShare))
;toiletThreshold is not using takeoutShahre, seatingUitilization, margin because takeoutGuests may use toilet as well)

(defvar peakOrders 0)
(defvar registerCapacity 0)
(defvar kioskCapacity 0)
(defvar dineinGuests 0)
(defvar requiredSeats 0)
(defvar kioskOrders 0)
(defvar cashRedirects 0)
(defvar frontcounterOrders 0)
(defvar frontcounterChecks 0)
(defvar standardRegisters 0)
(defvar seats 0)
(defvar collectLength 0)


(format t "~%Peak Guest Count:  ")
(write peakGC)

(format t "~%Expected growth over next five years: ")
(write (* growth 100))
(write "%")

(setq peakOrders  
      (round 
       (* peakGC (+ 1 growth))))
(format t "~%Orders during Peak Hour (accounting for growth):  ")
(write peakOrders)
(defvar frontcounterGuests 0);i.e. picking up orders at front counter including kiosk orders and indoor takeaway), for sizing toilet
(setq frontcounterGuests
      (* peakOrders groupsize (- 1 drivethruShare)))

      (if
       (< frontcounterGuests (first toiletThresholds))
          (setq toiletA (first toiletAreas))
          (setq toiletA (second toiletAreas)))
(format t "~%Public Toilet Area: ")
(setq toiletA
    (if
        (< frontcounterGuests (first toiletThresholds))
        (first toiletAreas)
        (second toiletAreas)))
(write toiletA)
(setq dineinGuests  
      (round 
       (* peakOrders groupsize (- 1 drivethruShare) (- 1 takeoutShare) seatingMargin (/ 1 seatingUtilization))))
(format t "~%Guests dining in during peak hour accounting for utilization and margin:  ")
(write dineinGuests)

(setq seats
      (
       (lambda
           (a b c)
         (ceiling
          (* c 
             (if (> a 15)
                 (+  (* (/ -1 45 ) a b ) (* (/ 1 45 ) a) (* (/ 60 45 ) b) (/ -15 45))
                 (* ( / 1 15) a b)))))
       visitDuration 
       topQuarterShare 
       dineinGuests))
(format t "~%Number of seats required:  ")
(write seats)


(setq registerCapacity
      (if (< orderSize 5)
          90
          (if (< orderSize 8)
              60
              (if (< orderSize 12)
                  40
                  30))))

(format t "~%Register capacity at front counter (orders per hour per register):  ")
(write registerCapacity)
(setq kioskCapacity
      (if (< orderSize 5)
          30
          (if (< orderSize 8)
              25
              (if (< orderSize 12)
                  20
                  15))))

(format t "~%SOK capacity (orders per hour per SOK):  ")
(write kioskCapacity)

(setq kioskOrders
      (round 
       (* peakOrders kioskShare (- 1 drivethruShare))))
(format t "~%Orders placed at kiosks:  ")
(write kioskOrders)

(setq cashRedirects
      (round
       (* kioskOrders redirectShare)))
(format t "~%Orders placed at kiosks payed at front counter (cash redirects):  ")
(write cashRedirects)

(setq frontcounterOrders  
      (round
       (* peakOrders (- 1 drivethruShare) (- 1 kioskShare))))
(format t "~%Orders placed at front counter (excluding cash redirects):  ")
(write frontcounterOrders)

(setq frontcounterChecks
      (+ frontcounterOrders cashRedirects))
(format t "~%Checks paid at front counter (including redirects): ")
(write frontcounterChecks)
        

(setq standardRegisters
      (if (< 30 cashRedirects)
          (/ frontcounterChecks registerCapacity)
          10))
(format t "~%Standard registers at front counter: ")
(write standardRegisters)

(setq collectLength
      (if (< orderSize 5)
          (if (< collectOrders 180)
              1.2
              (if (< collectOrders 220)
                  1.5
                  (if (< collectOrders 260)
                      1.8
                      (if (< collectOrders 300)
                          2.1
                          (if (< collectOrders 340)
                              2.4
                              3.0)))))
          (if (< orderSize 8)
              (if (< collectOrders 150)
                  1.2
                  (if (< collectOrders 180)
                      1.5
                      (if (< collectOrders 220)
                          1.8
                          (if (< collectOrders 260)
                              2.1
                              (if (< collectOrders 300)
                                  2.4
                                  3.0)))))
              (if (< orderSize 12)
                  (if (< collectOrders 110)
                      1.2
                      (if (< collectOrders 150)
                          1.5
                          (if (< collectOrders 180)
                              1.8
                              (if (< collectOrders 220)                                        
                                  2.1
                                  (if (< collectOrders 240)
                                      2.4
                                      3.0)))))
                  (if (< collectOrders 70)
                      1.2
                      (if (< collectOrders 110)
                          1.5
                          (if (< collectOrders 150)                            
                              1.8
                              (if (< collectOrders 180)
                                  2.1
                                  (if (< collectOrders 220)
                                      2.4
                                      3.0)))))))))
(format t "~%Collect counter length in meters:  ")
(write collectLength)

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.