章節試閱
3-9 徵兵梯次序列
歷史記載與戰爭相關小說故事中,不乏英雄勇敢人士,或者在政客口中為了維護國家尊嚴或世界正義,人人應該爭相從軍,報效國家、保護家園。但是現實人生中,除了天生熱血者外,可能沒有太多的熱情青年響應野心人士的呼喊鼓吹。然而人類還是具有動物的本能,為了生存或貪婪,爭端根本不可避免。
一個國家平時為了保護國土完整與人民福祉,當然需要建立軍隊。有錢的國家也許會僱用傭兵或採用募兵以維持戰力。處於戰爭狀態或戰爭邊緣的國家,則可能沒有足夠資源僱人打仗,就只能採用徵兵制度了。
徵兵方式要怎麼進行才能符合公平正義與國家利益呢?戰爭開始時,發動攻擊的一方也許準備得比較完整,但若因初期的勝利與甜頭而一味地擴大戰線強力徵兵,防守一方必定也會及時完成動員,或可能獲得他國支援。如果戰事沒有停止的跡象,雙方必要繼續增加兵員時,如果採用以生日為基礎的徵兵制度,讓不同年分但同天生日的青年同天入伍,也許可以避免戰況冗長或激烈而造成年齡斷層的問題。
譬如某一國家擁有數十萬潛在兵源,又平均分配在每一年齡層,如果從十個年齡層中總共需要增加十萬士兵,則每一個年齡層中必須抽取一萬名。橫跨十年,以一年365 天來說,同天生日的人數大約330 人。如此隨機抽取30 個日子,十個年齡層中在這些天生日的公民可以組成大約十萬兵員。模擬被選取的生日序列,只要使用試算表Excel 函數,生成一系列介於1 至365 的均等分布隨機數值,再將不重複的前30 個數字轉換為月與日就完成了。底下為去除一個重複數字274 得到的序列:
230, 148, 303, 239, 43, 39, 300, 356, 89, 159, 5, 308, 136, 50, 62
178, 264, 214, 153, 338, 45, 305, 15, 274, 177, 179, 128, 208, 252, 159
若沒有考慮閏年,上述隨機數字轉換至日期依序為8 月18 日、5 月28 日、10 月30 日……。這個生日序列對一般平民百姓可能沒有太大的意義,因為他們沒有選擇餘地,抽到了就是得去當兵。但是對於國家決策者來說,就不得不依據軍事訓練的目的、設施或教官等條件,訂定徵兵的梯次與間隔時間以滿足兵源需求。
上述徵兵機制,它讓同一生日並符合徵兵條件者各自構成一個抽樣單位(Sampling Unit),然後以簡單隨機抽樣設計抽取必要數量的樣本,集合選取的抽樣單位之所有公民構成此次徵招作業的總人數。考慮閏年或其他問題,若將十個年齡層的每一天或每一公民各自當成一個抽樣單位,是否比較符合公平與效率原則?
模擬抽籤先後順序與中籤機率
越早抽籤者中獎機率越高嗎?假設四張籤條只有其中一張為成功hit,其餘三張為失敗miss。第一位抽籤獲得hit 的機率等於1/4,第二位獲得hit 的前提是第一位miss,依此類推得知所有參與者獲得hit 的機率都是相等相同。底下是使用Excel 函數RAND() 的模擬過程:
IF (RAND() < 1/4) THEN 第一位抽籤者hit
ELSE IF (RAND() ə/3) THEN 第二位抽籤者hit
ELSE IF (RAND() ə/2) THEN 第三位抽籤者hit
ELSE 第四位抽籤者hit
END IF
註: 實際模擬30 次,不同抽籤順序分別獲得hit 的平均次數依次為7, 6, 8, 9。巢狀選擇陳述,為了篇幅,THEN 之後的陳述沒有單獨列行。
徵兵梯次的隨機現象
由於任何數學方法生成的亂數序列都可以被事先運算,因此例如徵兵梯次抽籤活動必須使用機械式器具,若是沒有人為操作,抽中的編號或日子,是一個抽籤活動產生的隨機現象。
數個產生徵兵梯次的方式
• 將所有符合徵兵條件的公民各自成為一個抽樣單位,應用簡單隨機抽樣設計(Simple Sampling Design),抽取每一梯次必要兵員人數。如此任何一人被抽取的機率符合相等相同原則,但抽取效率很低且可能產生年齡層分配不均的現象。
• 以生日為抽樣單位容易進行也較有效率,就算考慮閏年,只要每年各自分別抽樣,任一個日子被抽取的機率還是近似相等,這個方式符合分團抽樣(Clustering Sampling) 的精神。然而不同年齡層以及不同日子的人數務必相近,否則總徵兵人數可能太多或不足。
• 如果預先依據行政區與年齡層劃分類別,然後在每一類別使用簡單隨機抽樣設計抽出等於各類別符合條件人數與總徵兵數比例的人數,這是分層抽樣設計(Stratified Sampling Design) 的應用,也許是平衡效率與公平原則的折衷方式。
• 假設需要補充兵員的部隊單位與空缺人數已知,又完成訓練合格的兵員等同所有缺額人數,行政單位可以製作等同需求人數的部隊編號的籤條,讓每位戰士自己抽取必須前往報到的單位。
3-9 徵兵梯次序列
歷史記載與戰爭相關小說故事中,不乏英雄勇敢人士,或者在政客口中為了維護國家尊嚴或世界正義,人人應該爭相從軍,報效國家、保護家園。但是現實人生中,除了天生熱血者外,可能沒有太多的熱情青年響應野心人士的呼喊鼓吹。然而人類還是具有動物的本能,為了生存或貪婪,爭端根本不可避免。
一個國家平時為了保護國土完整與人民福祉,當然需要建立軍隊。有錢的國家也許會僱用傭兵或採用募兵以維持戰力。處於戰爭狀態或戰爭邊緣的國家,則可能沒有足夠資源僱人打仗,就只能採用徵兵制度了。
徵兵方式要怎麼進行...
作者序
作者自序:模擬方法—另類解答複雜問題的利器
通常人們面對大大小小的問題都會想盡辦法求解,如果本身能力不足就去請教他人,當可取得的人事物資源也未能提供可接受的答案,那就只好擱置,不再去煩心。人們從出生就開始面對許多問題,當肚子餓了、尿布溼了或恐懼不安,卻沒有能力自己解決問題,只能用哭來求助,如果不巧沒有得到回應,又假設並沒有生病,哭累後便睡著了,就等待醒來再想辦法吧。好慘的場景!只有等到稍微長大,才會開始模仿家人的言行、學習站立走路、開口要求協助。如此從模仿慢慢累積生活需求的知識,進而能夠發掘問題,以及發展有效解決問題的能力。
模仿基本上只是一種場景複製過程,當單純模仿不足以解決問題時,人們可能會逐漸在腦海中形成描述問題或系統情境的心理模式,學者們也許會更進一步使用數學式子表示組成系統的重要物件各自與相互運作的行為,形成的系統代表物就是一個抽象模式。如此建立藉以代表問題本質的模式,並據以進行推演或模仿種種場景變化的過程,就是模式模擬。
當問題情境或組成系統物件的屬性包含不可事先預測、不確定性或變異性,專家們將這些物件的屬性項目名稱簡稱為隨機變數,而驅動隨機變數發生變化的事端稱為事件,事件的記錄或事實就是隨機變數的出象,簡稱為隨機現象。由於沒有人能夠正確知曉未來事件的演進過程與結果,因此才有「人算不如天算」或「天有不測風雲」等俗語。不過我們也不必完全靠天吃飯,例如結合大氣變化理論與資訊科技運算能力,天氣預報結果已經不是常見的笑梗,又如觀察投擲一顆公正或不公正20 面體骰子的活動,熟悉機率統計方法的人士也能計算或估計投擲這顆骰子不同出象發生的機率,只是仍然不能預知會出現哪一個出象。
當組成系統的物件包含隨機現象,使用模擬方法解答問題可能就是最佳的選擇,因為面對包含隨機因子的系統,我們可以應用理論尋找合適的機率分布函數,進而模仿隨機事件的出象。結合一個忠實描述系統運作邏輯或真實情境過程的抽象模式,以及資訊科技的高速計算與大量儲存資料等能力,模擬各種假想場景可能的隨機演化,再利用統計方法彙整輸出數據以形成能夠輔助決策的資訊,這個機制就稱為系統模式模擬或電腦模擬。
到廟裡祈求神明指示的人們,也許不在乎手上的筊杯是否公正,或某一面出現的機率吧!但從求知的角度我們可以一枚一枚地測定,只要將一枚筊杯投擲很多次,就能計算任何一面出現的經驗機率,然後依據統計理論尋找適合代表擲筊出象的隨機變數。同理,收集系統隨機因子出象的記錄,發展對應的機率分布函數,就能模仿隨機因子生成隨機出象。應用理論分布函數生成隨機數值的解題模式,常被稱為蒙地卡羅方法。有趣的是除了包含隨機因子的系統,這個方法也可以處理沒有包含隨機因子,例如函數積分等數學問題。
如果已知一個函數的反函數,這個函數積分只是一個容易求解的數學問題,如果反函數太複雜或不存在,除了數值方法,模擬方法也可以派上用場。首先隨機產生積分範圍數值軸上的一個位置,計算這個點的函數反應值,重複執行這個試驗許多次,可以獲得一組函數反應值的平均值。讓函數積分範圍類比於一個理論矩形的底,平均函數反應值就是這個矩形高度的一個估計值,如此利用機率分布生成隨機數值,可以獲得函數積分的一個估計值。雖然這個方法也許沒有效率,但是可能提供思考解答某些問題的一個方向。
以第一階微分式子表示單位時間物件移動的距離,是大家熟知的速度定義。同此我們可以使用第一階微分式子表示某一族群隨著時間的消長,以及第二階微分式子表示族群演變的速度隨著時間的變化。假設學者專家能夠發展一組混合代數與微分方程的數學式子,代表一個多種生物族群、抽象或實體物件互動的生態系統的抽象模式,應用已知求解聯立微分方程式的方法,我們就能模擬組成這個生態系統的物件或族群隨著時空的消長過程。
用來敘述系統狀態的資料項目名稱,簡稱為系統變數,當系統變數隨著時間不斷演變者,稱為連續系統。不同於連續系統,當系統變數僅僅在出現於某些事件時才會變化者,就稱為離散系統。考慮一個只有一位工作人員的簡易客戶服務櫃檯,假設顧客隨機到達,如果服務者空閒,就立即處理顧客需求,反之,顧客則需加入櫃檯前的等待隊伍;完成服務的顧客便立即離開系統,然後工作人員再從等待群眾中選取下一個服務對象;如果沒有等待服務的顧客,服務人員就處於空閒狀態。假設進行這個客服系統的計畫,就是為了了解服務人員的忙碌狀態、估計顧客等待時間與等待線長度等,那麼研究必要關切的只有到達與離開這兩個事件。同此,某些類似或較為複雜情境的離散系統,可能包括一或一連串成對的到達與離開事件,而這些事件發生的當下,系統狀態才有異動。
因為只有在改變系統狀態的事件發生,描述系統狀態的變數,以及彙整等待線人數與累積完成服務顧客人數等研究關切的統計變數,才有必要更新。因此表示一個離散系統,直覺的方式是在假想時間軸依據事件發生的先後次序進行模擬,依此建立的模式稱為事件導向模式。由於事件導向模式同於電腦運作邏輯,都是因循時間先後次序進行,因此轉換事件導向模式成為可在資訊平台執行的電腦軟體,是一件相當結構化的工作。
離散系統不但是工商企業,也是政府行政常見的活動,譬如規劃交通號誌變化、集會場所疏散動線、物流中心鋪貨、設備維修派遣、商品製造流程、機場飛機起降時程、海港船艦進出作業等等,都是模擬方法的主流應用。因為物件處於等待狀態的延時長短,反映了是否形成瓶頸或工作流能否順暢的關鍵因素,所以研究這些系統的技術與方法就被歸類為等待線理論。
將事件導向模式轉換成為電腦程式的能力,可能不是大多數模擬使用者的強項,更由於應用廣泛,因此自從1960 年代隨著電腦普及程度大大增加,就有許多模擬語言陸續開發上市。其中大多數模擬軟體,使用過程導向方式的概念,建立代表系統的模式。發展過程導向模式的方式不同於依據時間軸的事件導向方式,它是聚焦於在系統流動的物件或稱為個體,歷經不同活動的過程。
使用市售過程導向模擬軟體非常便利,只要在電腦螢幕安置軟體預設的圖案表示個體、等待線、伺服器與個體流動路徑,並在預設的表格填入個體到達系統的時間隨機函數、伺服器處理時間的分布函數,以及活動流向的條件與目的地,輸入模擬次數、時鐘單位與期間等,就能輕易地執行模擬並獲得輸出數據。有些模擬語言更是同時考慮連續與離散模式,且有生動展示各項過程的動畫,使得模擬方法成為易用實用解決問題的利器。
過程導向方式表示離散系統的方式,比較類似人們直覺式或是一種高階抽象化的思考方式,雖然方便表示系統運作流程,使用者也許能夠輕鬆完成模擬研究,但是許多上市模擬軟體的內建功能未必可以滿足某些模擬計畫的需求,因此進階使用者還是需要具備建立事件導向模式與設計電腦程式的能力。
模擬結果是否有用,取決於模式是否忠實代表系統運作行為、電腦程式是否正確沒有瑕疵、各項變數的理論分布函數是否符合實際條件,以及是否應用機率統計理論分析與彙整輸出資料。又由於一次模擬的輸出相當於記錄隨機現象的一個例子,不該當成事實真相,因此必須執行多次模擬以求得研究關切的系統參數的估計值,才是符合科學精神的研究。
完整模擬計畫需要許多不同領域的成員,包括分析系統運作邏輯、設計模擬模式、撰寫程式、操作電腦軟體以及機率統計等專業人士,唯有具備這些條件的團隊才能發揮模擬技術的功能,也才能產生輔助決策的有效資訊。
誌謝
感謝發行者五南圖書出版公司、副總編輯張毓芬小姐多年來的支持與鼓勵,以及責任編輯、文字校對、美工設計、封面設計,衷心感謝各位在編輯本書過程的辛勞與付出。
作者自序:模擬方法—另類解答複雜問題的利器
通常人們面對大大小小的問題都會想盡辦法求解,如果本身能力不足就去請教他人,當可取得的人事物資源也未能提供可接受的答案,那就只好擱置,不再去煩心。人們從出生就開始面對許多問題,當肚子餓了、尿布溼了或恐懼不安,卻沒有能力自己解決問題,只能用哭來求助,如果不巧沒有得到回應,又假設並沒有生病,哭累後便睡著了,就等待醒來再想辦法吧。好慘的場景!只有等到稍微長大,才會開始模仿家人的言行、學習站立走路、開口要求協助。如此從模仿慢慢累積生活需求的知識,進而能夠發掘問...
目錄
作者自序 模擬方法—另類解答複雜問題的利器
Chapter 1 模擬方法概述
1-1 預測鰻魚價格起伏
1-2 摘要
1-3 機率、統計與模擬
1-4 日常的模擬場景
1-5 模擬與決策
1-6 模擬方法使用時機
1-7 建立模式的緣由與原則
1-8 表示模式運作的演算法
1-9 表示演算法的流程圖
1-10 表示演算法的虛擬碼
1-11 陳述的字彙與格式
1-12 模擬計畫流程
1-13 模式輸入與模擬輸出
1-14 十字路口車流模式演算法
1-15 模擬計畫的驗證與信譽
Chapter 2 模擬模式
2-1 還要多久才能到達景點?
2-2 摘要
2-3 打造模式過程
2-4 系統分析
2-5 系統分割
2-6 逐步抽象化
2-7 模式種類
2-8 抽象模式
2-9 蒙地卡羅模式
2-10 離散模式
2-11 連續模式
2-12 離散模式分類
2-13 過程導向模式
2-14 事件導向模式演算法
2-15 活動導向模式模擬
Chapter 3 蒙地卡羅方法
3-1 預測一生過程的流年
3-2 摘要
3-3 亂數產生器
3-4 全週期亂數產生器
3-5 均值與均等分布
3-6 隨機變數與機率函數
3-7 常見理論機率函數
3-8 彩券中獎號碼
3-9 徵兵梯次序列
3-10 失智老人在哪裡?
3-11 隨機漫步
3-12 賭徒之夜
3-13 紙牌21 點牌局
3-14 兩軍對抗鹿死誰手
3-15 進階兩軍對抗(1)
3-16 進階兩軍對抗(2)
3-17 進階兩軍對抗(3)
3-18 積分模擬方法
3-19 估計圓周率
3-20 顧客入店人數與時間
3-21 檢視水果次數
3-22 紅豆餅賣出數量與時間
3-23 何時才能打烊?
Chapter 4 連續系統模式
4-1 數位化物件屬性
4-2 摘要
4-3 族群成長模式
4-4 離散化連續系統
4-5 泰勒方法
4-6 郎吉卡達法
4-7 獵食者與獵物模式
4-8 悉德泊湖模式
4-9 高階微分方程式
4-10 模擬誤差來源
Chapter 5 ProModel 模擬軟體
5-1 上市軟體公信力
5-2 摘要
5-3 模擬軟體需求
5-4 模擬軟體演進
5-5 學生版本
5-6 建模基本元件
5-7 元件屬性編輯表
5-8 校園美髮師模擬模式
5-9 建構完整模擬模式
5-10 輸出檢視器
5-11 圖表顯示區
Chapter 6 過程導向模式
6-1 沒有重來的旅程
6-2 摘要
6-3 個體流動過程
6-4 模擬佇列系統
6-5 模式分類原則
6-6 單一個體模式
6-7 多重個體模式
6-8 停車場營運模式
6-9 投票動線規劃
6-10 檢查維修模式
6-11 資源共享模式
6-12 安全庫存模式
6-13 備用零件模式
Chapter 7 事件導向模式
7-1 認真敬業的予希
7-2 摘要
7-3 在時間軸上的事件
7-4 紙筆離散模式模擬
7-5 模組化事件導向模式
7-6 平行伺服器模式
7-7 序列伺服器模式
7-8 產品檢修模式
7-9 安全庫存模式
7-10 備用零件模式
7-11 共享資源模式
7-12 多重等待線模式
Chapter 8 選擇輸入機率分布
8-1 垃圾進垃圾出
8-2 摘要
8-3 滿足模式輸入需求
8-4 收集資料
8-5 彙整與呈現樣本特徵
8-6 檢視樣本隨機性質
8-7 辨識理論分布
8-8 模仿隨機因子的出象
8-9 個體到達時間
8-10 伺服器使用時間
Chapter 9 模擬輸出分析
9-1 不符邏輯的推論
9-2 摘要
9-3 ProModel 輸出模組
9-4 解釋輸出的話題
9-5 輸出統計推論
9-6 平均數點估計
9-7 平均數區間估計
9-8 美髮店是否人手不足?
9-9 比較兩平均數
9-10 比較兩佇列模式
9-11 序列活動的瓶頸
作者自序 模擬方法—另類解答複雜問題的利器
Chapter 1 模擬方法概述
1-1 預測鰻魚價格起伏
1-2 摘要
1-3 機率、統計與模擬
1-4 日常的模擬場景
1-5 模擬與決策
1-6 模擬方法使用時機
1-7 建立模式的緣由與原則
1-8 表示模式運作的演算法
1-9 表示演算法的流程圖
1-10 表示演算法的虛擬碼
1-11 陳述的字彙與格式
1-12 模擬計畫流程
1-13 模式輸入與模擬輸出
1-14 十字路口車流模式演算法
1-15 模擬計畫的驗證與信譽
Chapter 2 模擬模式
2-1 還要多久才能到達景點?
2-2 摘要
2-3 打造模式過程
2-4 系統分析
2-...