§3.5动态系统的仿真一.系统仿真(Simulation)1.系统仿真:使用计算机对一个系统的结构和行为进行动态模拟为决策提供必要的参考信息。2.仿真模型:由计算机程序控制模型的运行从数值上模仿实际系统的动态行为。3.仿真模型的特点:对象真实、复杂,进行模仿。4.关于仿真技术仿真技术已经成为最重要的和最流行的分析动态系统模型的方法。☻微分方程的精确解方法具有局限性。非常多的微分方程我们不知道如何求解。☻定性分析方法可用于讨论系统的动态行为,但是对某些问题我们需要定量的答案。☻仿真技术非常灵活。可以不困难地将诸如时滞或随机因素等复杂的属性引入模型。这些是难以用解析的方法处理的。4.仿真过程☻现实系统的分析:了解背景,明确目的,提出总体方案。☻组建模型:确定变量,明确关系,设计流程,编制程序☻运行检验:确定初始状态,参量数值,运行程序,检验结果,改进模型。☻输出结果二.系统仿真举例例1.池水含盐池中有水2000m3,含盐2kg,以6m3/分的速率向池中注入浓度0.5kg/m3的盐水又以4m3/分的速率从池中流出混合后的盐水问欲使池中盐水浓度达到0.2kg/m3,需要多长时间?回顾——机理模型drdrtVtptptrdttdptVOtIII)]()([)()]()()[()()(0系统分析:池中有盐水,匀速注入浓盐水,匀速流出混合后的盐水,池中盐水的浓度变化。目的:仿真池中盐水浓度的变化,给出达到给定浓度的时间。变量、参量时间t,体积V(t),盐量S(t),浓度p(t);流入流速rI,流入浓度pI,流出流速rO,流出浓度p(t),给定浓度p*时间步长Δt,打印步长T.关系:在[t,t+Δt]内有trrtVttVOI)()()(ttprprtSttSOII)]([)()()(/)()(ttVttSttp动态系统仿真的伪代码运算池水含盐动态系统模拟变量V(n)=时刻n池中盐水体积p(n)=时刻n池中盐水浓度S(n)=时刻n池中盐水含盐量Δt=时间单位N=仿真时间长度输入Δt,V(0),p(0),S(0),N过程Beginforn=0toNdoBeginV(n+1)←V(n)+(rI-r0)ΔtS(n+1)←S(n)+[ripi-r0p(n)]Δtp(n+1)←S(n+1)/V(n+1)EndEnd输出V(1),V(2),…,V(n)S(1),S(2),…,S(n)p(1),p(2),…,p(n)系统仿真流程图初始化V(0),S(0)仿真时钟t=0打印时钟T=0计算V(t+Δt),S(t+Δt),p(t+Δt)时钟步进t=t+Δt,T=T+1p(t)p*Tm打印输出YNclft=1;v=[2000];s=[2];p=[1/1000];%初态V=[v(end)];S=[s(end)];P=[p(end)];x=[0];%终态whilep(end)=0.2%最终阈值T=0;whileT10%打印阈值T=T+1;t=t+1;%时钟步进v=[v,1];s=[s,1];p=[p,0];%变量步进v(t)=v(t-1)+2;s(t)=s(t-1)+3-4*p(t-1);%模型p(end)=s(end)/v(end);ifp(end)0.2T=20;%转输出end;end;x=[x,t-1];%时间记录V=[V,v(end)];S=[S,s(end)];P=[P,p(end)];end;V1=10^(-3).*V;a=[x’,V1’,S’,P’]%输出调节参数rI=6,rO=4,pI=0.5,p*=0.2初始V(0)=2000,S(0)=2步长Δt=1,m=10结果表3.15,t=185分,盐水浓度为0.2.模型)0()(,VrttVrrrdtdVOI)()()(tVprtptVrdtdpIII问题1.在池水含盐的问题中令rO=rI=6m3/分10.池中盐水的浓度如何变化?20.若当p(t)=0.3kg/m3时令pI=0,需要多少时间达到p*=0.2kg/m3?2.若池中盐水的初始浓度为p*,对于不同的初始体积V0,当pI=0时,计算池中盐水浓度降低一半所用的时间例2.战争问题.两支军队,红军(R)和蓝军(B),进行战斗。在这场常规战中,伤亡是由于直接交火(步兵)和火炮射击(炮兵)。假设直接交火的伤亡数与敌军步兵数成正比。由炮火造成的伤亡数与敌军的炮兵数和友军的密度两者都有关系。红军聚集了五个师袭击两个师的蓝军。蓝军具有防御的和武器精良的优势。蓝军为赢得战斗该尽多大的努力?假设:1.武力水平正比于军队的数量。2.炮兵和步兵部队的伤亡正比于部队的数量,则双方剩下的炮兵或步兵部队正比于总的部队数量。3.直接交火的伤亡数与敌军步兵数成正比。4.由于炮火导致的伤亡直接正比于敌军武力水平和友军密度水平的乘积参量、变量R=红军单位数(师)B=蓝军单位数(师)DR=由直接交火导致的红军伤亡数(单位/小时)DB=由直接交火导致的蓝军伤亡数(单位/小时)IR=由间接交火导致的红军伤亡数(单位/小时)IB=由间接交火导致的蓝军伤亡数(单位/小时)模型DR=a1BDB=a2RIR=b1RBIB=b2RBR0,B0R(0)=5,B(0)=2a1,a2,b1,b2是正实数a1a2,b1b2目标:确定条件使得在B0之前,R0我们将用两个状态变量:x1=R,红军部队的兵力单位数量x2=B,蓝军部队的兵力单位数量战斗问题的离散时间动态模型:Δx1=-a1x2-b1x1x2Δx2=-a2x1-b2x1x2算法:DISCRETETIMESIMULATION变量:x1(n)=在时刻n的第1状态变量x2(n)=在时刻n的第2状态变量N=时间阶段数输入:x1(0),x2(0),N过程:Beginforn=1toNdoBeginx1(n)x1(n-1)+f1(x1(n-1),x2(n-1))x2(n)x2(n-1)+f2(x1(n-1),x2(n-1))EndEnd输出:x1(1),…,x1(N)x2(1),…,x2(N)参数估计初始x1(0)=5和x2(0)=2。时间步长t=1小时。推测,一个典型的正规战斗进行大约5天,每天持续约12小时。这意味着一支部队在大约60小时的战斗中消耗灭亡如果一支队伍在60小时内每小时减员5%,那么剩余的部分将是(0.95)60=0.05,结果看来正确令a2=0.05。因为炮火在杀伤力方面通常不如直接交火有效,令b2=0.005.(注意到b2与x1和x2相乘,这就是为什么我们要将它的值取得如此小。)假设篮军比红军具有更有效的武器,因此a1a2且b1b2。假设a1=a2,b1=b2,1。分析的目的是要确定最小的使得在x20之前,x10成立。于是模型为Δx1=-a2x2-b2x1x2Δx2=-a2x1-b2x1x2我们将通过对若干个的值运行模拟程序求解这个问题。分别对=1、1.5、2、3和5运算这个模型。这样可以使我们知道应该是多大,同时可以使我们对照人们对情形的直觉判断来检验模拟的结果。例如,我们可以检验是否越大,对蓝军越有利。模拟结果优势(λ)战役时间胜方剩余队伍1.08R4.41.59R4.12.09R3.73.010R3.05.017R1.06.013B0.6结伦:我们模拟了一场5个师的红军进攻和2个师的蓝军防守的交战。我们假设双方全力投入并坚持战斗直到一方完全获胜。我们要研究能够弥补数量上处于5:2的劣势的武器有效性(杀伤力)的强度。我们对不同的武器精良性比率模拟了若干次战斗我们发现蓝军需要至少5.4:1的武器上的优势才能战胜数量处于优势的5个师的红军队伍。灵敏性分析对这类多数数据完全来自猜测的问题做这样的分析特别重要。我们从研究伤亡系数的数值和战斗结果之间的关系入手。已经假设a2=0.05,b2=a2/10,a1=a2和b1=b2现在我们让a2变化,且保持它与其它变量的关系我们将研究min对a2的依赖关系,这里min定义为使得蓝军取胜的最小的值。于是对每个a2值运行模型若干次。不需要将结果都列表表示,因为对每种情形我们都检验(从a2=0.01到a2=0.10)发现min=5.4,正如在基本情形(a2=0.05)得到的那样。显然min对伤亡系数的数值一点都不敏感。还可以进行其它各种敏感性分析,只要时间容许、好奇心持续不断、又没有其它工作压力。我们甚至对min和红军与蓝军的数量上优势率之间的关系感兴趣,这里假设优势率为5:2。为研究这个问题我们回到基本情况,a2=0.05,为确定min,对各种不同的红军力量强度初值x1和固定的x2=2,运行模型。这样进行的模型浏览得到的结果列于下表.运算情形x1=2只是为了验证。我们得到此时min=1.1,因为=1只会导致战平。力量对比率(R:B)最小优势min8:211.87:29.56:27.35:25.44:23.63:22.22:21.1问题1.考虑战争问题中天气对战争的影响。坏天气和糟糕的能见度会降低双方直接交火武器的效率。间接交火武器的效率相对而言不太受天气的影响。我们可以在模型中表达坏天气的影响如下。记w为坏天气条件导致的武器效率的下降,用Δx1=-wa2x2-b2x1x2Δx2=-wa2x1-b2x1x2代替原动态系统。这里参数0w1表示天气条件的变化范围,w=1表示最好的天气,w=0表示最糟糕的天气。(a)模拟这个离散时间动态系统,取=3。假设不利的天气引起双方武器效率降低75%(w=0.25)。谁将赢得这场战斗,且战斗将进行多长时间?胜利的一方还剩下多少队伍?(b)对w=0.1,0.2,0.5,0.75和0.9各种情况重复上面的分析,且将结果列表。回答(a)中提出的问题。(c)哪一方从不利的天气条件中受益?如果你是蓝军指挥官,你希望红军在晴天还是雨天进攻?(d)检验你在(a),(b)和(c)所得到的结论对蓝军相对于红军的武器优势程度依赖的敏感性。对=1.5,2.0,4.0和5.0重复你在(a)和(b)所做的模拟,将结果列表。重新考虑在你在(c)所做的结论。它们仍然正确吗?问题2.在战争问题中考虑战术对战斗结果的影响红军指挥官考虑选择五个师中的两个师保留到战斗的第二天或第三天再参战。你可以做两个独立的实验去模拟偏离基本情况的每种可能。首先模拟战斗的第一天或前两天,两个蓝军师对抗三个红军师。然后将模拟得到的结果作为下一步战斗的初始条件且对红军增加两个师。(a)运用计算模拟第一阶段的战斗,在这一阶段两个蓝军师对抗三个红军师。假设=2,并将最后力量在两种情形(12或24小时战斗)下列表。(b)用(a)的结果模拟下一阶段的战斗,红军增加两个师,继续模拟。对每种情形指出哪边赢得战斗,赢者还剩多少兵力,战斗进行多长时间(两个阶段战斗共进行多少时间)。(c)红军指挥官可能选择在第一天就投入全部力量,或者保留两个师一天或两天。这三个战术哪个较好?在取得胜利的基础上以损失最少的兵力为最优。(d)对描述蓝军武器优势程度的参数进行敏感性分析。对=1.0,1.5,3.0,5.0和6.0重复(a)和(b),对每个值确定最优战术。叙述你关于红军最优战术的一般结果。问题3.在战争问题中考虑战术核武器对战争的影响。处在绝望情形,蓝军指挥官考虑实施一次战术核武器打击。估计到这样一次打击会杀害或重创70%的红军和35%的蓝军。(a)从初始条件x1=(0.30)5.0,x2=(0