常春 張舒
【摘要】本文主要闡述了如何利用計算機模擬來解決數(shù)學建模中的實際問題.首先,提出問題,根據(jù)問題的具體模式對其進行分析整理.其次,對上述問題進行數(shù)學建模.然后,利用計算機進行模擬,主要分為隨機模擬(蒙特—卡洛方法)、離散系統(tǒng)模擬和連續(xù)系統(tǒng)模擬三種類型.最后對結果進行分析,說明計算機模擬方法在數(shù)學建模中的有效性.
【關鍵詞】計算機模擬;數(shù)學建模;隨機模擬;離散系統(tǒng)
【中圖分類號】O242【文獻標識碼】A
一、引言
模型(Model)和模型建構(Modeling)不僅僅是科學理論體系中的重要內(nèi)容,也是我們認識世界的重要工具和方法.計算機技術的飛速發(fā)展給許多學科帶來了巨大的影響,計算機使問題的求解變得更加簡單方便,同時,也使解決問題的領域變得更加寬泛.計算機適合解決不確定、規(guī)模大且難以解析化的數(shù)學模型.例如,對于一些帶隨機因素的復雜系統(tǒng)的問題,建模之前常需要做一些簡化假設,這可能導致與實際情況相距甚遠,解答無法應用.此時,利用計算機進行模擬幾乎成為了唯一的選擇.在歷屆全國和國際大學生數(shù)學建模比賽(MCM/ICM)中,計算機模擬常用于去求解、檢驗,是建模過程中非常重要的一種方法[1].
一般地,計算機模擬在以下幾種情況中能有效解決問題:
(1)難以在實際環(huán)境中進行實驗和觀察,只能用計算機模擬,比如太空飛行的研究;
(2)需要在短時間內(nèi)觀察到系統(tǒng)發(fā)展的全過程,用來估計某些參數(shù)對系統(tǒng)變化的影響;
(3)需要對系統(tǒng)進行長時間觀察、運行比較,從大量方案中尋求最優(yōu)方案;
(4)難以用解析式表示的系統(tǒng);
(5)雖然有解析式,但是分析、計算過程過于復雜,只能借助計算機模擬來提供簡單可行的方法.
在通常情況下,計算機模擬是按時間來劃分的,因為計算機模擬實質(zhì)上是系統(tǒng)隨時間變化而變化的動態(tài)寫照.目前,計算機模擬大致可以分為隨機模擬(蒙特—卡洛方法)、離散系統(tǒng)模擬和連續(xù)系統(tǒng)模擬三類.其中,蒙特—卡洛(MontoCarlo)方法是典型的靜態(tài)模擬;離散系統(tǒng)模擬和連續(xù)系統(tǒng)模擬是屬于動態(tài)模擬.下面將就具體問題討論這三種數(shù)學建模競賽中經(jīng)常用到的模擬方法.
二、問題的定義與分類
數(shù)學建模的第一步,就是提出問題,對具體問題進行分析、整理與歸類.
1.問題的定義
問題是指不能直接利用已有知識處理,但是可以間接用已有知識處理的情境[2].
2.問題的分類
根據(jù)計算機模擬的種類,問題主要可以分為以下三種模式:非線性規(guī)劃問題、離散系統(tǒng)問題和連續(xù)系統(tǒng)問題三種類型.下面舉例說明一下這三種不同類型的問題.
(1)非線性規(guī)劃(nonlinearprogramming)問題
非線性規(guī)劃是具有非線性約束條件或目標函數(shù)的數(shù)學規(guī)劃,研究一個n元實函數(shù)在一組等式或不等式的約束條件下的極值問題,且目標函數(shù)和約束條件至少有一個是未知量的非線性函數(shù).
例1非線性規(guī)劃問題
minf(x)x∈En.s.t.gi(x)≥0i=1,2,…,m.aj≤xj≤bjj=1,2,…,n.
(2)離散系統(tǒng)(discretesystem)問題
離散系統(tǒng)是指系統(tǒng)狀態(tài)只在有限的時間點或可數(shù)的時間點上有隨機事件發(fā)生的系統(tǒng).
例如排隊系統(tǒng),顯然,狀態(tài)量的變化只是在離散的隨機事件點上完成.假設離散系統(tǒng)狀態(tài)的變化是在一個時間點上瞬間完成的.
例2離散系統(tǒng)問題:庫存問題
在銷售部門、工廠等領域中都存在庫存問題,庫存太多造成浪費以及資金積壓,庫存太少不能滿足需求也會造成損失.部門的工作人員需決定何時進貨,進多少,使得所花費的平均費用最少,而收益最大,這就是庫存問題.
某企業(yè)當天生產(chǎn)的產(chǎn)品必須售出,否則就會變質(zhì).該產(chǎn)品單位成本為2.5元,單位產(chǎn)品售價為5元.企業(yè)為避免存貨過多而造成損失,擬從以下2種庫存方案中選出一個較優(yōu)的方案:
方案甲:按前1天的銷售量作為當天的庫存量;
方案乙:按前2天的平均銷售量作為當天的庫存量.
(3)連續(xù)系統(tǒng)(continuoussystem)問題
連續(xù)系統(tǒng)是指時間和各個組成部分的變量都具有連續(xù)變化形式的系統(tǒng).例如自動控制系統(tǒng),只有當受控過程和控制方式同時為連續(xù)時的系統(tǒng)才稱為連續(xù)控制系統(tǒng).
例3連續(xù)系統(tǒng)問題:追逐問題
追逐問題如圖,正方形ABCD的四個頂點各有一人.在某一時刻,四人同時出發(fā)以勻速v=1m/s按順時針方向追逐下一人,如果他們始終保持對準目標,則最終按螺旋狀曲線交匯于中心點O.試求出這種情況下每個人的行進軌跡.
三、模型的建立與計算機模擬
1.隨機模擬(蒙特—卡洛方法)
(1)蒙特—卡洛(MontoCarlo)方法簡介
蒙特—卡洛(MontoCarlo)方法(或稱隨機模擬法),是計算機模擬的基礎,源于1977年法國科學家蒲豐提出的一種計算圓周率π的方法—隨機投針法,即著名的蒲豐投針問題[3].蒙特—卡洛方法的基本思想,是建立一個概率模型,使所求問題的解正好是該模型的參數(shù)或其他有關的特征量.然后,通過模擬多次隨機抽樣實驗,統(tǒng)計出某事件發(fā)生的百分比.只要實驗次數(shù)n很大,該百分比便近似于事件發(fā)生的概率.蒙特—卡洛方法屬于試驗數(shù)學的一個分支.
(2)模型建立
例1中,對于非線性規(guī)劃問題
minf(x),x∈En.
s.t.gi(x)≥0(i=1,2,…,m).
aj≤xj≤bj(j=1,2,…,n).
用蒙特—卡洛方法求解的基本思想是,在估計的區(qū)域{(x1,x2,……,xn)|xj∈[aj,bj],j=1,2,……,n}.
內(nèi)隨機取若干個試驗點,然后從試驗點中找出可行點,再從可行點中選擇最小點.
假設試驗點的第j個分量xj服從[aj,bj]內(nèi)的均勻分布.
符號假設
P:試驗點總數(shù);maxP:最大試驗點總數(shù);
K:可行點總數(shù);maxK:最大可行點數(shù);
X:迭代產(chǎn)生的最優(yōu)點;
Q:迭代產(chǎn)生的最小值f(X),其初始值為計算機所能表示的最大數(shù).
2.離散系統(tǒng)模擬
離散系統(tǒng)模擬是指對離散系統(tǒng),即系統(tǒng)狀態(tài)只在有限的時間點或可數(shù)的時間點上有隨機事件發(fā)生的系統(tǒng)進行模擬.例如排隊系統(tǒng).本文例2中討論某企業(yè)生產(chǎn)的庫存系統(tǒng)的計算機模擬方法,這是排隊系統(tǒng)的一個典型例子.下面對例2中的問題進行分析模擬:
(1)模型建立
假定市場對該產(chǎn)品的每天需求量是一個隨機變量,并且從以往的統(tǒng)計分析得知它服從正態(tài)分布:N(135,22.4).
計算機模擬的思路如下:
一、獲得市場對該產(chǎn)品需求量的數(shù)據(jù);
二、計算出按照2種不同方案,經(jīng)T天后企業(yè)所得的利潤值;
三、比較大小,并從中選出一個更優(yōu)的方案.
引入下列記號:
D:每天需求量;
Q1:方案甲當天的庫存量;
Q2:方案甲當天的庫存量;
S1:方案甲前1天的銷售量;
S21:方案乙前1天的銷售量;
S22:方案乙前2天的銷售量;
S3:方案甲當天實際銷售量;
S4:方案乙當天實際銷售量;
L1:方案甲當天的利潤;
L2:方案乙當天的利潤;
TL1:方案甲累計總利潤;
TL2:方案甲累計總利潤;
T:預定模擬天數(shù).
(2)模型的求解
利用Matlab編程來實現(xiàn)這一過程,這需要建立如下的M-文件:
function[TL1,TL2]=kucun(T,S1,S21,S22)
TL1=0;TL2=0;k=1;
whilek Q1=S1;Q2=(S21+S22)/2; D=normrnd(135,22.4); ifD S3=Q1; else S3=D; end ifD S4=Q2; else S4=D; end L1=5*S3-2.5*Q1;L2=5*S4-2.5*Q2; TL1=TL1+L1;TL2=TL2+L2; k=k+1; end S1=S3;S22=S21;S21=S4; 給出一個初值,反復運行上述程序,通過比較最后可得出每一個方案的優(yōu)劣.計算機模擬在排隊系統(tǒng)中其他方面如加工制造系統(tǒng)、訂票系統(tǒng)、計算機系統(tǒng)、交通控制系統(tǒng)等,都有廣泛的應用. 3.連續(xù)系統(tǒng)模擬 對連續(xù)系統(tǒng)的模擬,實際上是將連續(xù)狀態(tài)變量在時間上進行離散化處理,并由此模擬系統(tǒng)的運行狀態(tài).下面對例3中的問題進行分析模擬: (1)模型建立 a.建平面直角坐標系A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4). b.取時間間隔為Δt,計算每一點在各個時刻的坐標. 設某點在t時刻的坐標為(xi,yi),則在t+Δt時刻的坐標為(xi+vΔtcosα,yi+vΔtsinα), 其中cosα=xi+1-xid,sinα=yi+1-yid, d=(xi+1-xi)2+(yi+1-yi)2. c.取足夠小的ε,當d<ε時結束算法. d.連接每一個點在各個時刻的位置,即得所求運動軌跡(如圖2). (2)模型的求解 利用Matlab編程來實現(xiàn)這一過程,這需要建立如下的M-文件: v=1;dt=0.05;x=[001010];x=[010100];fori=1:4plot(x(i),y(i),'.'),holdonendd=20;while(d>0.1)x(5)=x(1);y(5)=y(1);fori=1:4d=sqrt((x(i+1)-x(i))^2+(y(i+1)-y(i))^2);x(i)=x(i)+v*dt*(x(i+1)-x(i))/d;y(i)=y(i)+v*dt*(y(i+1)-y(i))/d;plot(x(i),y(i),'.'),holdonendend 四、結果分析 對以上各個例子中的結果進行分析,發(fā)現(xiàn)計算機模擬的結果能更加真實的表現(xiàn)系統(tǒng)實際的動態(tài)變換過程.事實上,還有很多實際問題都可以用計算機模擬來解決,如背包問題、安排比賽選手的比賽日程、三國時期的“華容道”問題等等都可以用計算機模擬來解決. 總之,使用計算機模擬來進行數(shù)學建模,可以使求解更加快捷、方便和精確,另外,也使得解決問題的領域擴大,從離散、連續(xù)確定性領域延伸到隨機的非確定性領域,計算機模擬正是處理此類問題的重要方法. 【參考文獻】 [1]謝國瑞,郝志峰,汪國祥.概率論與數(shù)理統(tǒng)計[M].北京:高等教育出版社,2012. [2]王沫然.Matlab7.0與科學計算[M].北京:電子工業(yè)出版社,2011. [3]趙靜,但琦,嚴尚安,等.數(shù)學建模與數(shù)學實驗[M].北京:高等教育出版社,2010.