男厕小便池的蒙特卡洛模拟

Monte Carlo simulation of Urinals in men’s toilet

储存如厕状态的数据结构

使用一个键值对 Association 来表示当前的如厕状态:
◼
  • stat
    储存当前的占用情况和剩余如厕时间
  • ◼
  • wait
    储存当前正在等待的人数
  • Out[]=
    Waiting: 2

    选择坑位的逻辑

    按照一定能量进行坑位的选择, 认为在 i 处选择的能量为:
    E
    i
    
    w
    Left
    s
    i-1
    +
    w
    Middle
    s
    i
    +
    w
    Right
    s
    i+1
    +
    w
    Boundary
    boundp(
    s
    i
    )+
    w
    Waiting
    n
    Wait
    即:
    ◼
  • 邻近有人, 需要克服的势垒高 (
    w
    Left
    
    w
    Right
    5
    )
  • ◼
  • 位置上有人, 需要克服的势垒非常高 (
    w
    Middle
    99
    )
    不过抽象的事情是: 虽然概率很低, 但是也不是不可能的, 毕竟人逼急了什么抽象的事情都能干出来
  • ◼
  • 在边角上, 需要克服的势垒高 (
    w
    Boundary
    1
    ), 但是总比别人在边上好?
  • ◼
  • 如果有人在等待的话, 可以适当降低一些自己的矜持, 不得不选择一些不愿意用的空位 (
    w
    Waiting
    -5
    )
  • 在计算得到每个位置上的能量之后, 就可以计算得到选择该坑位的概率:
    P
    i
    
    -
    E
    i
    e
    Out[]=
    Seats
    Waiting: 0
    Possibility
    于是状态转移变成如下结果:
    ◼
  • 对
    stat
    减少
    dt
    , 模拟泄洪过程
  • ◼
  • 对
    wait
    按照
    dt/t0
    概率增加
    1
    , 模拟来人过程
  • ◼
  • 若
    wait > 0
    , 则进行寻址过程
  • Out[]=
    ​
    dt
    t0
    stat
    plotUrinalSeats[urinalSeat$4233]
    步进
    possibility
    plotUrinalSeatsPossibility[urinalSeat$4233]
    雅座一位