在线时间 57 小时 最后登录 2015-4-27 注册时间 2014-4-4 听众数 8 收听数 0 能力 0 分 体力 940 点 威望 0 点 阅读权限 40 积分 354 相册 0 日志 0 记录 0 帖子 138 主题 1 精华 0 分享 0 好友 20
升级 18%
TA的每日心情 慵懒 2015-2-26 16:45
签到天数: 82 天
[LV.6]常住居民II
群组 : 第六届国赛赛前冲刺培
本帖最后由 方程equation 于 2015-2-15 12:19 编辑
, B) C8 f L: J6 T& s4 V7 ^
B- @6 ], m# ^: c* O 本帖转自我自己在果壳网日志的原帖:
$ c9 k: t: m& B: Z" K6 ^ http://www.guokr.com/blog/805519/
% A/ R0 a- O1 w9 U# R1 O 6 R3 m- W' S/ V; o
今年的A题关于埃博拉病毒 ,B题关于马航MH370的搜索 。我当时选的是B题。当时是因为头脑一热,想起自己在果壳网、知乎网、新浪微博、科学网博客等网络社区读过一些MH370的信息,就高高兴兴地拍板选定题目。交稿后第二天,回头想了一下A题,发现A题比B题更好玩……现在我的感觉,无疑是:
/ o1 Y) c- s7 ^; X8 l # i5 h6 D o! k/ k; o
女儿已长到8岁了,忽地发现当年娶错了老婆。还能怎么办,女儿都有了,离婚不行了,找当年的意中人发发短信、搞搞婚外恋就算了吧……还能怎样呀……唉。 & Z1 E5 W) }; ?
" B- |8 I( Q7 S& m- T5 O
于是,今天就试着做了一下A题。
+ T( f/ S6 ^. E1 B - g0 D& N) M2 V2 P6 N$ P
A题题目原文:) b5 p5 s) R6 Q" _
$ V, J9 B. _0 h$ A5 E
PROBLEM A : Eradicating Ebola6 q( o% @+ a, d# d! n+ r
! s3 s5 |% `- {6 U) N The world medical association has announced that their new medication could stop Ebola and cure patients whose disease is not advanced. Build a realistic, sensible, and useful model that considers not only the spread of the disease, the quantity of the medicine needed, possible feasible delivery systems, locations of delivery, speed of manufacturing of the vaccine or drug , but also any other critical factors your team considers necessary as part of the model to optimize the eradication of Ebola, or at least its current strain. In addition to your modeling approach for the contest, prepare a 1-2 page non-technical letter for the world medical association to use in their announcement.1 T, a5 T9 L" g- f6 w7 e
- K, U* W9 l# N3 \1 r
翻译我就不做了,埃博拉相信也不用多费口舌介绍了吧……重点稍微用粗体标注了一下:题目关键是“疾病的扩散”“医药的配送”“疫苗的研制”等。# ]1 P8 i8 Y% k& N- E' y& H
8 L( `+ p" j: D6 G5 {- G. X. a0 v
解题思路可以用SI模型;埃博拉目前不能完全免疫,于是不能用SIR模型。但SI模型在这里显得太过于笼统了——大量细节信息都被覆盖了。于是我就省去计算SI模型的环节了。直接做小程序仿真模拟一下疫情。" k/ j! f* c$ I8 J4 u
& l9 n0 u- m9 x4 v" ?
程序是NetLogo写的。就是《模型思维》MOOC 的那个Scott老师用的NetLogo。文章最后会附上.nlogo模型文件。得安装NetLogo软件才能打开。
# q; \1 u9 M8 g* G' m2 I
# E8 H2 m% L# ^, I NetLogo官网下载地址:https://ccl.northwestern.edu/netlogo/ + c& z$ c7 | {4 e) p0 {6 {
+ f2 r5 |. B- W$ v5 R* h 这个小程序的界面是这样子的
( q+ f" q& D: }. W1 d 1 ~. v5 z( Q2 Q; W" Q9 N
6 A& k j/ l5 g' v% D# u; j. p
9 O( ]' I d# `0 F2 P( V( j
右边可见的一个正方形框,视为一个小城区的地图。上面的一个个点是这个城区的居民;一个点是一户家庭。它们每天都有不大的概率会搬家。! t8 d) Y5 Y7 Q' R# d1 C- e
每户家庭共有四种状态:健康、感染潜伏、感染发病、死亡 + B3 \- ] @' }
! O- \' T( n: y/ \8 {2 E
健康(绿色 )的家庭是没有传染力的,因为他们本来就是健康的。如果此时旁边有一户人是感染者,它就会有一定概率变成感染者。
# ~" _' H7 U1 y9 L: U! _' f 感染潜伏(蓝色 )的家庭处于感染初期(潜伏期),行为和一般健康家庭无疑,可以搬家。但多了传染性——而且,随着时间经过,它转为感染发病状态。
: w# E; j8 ]- i3 v: T# z1 b3 Z 感染发病(红色 )的家庭具有传染性,而且由于已发病,会失去搬家的能力。但它和潜伏期一样,也有机会被治愈,转成健康者。 k& F; P, e0 f( y! ?( T
死亡(白色 )的家庭就是死掉了的家庭,它们永远不能改变居住地和状态了。
( k G6 |6 |9 s% t* Y 除了家庭的四种状态,还要提一下左侧的一些参数。自上而下:+ E' S4 E. \1 {. n- o# u
& l# ~* P6 ?% Y# A 城区家庭总数(population)$ `( [9 {9 s% X, E; g2 o
城区每周搬家的户数(move-per-week)
; v" C" r/ M& [! X+ p 传染概率(infect-rate),一户人家被感染者传染的概率: m3 T& s8 H5 J
潜伏期(incubation-days),即感染到发病期间的天数
) r }+ I1 o7 }4 g9 P7 ]3 ~ 发病期(disease-days),即发病到死亡期间的天数0 H! G6 F: h. Y8 N. D1 c
初始感染户数(initial-infected)) S) r; _0 {+ C. v
疫苗作用效率(vaccine-rate),即某个时刻,一次疫苗的调配能救活多少百分比的感染者. k. {8 L1 f4 S9 n4 f0 e9 u
6 ?5 F' k0 { E: O9 g& x 程序代码不多作介绍了;即使介绍也没有人关心吧。8 f3 U- O" G8 ~, I0 e( Y
$ n! v+ H# `+ G" C3 k 整个程序的思路,若用流程图描述,是这样的:7 s+ C5 T7 ]0 F- d
) @1 B. p0 A! _5 V) E
# F) e# Z7 i1 B- T L" E: D! i 0 d8 ?* y$ R/ @9 A/ J
实际试试运行吧。第一次模拟,参数调成这样:6 z; G" F/ S# t- c9 N4 W! Z
' s* D% ^1 { r, h& z" A) q
4 ^6 J/ p. F1 ~+ ]
4 B2 p! D9 B* x9 n6 V+ p, @0 O 这组数据比较扯,纯属试用。病毒感染者8天发病、发病3天死亡,接触传染率7.5%,但疫苗效用高至70%。但我们暂时不使用疫苗,让疫情自生自灭,看看会如何。
: w+ h8 K5 M( _7 r ; Y2 f+ {9 C A F5 w. y4 E( b
. L( S# y4 e7 ~2 s k. q) q9 z9 I
$ G9 @1 b) X3 d3 |% n3 t; R 比较无趣的一次运行,基本上,感染人数一直压得很低,以至于病毒没机会传播。因为几乎整个过程由于感染者死得太快,还没来得及传播疾病,就变成白色的小块,失去了传染能力。搞到最后死的人也不是非常多。(怎么听起来像我很希望病情扩散似的……)
3 ?2 c p" _: }0 f* ^
) L* m# _( ]1 ]9 I1 d
# s T) y# Z% X1 x$ L9 h! b: I
1 J" G s# k! f! g& L- @7 B; ` 虽然没有治疗措施,但由于感染者都消亡得很快,疾病也就无法大规模散播。最后,会有略少于一半的家庭幸存。
2 E" p3 \) {, \
7 e A" u+ ]. w. s3 r 还是不治疗,但换一个参数——把潜伏期调高一点,调到埃博拉的真实水平(一般是18天)。传染概率等参数,为了控制变量原则,在这儿我就不调了,虽然7.5%还是低估病毒的威力。
) \3 j( b" d4 d# \ d, p" l) _
8 H. B% Y& ^# ^. a0 Z" \
4 z" ]& |- x6 B8 n( }9 g
7 } B6 l: e# I4 {; q/ V9 w
- n# D' D4 H& z0 L4 E) a 这时,情况比刚才可怕(有趣)了一点:
4 G- }4 m- a: f0 d* N; p; f
5 C+ \$ v8 S& f7 t# A
8 m8 V. E- D# f* q
) b& l, S- C% r" \5 B4 F/ D( U
6 |2 i% l5 W, f. l
, i9 a2 y2 F( V% _; R 从“时间-染病者”曲线图可以看到,整个疾病的扩散状况有一个小高峰。这个小高峰比刚才低潜伏期的时候要高。小高峰过后之所以会下降,只不过是因为人都死光了……最后死亡人数超过了90%……真糟糕啊。/ T+ `9 }; h1 n( ~$ g$ I) C
3 M9 z# u) q D
至此,我体会到了流行病学里的一个结论:9 ~% Z# ]; M. A/ E2 R* t) D% E
' b/ b1 b$ F$ H1 c4 D. u, P% Y
在没有任何治疗措施、染病必死的情况下,染病者活得越久,整个种群幸存者就会越少。 / L, g+ T- y( t" z' c, Y' q
8 {1 g' z' W3 K* a* e) ?1 ~5 n$ ]8 k
这么所,听起来……谁看到都会反感的吧!感觉像是指责病人活得久呀!作为比赛论文,观念上不应该如此负能量、如此反人道——还有,不能如此弱智,犯“将问题理想化”的谬误呀,魂淡。于是,我们还是考虑一下,加入治疗措施后会如何吧。也许意外地,效果拔群呢?/ g- D- q- J6 u* E4 U
0 S( @/ d2 N$ G+ [: k
这里引入的治疗,大体意思是这样。
" _3 Y4 U- ?0 U( g; {
: T9 q. q- J, r8 v" B. Z. } 每个时刻,一旦疾控中心感觉到不妙,就会点一下那个“放置疫苗”的按钮,一定比例(vaccine-rate)的感染者(包括潜伏期和发病期)就会康复。先不管为何疫苗也可以治病吧。我这儿用的只是一个名字……其实应该叫“药物”而不是“疫苗”。下面就改口叫“药物”吧。虽然感染者可以返回成健康人,但依然会再次被传染。另外,若一个家庭不幸死掉了,就没法被救活了。
- q4 I, _( i! s5 K
/ _* b% f0 Z' f/ z1 } 虽然,可以设计一个基于机器学习的程序,自动判断应该什么时刻发放药物——但我偷了懒。我只人人工判断,实践了先验方案:隔N天点一下“放置疫苗”按钮 。毕竟这个不是参加比赛用的程序,只是一次婚外恋,没必要搞得自己太辛苦嘛,对吧……
) O# Z% f6 Z9 ^' U ; [* g8 H' q9 U+ R7 p! U+ W
保持上面“潜伏期18天”那个参数设置。这回,隔15天按一次“放置疫苗”。, h! f" T/ i) y+ J4 |, E* S
: G0 W7 H, O! U6 U7 u0 C) K
! T- [+ N$ @4 F O) f. W9 C) D1 Q
+ I' Z" k, t- I' _ 情况看上去得到了控制。
0 H5 N2 r' t* ]" V( y; t6 |' v
2 [& F F0 L$ j* O; V# L2 n: g) D
- e) O( T/ w* {& g8 T- Z
/ l& {7 g1 l8 Z8 o/ e* p
但有一件重要的事,没有在这个动图里展示出来。那就是,即使病情看上去得到控制,但死亡人数必然越来越多,最终整个城区注定会变成死城。——结论是,15天放一次疫苗……哦不,药物,实在是太慢了。7 G' f# y7 i7 S
& ^! I& X1 p& g: w
最“好”的药物发配方案是——每天来一发。! h! Z# ?& k6 g4 o ?8 K
- h5 i* ]7 e; l8 p. `- e 但这很难做到。药物的供应做不到非常及时。因为交通问题和研制成本问题,很难坚持每天都一瞬间就将药物送到城区的每个角落。若把问题视为一个规划问题,这就要求一个发配频率的阈值——药物调配的周期不能太短,因为现实做不到太短;但也不能太长,因为太长的话大部分人会得不到及时的治疗、死路一条。
* H! X& E9 O) e
% }- u3 d6 d$ O8 Q" e 但若把问题视为现实世界的医疗规划,我们的原则当然是“一个病人也不能少 ”——不计成本地、不放过每一个感染者的治疗。这样做,成本是很高的,但效果如何呢?确实,效果极为拔群。程序跑起来,若每天都来一发,结果是:一个发病者和死亡者都不会诞生。
! u, w3 N, K- ~. @. ^ ' `7 n. m- a6 z( ^
6 i7 s" J' k3 m$ w! w8 t$ ]# g 4 j% c6 a" A: {/ @
但现实中,这种——染病家庭还在潜伏期,就扼杀其病情于摇篮中——的方案明显是不可行的。所以这个程序还可以继续调整一下,加一点内容。而模型里,药物调配方案的阈值,我也没有在这里继续仔细求解了。若是在比赛中,可能还是会写程序、或者用SI模型算一下的。现在嘛,毕竟是婚外恋,生孩子这种事,留给有心人去做吧。5 e) ~0 V9 J9 Q' c+ O" ]* `
& ?7 ]! ~/ v! U+ h: Q
最后,补充一句:祝看到本文的MCM2015的参赛者都获得理想成绩。
& l% W$ N: Z$ Q4 W
* r* K I# [; t) K2 `, e ; u5 O( t7 V4 O
我还没谈我的B题做得怎样呢。其实,我呀,做得不好。
# H0 R% v) ]# |- ^8 E. z ————————————! x. l5 p1 d5 u' e
4 z0 n5 b4 a( [9 v! S" ~3 B
, Z3 E) h- S" A+ d
& q) x! ?" m% o$ x ?' o2 g
Ebola.rar
4.48 KB, 阅读权限: 10 , 下载次数: 0, 下载积分: 体力 -2 点
售价: 4 点体力 [记录 ]
MCM2015A
zan