运筹规划(三)-线性规划

排班和人员规划模型

运营规划模型是用于决策生产工作的安排以有效的使用可用资源。在拍板模型中,工作量给定的前提下,我们需要规划完成这些工作的资源投入。特别的,我们必须决定不同类型的员工数量,以保证完成所有的工作量。同样的,线性规划模型解决这类问题的有效工具。

俄亥俄国家银行的排班规划

俄亥俄国家银行(ONB)的支票处理中心遇到了人员的工作分配问题。银行收到的支票已经印有账号和其他经过加密的识别信息。支票处理中心的操作人员需要输入支票上的金额,然后计算机统一处理支票金额和其他信息。
每个工作日的傍晚时分是支票到账的高峰期。我们虚构的数据假设到账的支票数量。

时间 到账数量
11:00 10
12:00 11
13:00 15
14:00 20
15:00 25
16:00 28
17:00 32
18:00 50
19:00 30
20:00 20
21:00 8
- -

未收现的支票会给银行带来利息损失。因此,及时处理所有支票以便下一个工作日能收现的非常关键的。ONB决定强制要求所有支票都必须在22:00点处理完毕。此外任何时刻待处理支票数量不超过20000张。
两类职员能够胜任处理的工作。全职员工轮班工作8小时,中间有一个小时无休时刻。兼职人员每天工作4小时,中间没有午休时间。两种轮班方式都能在任意一个时刻开始,并且全职员工还可以安排加班1个小时。

开始时间 11(全职) 12(全职) 13(全职) 11(兼职) 12(兼职) 13(兼职) 14(兼职) 15(兼职) 16(兼职) 17(兼职) 18(兼职)
11:00 R - - R - - - - - - -
12:00 R R - R R - - - - - -
13:00 R R R R R R - - - - -
14:00 R R R R R R R - - - -
15:00 - R R - R R R R - - -
16:00 R - R - - R R R R - -
17:00 R R - - - - R R R R -
18:00 RN RN RN - - - R RN RN RN RN
19:00 RN RN RN - - - - - RN RN RN
20:00 ON RN RN - - - - - - RN RN
21:00 - ON RN - - - - - - - RN

R表示正常上班
O表示加班
N表示夜勤

表1-1
在我们的分析中,假设全员的薪资是每小时11美元,晚上6点以后可获得额外的1美元的夜勤补贴,加班薪酬的日常的150%,兼职员工的薪酬的每小时7美元,晚上6点以后同样获得夜勤的补贴。同时为了控制加班时间,我们要求任意班次最多的只有一半全职员工加班,并且每天的总加班时间不超过20小时,
很自然,全职员工工作效率比兼职员工效率高,我们假设全职员工的每小时能处理1000张支票,但兼职每小时800支票。
支票处理最后一步是编码。可用的机器数量限制了任意时刻可以工作的员工人数,我们的中心一共是35台编码机器。

ONB的决策变量和目标函数

所有可能的排班方式都如表1-1所示
hh表示班次开始的时间,
xhx_h表示从h开始的班次的全职员工的人数
yhy_h表示从h时开始的班次的加班全职员工的人数
zhz_h表示从h时开始的班次的兼职职员工的人数

目标是函数为

min 90x11+91x12+92x13+18y11+18y12+28z11+28z12+28z13+28z14+29z15+30z16+31z17+32z18min\ 90x_{11}+91x_{12}+92x_{13}+18y_{11}+18y_{12}+28z_{11}+28z_{12}+28z_{13}+28z_{14}+29z_{15}+30z_{16}+31z_{17}+32z_{18}

ONB的约束条件

x11+z11<35(11点机器限制)x11+x12+z11+z12<35(12点机器限制)... ...y12+x13+z18<35(21点的机器限制)x_{11}+z_{11}<35(11点机器限制) \\ x_{11}+x_{12}+z_{11} + z_{12}<35(12点机器限制) \\ ...\ ... \\ y_{12}+x_{13}+z_{18}<35(21点的机器限制)

其次加班时间也有限制

y11<12x11(11点班次的加班约束)y12<12x12(12点班次的加班约束)y11+y12<20(总加班约束)y_{11}<\frac{1}{2}x_{11}(11点班次的加班约束) \\ y_{12}<\frac{1}{2}x_{12}(12点班次的加班约束) \\ y_{11}+y_{12}<20(总加班约束) \\

覆盖约束

人员规划模型主要约束体现在一系列的覆盖约束。
在排班模型中,覆盖约束能够保证任何时间区间选择的班次能够提供足够大的能力或者产出,以满足时间区间的需求。

班次(产出/工作人员)×在班人数>该时间区间的需求\sum_{班次}(产出/工作人员) \times 在班人数 > 该时间区间的需求

whw_h表示h时未完成的积压工作量(千张)
所以排班模型的覆盖约束为

x11+0.8z11>10w12(11点的覆盖约束)x11+x12+0.8z11+0.8z12>11+w12x13(12点的覆盖约束)...  ...y11+x12+x13+0.8z17+0.8z18>20+w20w21(20点的覆盖约束)y12+x13+0.8z18>8+w21(22点的覆盖约束)x_{11}+0.8z_{11}>10-w_{12}(11点的覆盖约束) \\ x_{11}+x_{12}+0.8z_{11}+0.8z_{12}>11+w_{12}-x_{13}(12点的覆盖约束) \\ ...\ \ ... \\ y_{11}+x_{12}+x_{13}+0.8z_{17}+0.8z_{18}>20+w_{20}-w_{21}(20点的覆盖约束) \\ y_{12}+x_{13}+0.8z_{18}>8+w_{21}(22点的覆盖约束)

以上的约束的物理描述是20点的对应的覆盖约束要求20点到21点在班的人员的总产出大于等于该小时内到达20000张支票。加上前一个小时遗留的工作量(w20w_{20})再减去滞留一个小时完成的工作量(w21w_{21}

多阶段模型

上面我们介绍的只是一个静态的模型,也就是所有的规划都只针对单一时间区间。、但是大多数情况下,线性规划问题是动态或者涉及多个时间段的,因为他们处理的随着时间变化的情形。我们称为多阶段模型。

食品服务机构的现金流管理

几乎任何的线性模型都可能涉及到多阶段决策模型,但是时间依赖性最强的属于现金流管理。任何企业都需要记录现金的流入流出必要时融资,明智时投资。
我们通过一家虚拟的食品服务机构来说明这类模型涉及到的问题。食品服务机构给饭店、学校和其他类似机构供应食物和其他商品。

sts_t表示第t周向小客户预期现金销售收入
rtr_t表示第t周向大客户预期应收账款
ptp_t表示第t周支付给IFS供应商的预期应付账款
ete_t表示第t周预期工资水电费等支出

项目 1 2 3 4 5 6 7 8
现金销售(sts_t) 600 750 1200 2100 2250 180 330 540
应收账款(rtr_t) 770 1260 1400 1750 2800 4900 5250 420
应付账款(ptp_t) 3200 5600 6000 480 880 1440 1600 2000
费用支出(ete_t) 350 400 550 940 990 350 350 410

现金销售和应收账款能及时入账到IFS的支票账户,费用支出也会及时扣除,数额ptp_t的应付账款截至日期是t+3周,但是如果在t周立马付清,可以得到2%的折扣。
随着假期的到来,上表中的数额会随着时间推移波动。除了应付账款可以选择何时支付,IFS的财务还有两种方式解决可能存在的现金流困难。
首先公司可以向银行借款,信用贷款上限是400万美元,周利率是0.2%,但是银行要求IFS的支票账户至少保持在当前贷款额度的20%,此外,公司可以将多余的现金投资到短期货币市场中,其对应的回报率是0.1%。
财务想保持账户余额20000美元的前提下,最小化利息成本折扣损失,我们的任务是帮助它管理账户,

决策变量为
gtg_t表示第t周的贷款金额
hth_t表示第t周的偿还贷款金额
wtw_t表示第t周推迟到t+3周支付的应付账款金额
xtx_t表示第t周的货币市场投资金额
yty_t表示第t周的累计银行欠款
ztz_t表示第t周的手头现金

定理:多阶段模型通常采用下面的方式表示平衡约束
周期t初始水平+周期t内决策影响=周期t+1的初始水平。

最终建模如下

min 0.002t=18yt+0.02t=18yt0.001t=18xt(净利息)s.t.zt1+gtht+x+t1xt+0.001xt10.002yt1+xtet+rt0.98(ptwt)wt3=zt(现金平衡)yt1+gtht=yt(负债平衡)yt<4000(信用额度限制)zt>0.2yt(银行规定)wt>pt(支付限制)zt>20(储备金平衡)min\ 0.002\sum_{t=1}^{8}*y_t+0.02\sum_{t=1}^{8}*y_t-0.001\sum_{t=1}^{8}*x_t (净利息) \\ s.t.\\ z_{t-1}+g_{t}-h_{t}+x+{t-1}-x_{t}+0.001x_{t-1}-0.002y_{t-1}+x_{t}-e_{t}+r_{t}-0.98(p_{t}-w_{t})-w_{t-3}=z_{t} (现金平衡) \\ y_{t-1}+g_{t}-h_{t}=y_{t} (负债平衡) \\ y_{t}<4000 (信用额度限制) \\ z_{t}>0.2y_{t} (银行规定) \\ w_{t}>p_{t} (支付限制) \\ z_{t}>20 (储备金平衡) \\

模型的目标函数是最小化利息费用加上折扣损失,在减去利息收入。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×