第五章 微處理機系統之電子電路實作
5.2 子路網之實際電路製作
5.2.1 單起訖點對之電路製作
解說:
的解也與理論值有一些差距,究其原因,可能如下:
1. 量化的誤差
如前一小節所述,將前一步驟所計算得出之電阻值轉成數位信號,並將其輸入至 可變電阻值,將會有量化誤差產生,且使用ADC0804 量測電壓時,同樣也有量化 的誤差,因這兩者都是256 階的 IC,以 ADC0804 來說,最大可顯示之電壓為 5V,
共有256 階,所以大約每 0.02V 為一階,故某些電壓值無法顯示是必然的。
2. 元件本身的誤差與演算法的限制
前面已說明過,我們所使用的數位可變電阻,雖然號稱最大值為10KΩ,但其實際 最大值隨著元件的不同,甚至是實驗當時的溫度、溼度等不同,而會有所變化。
如前所述,數位可變電阻的最大值可能從9.5KΩ~10.5KΩ,可將近有1KΩ之差 距,但是,我們在撰寫微處理器內部程式碼時,卻沒有將所有元件的最大電阻值 都考慮進去來計算,而是一律使用最大電阻值為10KΩ計算。最大可能之電阻值的 不同,使得電阻每一階的距離也稍有不同,所以,當我們認為在某次迴圈下,將 要給某電阻值一個數位信號,使之轉換成類比的電阻值時,電阻所實際顯現出來 之電阻值,卻可能與預期該得到之值之不同,這將會對於演算的準確性造成影響,
惟其影響較有限。
5.2.2 兩起點對一訖點之電路實際製作
儘管實際電路擁有許多的誤差,但是其最終結果還算令人滿意,結果的誤差也沒 有很大,所以,我們想要製作更大的電路繼續來驗證電路實驗的可行性,接下來我們 挑選了如圖 5.4 的路網圖,該路網有兩起點、一訖點,各起點至訖點之流量均為 1,
實際製作之電路如圖5.5:
圖5.4 兩起點對一訖點之測試路網 資料來源:本研究整理
D O1 1 O2 1
圖5.5 兩起點對一訖點之電路實作圖 資料來源:本研究整理
本電路中,除了原本的 P89V51RD2、ADC0804、及數位電阻等元件外,另外增 加了74164 這個 8 位元的移位暫存器(架構圖如附錄),其主要用途是將所輸入之串列 資料轉換成為8 位元的並列資料輸出。而原因是因為當微處理器所需要控制的電阻越 來越多時,將會使微處理器本身的腳位不敷使用。以P89V51RD2 為例,總共只有 40 個腳位,而實際能用來作為輸入或輸出之腳位,更是只有32 個,所以我們透過此移 位暫存器,依序的控制數位可變電阻以及類比/數位轉換器(ADC),以達到節省腳位的 目的。而本路網各路段之成本函數可如表5.2 所示,數值計算之解如表 5.3,電路實際 測量所得之解如表5.4:
結果分析
所得之電路實做結果與實際值同樣有一段差距,但是差距並不很大,流量的最佳 解與理論之最佳解之間,大約有5%以內的誤差,此誤差就結果來看,比之前的單 OD 網路誤差要來的更大一些。原先我們認為,前述的量化誤差、元件誤差等等,可能隨
74164
74164
著路網的增大,誤差之間可能相互抵銷,但事實並非如此,後續將會對此議題做更深 入的研究。
表5.2 兩起點對一訖點之路段成本參數 成本函數ta(xa)= p1+ p2xa4
路段a p1 p2
1 0.8 0.50
2 0.6 0.60
3 1.0 0.45
4 1.0 0.40
5 1.2 0.20
6 1.0 0.70
資料來源:本研究整理
表5.3 兩起點對一訖點之理論與實際電路之各路段流量
路徑 理論流量 實際流量
1 0.356 0.368 2 0.644 0.632 3 0.700 0.721 4 0.300 0.279 5 1.057 1.080 6 0.943 0.920
資料來源:本研究整理
5.3 系統電路實際製作
將前一小節的路網繼續擴展,現在希望製作多起訖點之實際路網。根據 3.3 節的 多重起訖點之電路模擬演算法,多起訖點演算法在計算時,是將全路網拆解成多個單 起點對多訖點的子路網,並將所有子路網所得到的流量合併,再經由道路成本的轉 換、搜尋至最適步幅等等的步驟,求得新解。我們所測試的路網圖結構如圖5.7,這 是一個擁有6 節點,以及 8 路段的問題,且各個起訖對之間的流量均為 1:
圖5.6 兩起點對兩訖點之測試路網(各 OD 間流量=1) 資料來源:本研究整理
按照之前的多重起訖點之電路模擬演算法,很快的發現了實際電路上的問題,導 致我們沒有辦法實際的利用8 個可變電阻來代表 8 個路段。由於在演算法中,是將全 路網拆解成多個單起點對多訖點的子路網,那麼,理論上沒有使用到的路段應該不會 有任何電流量的通過,但是實際上這是不可能的。倘若我們一開始就將所有的電阻都 安置在電路板上,那麼,演算法中未使用的路段仍會有電流的通過。以圖5.7 為例,
假設我們所設定的子路網為1-2-5-6-7-8 與 3-4-5-6-7-8,則當我們在為 1-2-5-6-7-8 路網 進行演算時,因為路段3、4 是與其相接的,則勢必會有電流通過路段 3 與 4,使得演 算時所得到的子路網電流狀況,必不能代表當時實際的子路網電流。當然,理論上也 可以將未使用路段電阻設定為無限大,如此一來依據歐姆定律,這些路段的流量就會 變成0,但是實際上我們是沒有辦法將電阻設定為無限大的,在我們的例子中,電阻 值最大僅能設定成10KΩ。。
那麼,又該如何解決在計算子路網流量時,未使用路段卻也有流量通過的情況發 生呢?以圖5.7 為例,在計算流量時,我們會將其拆成 1-2-3-4-5-7 與 1-2-3-4-6-8 兩個 子路網,這兩個子路網的架構為對稱,且與圖5.5 架構類似。事實上,演算法計算時,
我們的確只會用到子路網來求取當時相對應的電流、電壓、電阻等數值,總流量的計 算是在所有子路網流量都求得並相加後,再經由線性搜尋而得,故當我們實際製作路 網時,實際上也只需要接出如圖5.5 的子路網,再經由微處理機的運算就可以了。所 製作出的實際電路如圖 5.6,這和兩訖點對一訖點的實際電路是一樣的。本路網各路 段之成本函數可如表5.4 所示,數值計算與電路實際測量之解如表 5.5:
D1 D2
O1 1 1 O2 1 1
表5.4 兩起點對兩訖點之路段成本參數(各 OD 間流量=1)
圖5.7 兩起點對兩訖點之測試路網(各 OD 間流量=15)
接下來,我們將會更改OD 的流量做測試。根據定義上的公式,當流量開始超過 道路本身的限制流量時,成本將會急劇的上昇,現在我們想研究這會不會對我們流量 的求解有影響。現在我們分別加入各 OD 流量在 20、30、40 時的情形,讓道路的流 量逐漸超過道路容量,成本函數如同前表 5.6,所得之理論解與實際測試解分別如表 5.8、5.9、5.10:
表5.8 兩起點對兩訖點之理論與實際各路段之流量(各 OD 間流量=20)
路段a 理論流量 實際流量 誤差百分比 1 17.807 16.924 -4.96%
2 22.193 23.075 3.97%
3 16.340 17.007 4.08%
4 23.660 22.992 -2.82%
5 17.379 16.987 -2.25%
6 16.768 17.854 6.48%
7 22.621 23.012 1.73%
8 23.232 22.145 -4.68%
目標值 455.096 456.219 0.25%
資料來源:本研究整理
表5.9 兩起點對兩訖點之理論與實際各路段之流量(各 OD 間流量=30)
路段a 理論流量 實際流量 誤差百分比 1 25.951 24.432 -5.85%
2 34.049 35.567 4.46%
3 23.476 24.404 3.95%
4 36.524 35.595 -2.54%
5 25.221 24.496 -2.87%
6 24.206 23.113 -4.52%
7 34.779 35.504 2.08%
8 35.794 36.886 3.05%
目標值 979.529 984.278 0.48%
資料來源:本研究整理
表5.10 兩起點對兩訖點之理論與實際各路段之流量(各 OD 間流量=40)
路段a 理論流量 實際流量 誤差百分比 1 34.414 33.001 -4.11%
2 45.586 46.998 3.10%
3 31.067 30.254 -2.62%
4 48.933 49.745 1.66%
5 33.429 34.025 1.78%
6 32.052 30.658 -4.35%
7 46.571 45.974 -1.28%
8 47.948 49.341 2.91%
目標值 2368.712 2373.124 0.19%
資料來源:本研究整理
由實驗結果發現,各 OD 間流量從 15 慢慢增加到 40,實際流量與理論流量間的 差距大部份都在5%以內,至於目標值之間的差距更是都在 1%以內。除此之外,理論 上本例中,容量較高的路段流量增加的速度較快。以O1D1之起訖點對為例,從O1到 D1其通過路徑可以選擇路段1 與 5 或路段 2 與 7,示意如圖 5.9:
圖5.8 起點 O1至訖點D1之通過路段 資料來源:本研究整理
當起訖點間需求增加時,通過 1、5 路徑的時間成本就會越來越大,因為越來越 接近道路的容量,故流量會轉移到 2、7 路徑,因為該兩路段之容量皆較大。而我們 的實作結果顯示,實作電路確實也符合這樣的現象,實作的結果與理論結果事實上也 相去不遠,而且也有表現出需求增加時,流量會向較高容量路段移轉的性質。
5.5 運算時間之估算
本研究的一中心假設為「量測」比「運算」來的迅速。當我們在求解最短路徑問 題時,隨著節點與路段的增加,其計算時間會呈現一非線性的成長趨勢,但是如果利 用直接以量測方式取得資料,量測時間與路段總數將會呈現一線性關係,這樣的特性 使得在求解大型路網問題上,「量測」的優勢會比「運算」來的明顯,因為量測速度 會比僅以運算要快上許多。
現在我們利用圖4.4 的小型路網驗證此一假設之真實性,我們將會把最短路徑的 Floyd - Warshall 演算法、以及計算全有全無指派之演算法寫入微處理器內,此處,微 處理器的運算速度,將會與實際利用微處理器控制各元件,並取得電流資料的時間做 比較(即 PCA-Sub 的步驟 2 與步驟 3)。Keil C 軟體內有一偵錯(debug)功能,該功能可 以顯示執行程式所需要耗費的時間,該功能界面如圖5.9。結果得知,Floyd - Warshall 演算法的運算時間約為 0.0955 秒,而利用實際控制並量測電流資料,且演算法遞迴 10 次的時間,大約為 0.0575 秒。
比較後發現,在此小型的六路段路網問題中,利用實際控制並量測的方式,比起 最短路徑演算法的運算時間要來的快,又因為最短路徑問題的運算時間,會隨著路段 數增加而呈非線性的大幅增加,故我們可以推知,在大型路網問題的求解上,實際的 電路控制與量測必定比最短路徑運算要快速許多。
圖5.9 Keil C 軟體偵錯介面圖 資料來源:本研究整理
第六章 結論與建議
本研究係以一實際電路求解交通指派之問題,而交通指派問題在運輸規劃的領域 中是充滿挑戰性的一門學問,其最重要的特性就是使用者均衡的概念。在指派問題 中,最常用的是 Frank-Wolfe 演算法,該法大部分時間都在解決最短路徑問題,故路 網增大後效率較為不彰。
先前有文獻指出,交通路網的特性與電子電路有相同之處,Cho et al.使用非線性 的二極體元件模擬非線性之道路成本函數,但其限制較多,如要應用在實作上比較困 難,而Huang et al. (2007)使用了較為單純的純線性元件-電阻,來做理論之推導,成 效較好,也讓電路變得較為實際可行。本研究即以Huang & Cheng 之文獻為出發點,
探討實作之可行性並實際製作出電路。理論上以「量測」電流代替「計算」車流的方
探討實作之可行性並實際製作出電路。理論上以「量測」電流代替「計算」車流的方