決策支持系統作業_第1頁
決策支持系統作業_第2頁
決策支持系統作業_第3頁
決策支持系統作業_第4頁
決策支持系統作業_第5頁
已閱讀5頁,還剩23頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上精選優質文檔-傾情為你奉上專心-專注-專業專心-專注-專業精選優質文檔-傾情為你奉上專心-專注-專業決策支持系統導論期末作業 姓名: 學號:1、設某企業生產多種最終產品Y=(yi),各種產品的單價為Pi,它們的投入產出直接消耗系數為A=(aij),企業的資源(煤、電力、勞力)的約束方程為BXh(“”表示),其中,B=(bij)是資源消耗系數矩陣,X=(xi)是企業總產品向量,h是資源約束向量。為使企業凈產值最大,其目標方程S=maxPiyi,試安排生產計劃(求總產品X和最終產品Y)。請設計該企業的生產計劃決策支持系統,畫出DSS運行結構圖,并對總控程序、模型程序、數據

2、庫進行結構和功能說明。提示:該決策支持系統需要利用3個模型(投入產出模型、線性規劃模型和報表模型(打印投入產出表)和兩個數據庫(投入產出數據庫和線性規劃數據庫)。在DSS總控程序中要詳細說明何時調用哪個模型運行,何時存取哪個數據庫中的數據,何時進行數據計算。該DSS需要兩次調用投入產出模型:一次計算中間結果,一次計算最后結果。請注意,模型程序應該是一個標準程序,在一定的參數控制下,可得到中間結果,也可得到最終結果。該模型程序既適合于該問題的DSS,也適合于其他問題的DSS,不能是一個專用的模型程序。(20分)模型投入產出模型投入:經濟部門在進行經濟活動時候的資源消耗;產出:經濟部門在進行經濟活

3、動時候的成果;投入產出模型表示的是各個經濟部門之間的投入產出關系。根據公式可求得中間結果值X與最終產品值Y之間的關系:X=(I-A)-1Y2.線性規劃模型:根據約束方程BXh與目標方程S=Piyimax,輸入參數為B、P、h,運用模型中的數學公式求解問題,最后輸出Y即為最終結果。報表模型調用投入產出數據庫中的數據,根據投入產出模型的分析結果,得到投入產出表,并將其打印出來。不需要輸入參數,可以手動調用,也可以用時間來觸發,生成表格。數據庫投入產出數據庫 首先對數據進行初始化,存入投入產出相關的數據,包括最終產品Y=(yj),各種產品的單價Pi,它們的投入產出直接消耗系數A=(aij),企業總產

4、品向量X=(xi)等用于投入產出表計算的重要數據,方便模型對數據的提取。數據庫本身可以對數據進行維護,如自動初始化,自動更新等操作。字段名數據類型長度是否可為空最終產品int8是int8是int8是int8是int8是產品單價float16是float16是float16是float16是float16是直接消耗系數float16是float16是float16是float16是float16是線性規劃數據庫 對數據進行初始化,存儲的數據包括最終產品Y=(yj),各種產品的單價為Pi,資源消耗系數矩陣B=(bij),企業總產品向量X=(xi)企業的資源(煤、電力、勞力)的約束方程為BXh(“”

5、表示)目標方程S=Piyi 等線性規劃是需要的數據。字段名數據類型長度是否可為空資源消耗系數float8是float8是float8是float8是float8是總產品int16是int16是int16是int16是int16是資源約束hfloat16是最終產品int8是int8是int8是int8是int8是產品單價float16是float16是float16是float16是float16是三、總控程序(1)根據系統提示選擇需要的服務,輸入提示要求的相關數據,保存到數據庫中。(2)調用投入產出模型,提取投入產出數據庫中A、Y 作為模型的輸入參數。調用模型內部的公式解決問題,根據輸入參數判

6、斷需要輸出的是中間結果還是最終結果,將結果輸并存入投入產出數據庫中。(3)調用線性模型,提取線性規劃數據庫中的數據作為輸入參數,根據模型內部公式進行數據計算,既要符合約束條件,又要使得目標函數值最大,最終得出Y 向量,將結果輸出并存入投入產出數據庫。(4)調用投入產出模型,提取投入產出數據庫中的A、Y 作為輸入參數。調用模型內部公式計算出需要的結果X,根據輸入參數判斷需要的輸出結果,輸出結果,并存入投入產出數據庫。(5)調用報表模型,提取投入產出數據庫中的數據,得出投入產出表并打印。四、運行結構圖 教材中3.6節物資分配與調撥決策支持系統,詳細給出模型庫設計,包括主要模型、存儲形式說明,數據庫

7、設計,各接口說明(各模塊之間的調用順序、數據存取關系)。(30分)一、分析問題物資分配調撥問題是根據各單位提出對物資的需求申請,按倉庫的庫存情況制定分配方案,再根據分配放案以及倉庫和單位的距離制定物資運輸方案。最后按照物資運輸方案制定各倉庫的發貨表和各單位的接收表,修改各倉庫庫存數和各單位的物資數。物資申請和庫存的計劃匯總制定物資分配方案物資調撥預處理制定物資運輸方案制定物資調撥方案打印報表該決策問題需要設計多個數據庫和多個模型共同求解??偟奶幚砹鞒倘鐖D: 圖3 物資分配調撥流程圖具體方案通過上述分析可知該決策問題共涉及6個模型:匯總模型,預處理模型、分配模型、運輸優化模型、調撥模型、制表模型

8、。其中匯總、預處理、調撥、制表模型都是數據處理模型,屬于管理業務工作。分配和運輸優化屬于數學模型。分配模型屬于平衡分配決策,它要達到的目標是使物資分配盡量合理,該模型的計算公式是分配決策方法之一,也可以采用別的分配方法。運輸模型屬于優化決策,它使運輸過程達到總噸公里數最小。該6個模型以程序形式出現,均放入模型庫中。該方案包括十個數據表(1)單位申請數據表;(2)倉庫庫存數據表;(3)物資總申請數據表;(4)物資總庫存數據表;(5)物資分配數據表;(6)距離數據表;(7)物資調撥數據表;(8)倉庫發貨數據表;(9)單位收貨數據表;(10)單位物資數據表。三、具體表設計(1)單位申請數據表名稱類型

9、長度是否允許為空描述marketno(pk)char3否單位號goodsno(fk)char13否資源編號goodssumbigint10是申請數量(2)倉庫庫存表 名稱類型長度是否允許為空描述w_no(pk)char3否倉庫號goodsno(fk)char13否資源號goodsnumbigint10是庫存量unitvarchar6否數量單位(3)物資分配數據表 名稱類型長度是否允許為空描述marketno(pk)char3否單位號goodsno(fk)char13否資源編號goodssumbigint10是分配數量(4)距離數據表名稱類型長度是否允許為空描述marketno(pk)char3

10、否單位號w_no(fk)char3否倉庫號distancevarchar10否距離unitvarchar10否計量單位(5)物資調撥分配數據表名稱類型長度是否允許為空描述marketno(pk)char3否單位號w_no(fk)char3否倉庫號goodsno(fk)char13否資源號goodsnumbigint10否分配數量(6)單位收貨數據表名稱類型長度是否允許為空描述marketno(pk)char3否單位號goodsno(fk)char13否資源編號goodssumbigint10是收物數量(7)倉庫發貨數據表名稱類型長度是否允許為空描述w_no(pk)char3否倉庫號goodsn

11、o(fk)char13否資源編號goodssumbigint10是發物數量(8)物資總庫存數據表名稱類型長度是否為空?描述W_no(pk)char3否倉庫號Goodsno(pk)char13否物資號goodsnumbigint10是物資數量(9)物資分配數據表名稱類型長度是否為空?描述Marketno(pk)char3否單位號Goodsno(pk)char13否物資號goodsnumbigint10是物資數量(10)單位物資數據表。名稱類型長度是否允許為空描述marketno(pk)char3否單位號goodsno(fk)char13否資源號goodsnumbigint10是庫存量unitva

12、rchar6否數量單位四、各接口說明(各模塊之間的調用順序、數據存取關系)。4.1物資申請和庫存的計劃匯總1.各單位按自己的需求提出對各物資的申請申請數據庫為:Di=SQ(W1),SQ(W2), i=1,2,3 (1.1)其中Di表示第i各單位,SQ(Wj)表示申請物資Wj的需要數量。將各單位的申請數據庫匯總成各單位對物資的需求量,形成總申請數據庫。Wj= SQ(D1),SQ(D2), j=1,2,3 (1.2)其中SQ(Di)表示第i個單位對物資Wj的申請數量。該項數據處理需要編制程序,類似于數據庫的旋轉來完成。2.各倉庫度物資的可供應情況Ki=XY(W1)KD(W1),XY(W2)KD(W

13、2), i=1,2, (1.3)其中Ki表示第i個倉庫;XY(Wj), KD(Wj)分別表示該倉庫中物資Wj的現有數量和最低儲備量;XY(Wj)KD(Wj)表示物質Wj的可供量。各倉庫的多物資的可供應情況匯總成某一物資個倉庫的可供量,形成總庫存數據庫。 Wj=XY(K1)KD(K1),XY(K2)KD(K2), (1.4)該項數據處理工作,要在數據庫中計算出可供量后,再進行類似于數據庫旋轉來實現。該計劃匯總工作構成數據處理模型,它與數據庫的關系如圖:單位申請數據庫倉庫庫存數據庫計 劃匯 總物資總申請數據庫物資總庫存數據庫 圖4 計劃匯總模型與數據庫的關系4.2制定物資的分配方案物資分配方案是利

14、用物資分配模型來完成的,該分配模型是通過一系列公式實現。比較分配情況對同一物資Wj計算總可供量S(各倉庫可供量之和)與總申請量Q(各單位申請量之和)的大小。物資分配方法總可供量大于等于總申請量SQ完全滿足各單位的申請數量,即各單位的分配數量FB(Dj)等于他的申請量。FB(Dj)= SQ(Dj) (2.1)總可供量小于總申請量SQ這里有2種處理方法:按申請比例削減 FB(Dj)= SQ(Dj)*S/Q (2.2)按優先類別分配各單位按需求物資的需求程度有一個優先類別 該模型是一個數學模型。模型和數據庫之間的關系如圖:物資總申請數據庫物資總庫存數據庫物資分配模型物資分配數據庫 圖3 物資分配模型

15、與數據庫的關系 其中物資分配數據庫中每條記錄表示每種物資分配給各單位的具體數量。 4.3物資調撥預處理在制定物資分配方案中已經確定了每種物資給各接收單位的分配數量。具體由哪個倉庫調撥多少物資到哪個單位去,就有運輸問題的線性規劃來解決。但決定哪幾個倉庫,哪幾個接收單位之間實現調撥供應是需要進行預處理的。 每種物資的調運中,參加調運的倉庫和接收單位都是不一樣的,是隨機出現的。參加調運的倉庫是由該倉庫提供某物資的可供量是否大于零來決定。參加調用接收單位要看他接收某物資的分配數大于零來決定。每個倉庫到所接收單位的路程,存入一個距離數據庫中。對每一種物資,由于參加調運的倉庫和單位不同,要形成參加調運的實

16、際距離矩陣,這就要對每個距離記錄進行挑選,挑選后形成小的實際距離矩陣,再形成好實際調撥矩陣后,才可以進行運輸問題的線性規劃運算,計算出有哪個倉庫運多少物資給某個接收單位。這個物資調運預處理是一個數據處理模型,用數據庫中投影操作來完成。該模型完成了物資調用預處理后,接著就可以進行物資運輸調撥了,當求出具體解后,由調撥方案的解回到原數據庫中的位置,由數據庫反投影操作來完成。該模型和數據庫之間的關系如圖:某物資實際距離矩陣物資分配數據庫距離數據庫物資調撥預處理模型 圖6 物資調撥預處理模型和數據庫的關系4.4制定物資運輸方案 利用運輸問題數學模型的具體求解方法,制定各物資的運輸方案。該模型和數據庫之

17、間的關系:物資調撥數據庫物資分配數據庫實際距離矩陣運輸問題模型 圖7 運輸問題模型和數據庫的關系運輸問題的計算機算法實現:物資調撥數據庫中每條記錄表示有各倉庫運給各單位的具體數量。從距離表中選出能夠提供A資源的倉庫,若S=Q即庫存量=申請量,我們采用產銷不平衡的沃爾格運輸方法;若S60,單位為分鐘)。訓練集見表:實例 屬性目標WillWaitOthersWCondWEndConsPriceRainResWEstX1YesNoNoSomeEXNoYes0-10YesX2YesNoNoFullCHNoNo30-60NoX3NoYesNoSomeCHNoNo0-10YesX4YesNoYesFull

18、CHYesNo10-30YesX5YesNoYesFullEXNoYes60NoX6NoYesNoSomeMIDYesYes0-10YesX7NoYesNoNoneCHYesNo0-10NoX8NoNoNoSomeMIDYesYes0-10YesX9NoYesYesFullCHYesNo60NoX10YesYesYesFullEXNoYes10-30NoX11NoNoNoNoneCHNoNo0-10NoX12YesYesYesFullCHNoNo30-60Yes要求:建立BP神經網絡模型,并進行容錯性分析。(25分)解:通過對訓練集進行訓練建立神經網絡模型,首先對訓練集輸入數字化,之后建立神經

19、網絡,設置輸入輸出向量,網絡層數及網絡各層權值閾值。然后進行訓練得到神將網絡模型。最后進行容錯分析,可以訓練原訓練集的數據,分析網絡的準確性,均方差的誤差值等,也可以對原訓練集數據稍作修改,看是否會影響所作的決策。對訓練集數據修改后如下表,用來進行容錯分析。實例 屬性目標WillWaitOthersWCondWEndConsPriceRainResWEstX11000-1010.51X21001100-0.50X301001000.51X4101111001X51011-101-10X601000110.51X7010-11100.50X800000110.51X90111110-10X101

20、111-10100X11000-11000.50X12111-1100-0.511:等待 0:不等在MATLAB中運行如下代碼P=1 0 0 0 -1 0 1 1; 1 0 0 -1 1 0 0 0;0 1 0 0 1 0 0 1; 1 0 1 -1 1 1 0 0.5;1 0 1 -1 -1 0 1 -1; 0 1 0 0 0 1 1 1;0 1 0 1 1 1 0 1; 0 0 0 0 0 1 1 1;0 1 1 -1 1 1 0 -1; 1 1 1 -1 -1 0 1 0.5;0 0 0 1 1 0 0 1; 1 1 1 -1 1 0 0 0; T=1 0 1 1 0 1 0 1 0 0

21、 0 1; pause;運行結果 net=newff(minmax(P),3,1,tansig,purelin,traingdm)Warning: NEWFF used in an obsolete way. In nntobsu at 18 In newff at 105 See help for NEWFF to update calls to the new argument list. net = Neural Network object: architecture: numInputs: 1 numLayers: 2 biasConnect: 1; 1 inputConnect:

22、1; 0 layerConnect: 0 0; 1 0 outputConnect: 0 1 numOutputs: 1 (read-only) numInputDelays: 0 (read-only) numLayerDelays: 0 (read-only) subobject structures: inputs: 1x1 cell of inputs layers: 2x1 cell of layers outputs: 1x2 cell containing 1 output biases: 2x1 cell containing 2 biases inputWeights: 2x

23、1 cell containing 1 input weight layerWeights: 2x2 cell containing 1 layer weight functions: adaptFcn: trains divideFcn: (none) gradientFcn: calcgrad initFcn: initlay performFcn: mse trainFcn: traingdm parameters: adaptParam: .passes divideParam: (none) gradientParam: (none) initParam: (none) perfor

24、mParam: (none) trainParam: .epochs, .goal, .lr, .max_fail, .mc, .min_grad, .show, .time weight and bias values: IW: 2x1 cell containing 1 input weight matrix LW: 2x2 cell containing 1 layer weight matrix b: 2x1 cell containing 2 bias vectors other: userdata: (user information) inputWeights=net.IW1,1

25、inputWeights = 0.9333 1.2258 -0.6569 0.6893 0.6779 -1.0620 0.8665 -0.6884 1.6281 0.5310 0.1881 -0.6869 -0.0293 -0.3139 1.8436 0.7004 -1.0904 -1.1765 1.3374 0.6878 0.4389 1.2153 0.4553 0.6343 inputbias=net.b1inputbias = -2.2595 -1.9384 -1.9766 layerWeights=net.LW2,1layerWeights = 0.3575 0.5155 0.4863

26、 layerbias=net.b2layerbias = -0.2155 pause; net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause; net,tr=train(net,P,T);TRAINGDM-calcgrad, Epoch 0/1000, MSE 1.84616/0.001, Gradient 4.0328/1e-010TRAINGDM-calcgrad,

27、 Epoch 50/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 100/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 150/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 200/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 250/1000, MSE 0./0.001, Gr

28、adient 0./1e-010TRAINGDM-calcgrad, Epoch 300/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 350/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 400/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 450/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgra

29、d, Epoch 500/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 550/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 600/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 650/1000, MSE 0.04611/0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 700/1000, MSE 0./0

30、.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 750/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 800/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 850/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 900/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM

31、-calcgrad, Epoch 950/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM-calcgrad, Epoch 1000/1000, MSE 0./0.001, Gradient 0./1e-010TRAINGDM, Maximum epoch reached, performance goal was not met. pause A = sim(net,P)A = Columns 1 through 11 0.7708 0.0446 1.0086 1.0508 -0.0921 1.1178 0.0647 0.9401 -0.0444

32、0.2307 -0.0433 Column 12 0.9434 E = T - AE = Columns 1 through 11 0.2292 -0.0446 -0.0086 -0.0508 0.0921 -0.1178 -0.0647 0.0599 0.0444 -0.2307 0.0433 Column 12 0.0566 MSE=mse(E)MSE = 0.0123 test=1 0 1 0 -1 0 1 0; 1 0 0 -1 1 0 1 0;0 1 0 1 1 0 0 1; 1 0 1 -1 0 1 0 0.5;1 1 1 -1 -1 0 1 -1; 0 1 1 0 1 1 1 1

33、;0 1 0 1 1 0 0 1; 0 0 0 0 0 1 0 1;1 1 1 0 1 1 0 -1; 1 1 1 -1 -1 0 1 0.5;0 1 0 1 1 0 0 1; 1 1 1 0 1 0 0 0; A1 = sim(net,test)A1 = Columns 1 through 11 0.6638 1.1255 0.8135 1.0079 0.1281 1.1872 0.8135 -0.0810 0.6832 0.2307 0.8135 Column 12 1.5866 E1 = T - A1E1 = Columns 1 through 11 0.3362 -1.1255 0.1

34、865 -0.0079 -0.1281 -0.1872 -0.8135 1.0810 -0.6832 -0.2307 -0.8135 Column 12 -0.5866 MSE=mse(E1)MSE = 0.4018 pause echo off得到如下的曲線圖:對運行結果進行容錯性分析:實例 輸入輸出WillWait(1)輸出WillWait(0)結果OthsWConWEnConPriceRaiResWEstX11100-101 10.96331.2952等(1)X21011100 -10.01830.5994不一定X30101100 11.01121.9679等(1)X41001110 0

35、0.98260.5656等(1)X51111-101 -2-0.05600.2541不等(0)X60110001 10.9926-0.4782不一定X7011-1010 10.0111-0.9876不等(0)X80110011 11.0085-0.9217不一定X90000110 -20.00010.8146不一定X101100101 00.07990.1198不等(0)X11111-1100 1-0.0092-0.9840不等(0)X121100000 -10.99591.0300等(1)編制旅行商路徑優化問題的遺傳算法程序,并計算一個實例。(25分) 一、旅行商問題概述旅行商問題(Trav

36、eling Saleman Problem,TSP)又譯為旅行推銷員問題、貨郎擔問題,簡稱為TSP 問題,是最基本的路線問題,該問題是在尋求單一旅行者由起點出發,通過所有給定的需求點之后,最后再回到原點的最小路徑成本。TSP 問題最簡單的求解方法是枚舉法。它的解是多維的、多局部極值的、趨于無窮大的復雜解的空間,搜索空間是n 個點的所有排列的集合,大小為n-1??梢圆捎眠z傳算法來搜索解空間,群體搜索易于進行并行化處理,它并不是盲目窮舉,而是啟發式搜索,由于采用了遺傳、變異、突變,豐富了種群的基因,優化了解空間。遺傳算法是建立在最優解與較優解的差別小的基礎上的,也可以說是建立在父母漂亮,小孩很有可

37、能也漂亮的理論基礎上的。遺傳算法得出的很有可能是局部最優解,而不是全局最優解。(百度)二、遺傳算法(GA)遺傳算法(Genetic Algorithm)是模擬生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法,它最初由美國Michigan大學J.Holland教授于1975年首先提出來的,并出版了頗有影響的專著Adaptation in Natural and Artificial Systems,GA這個名稱才逐漸為人所知,J.Holland教授所提出的GA通常為簡單遺傳算法(SGA)。三、問題描述假設有一個旅行商人要拜訪n個城市,他必須選擇

38、所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最后要回到原來出發的城市。路徑的選擇目標是要求得的路徑路程為所有路徑之中的最小值。TSP問題是一個組合優化問題。該問題可以被證明具有NPC計算復雜性。因此,任何能使該問題的求解得以簡化的方法,都將受到高度的評價和關注。 四、問題分析 TSP問題就是尋找一條最短的遍歷n 個城市的最短路徑, 即搜索自然子集W= 1 ,2 , , n ( W的元素表示對n 個城市的編號) 的一個排列( W) = V1 , V2 , , Vn , 使len = d ( Vi , Vi+1) + d ( V1 , Vn)取最小值, 式中的d ( Vi , Vi+1)

39、表示城市Vi 到城市Vi + 1的距離. 遺傳算法是具有“生成+檢測”的迭代過程的搜索算法。它的基本處理流程如圖1所示。由此流程圖可見,遺傳算法是一種群體型操作,該操作以群體中的所有個體為對象。選擇(Selection)、交叉(Crossover)和變異(Mutation)是遺傳算法的3個主要操作算子,它們構成了所謂的遺傳操作(genetic operation),使遺傳算法具有了其它傳統方法所沒有的特性。遺傳算子包含如下6個基本因素:參數編碼:由于遺傳算法不能直接處理解空間的解數據,因此必須通過編碼將它們表示成遺傳空間的基因型串結構數據。生成初始群體:由于遺傳算法的群體型操作需要,所以必須為

40、遺傳操作準備一個由若干初始解組成的初始群體。初始群體的每個個體都是通過隨機方法產生。適應度評估檢測:遺傳算法在搜索進化過程中一般不需要其他外部信息,僅用適應度(fitness)值來評估個體或解的優劣,并作為以后遺傳操作的依據。選擇(selection):選擇或復制操作是為了從當前群體中選出優良的個體, 使它們有機會作為父代為下一代繁殖子孫。個體適應度越高,其被選擇的機會就越多。此處采用與適用度成比例的概率方法進行選擇。具體地說,就是首先計算群體中所有個體適應度的總和(),再計算每個個體的適應度所占的比例(),并以此作為相應的選擇概率。交叉操作:交叉操作是遺傳算法中最主要的遺傳操作。簡單的交叉(

41、即一點交叉)可分兩步進行:首先對種群中個體進行隨機配對;其次,在配對個體中隨機設定交叉處,配對個體彼此交換部分信息。(6) 變異:變異操作是按位(bit)進行的,即把某一位的內容進行變異。變異操作同樣也是隨機進行的。一般而言,變異概率都取得較小。變異操作是十分微妙的遺傳操作,它需要和交叉操作配合使用,目的是挖掘群體中個體的多樣性,克服有可能限于局部解的弊病。這6個要素構成了遺傳算法的核心內容,其流程如圖1所示。圖1 遺傳算法的基本流程遺傳算法解題的基本步驟如下:Step1:參數設置及種群初始化;Step2:對不可行解進行貪婪修復;Step3:適應度評價;Step4:輪盤賭選擇;Step5:交叉

42、;Step6:變異;Step7:對不可行解進行貪婪修復;Step8:適應度評價;Step9:終止條件判斷,若未達到終止條件,則轉到Step4;Step10:輸出結果。五、運行結果初始種群中的一個隨機值:Rlength = 8.1881e+004Rlength = 2.8217e+004迭代次數c 400迭代后結果Rlength = 2.8217e+00436個城市坐標隨機化結果 遺傳算法求解結果六、結果分析由遺傳算法對以上求解可以看出,用遺傳算法來求解TSP問題是可行的。用遺傳算法求解時,增加迭代次數,可以得到更加優良的結果,但是會需要更長的時間,即一個優良的結果往往是以時間為代價的,這種情況

43、要依據具體問題具體分析,平衡兩者在問題求解時的比重。另外,對選擇算法進行優化,會提高遺傳算法的性能,這些都需要在實踐中不斷積累和廣泛涉獵優良算法。最后,遺傳算法得到的未必是最優解,我們可以根據需要進行多次求解,從而比較得出符合要求的結果。七、程序源代碼a=1304 2312;3639 1315;4177 2364;3712 1399;3488 1535;3326 1556;. 3238 1229;4196 1044;4312 790;2864 570;1927 1970;2562 1756;. 2788 1491;2381 1676;1332 695;3715 1678;3918 2179;4

44、061 2370;. 3780 2212;3676 2578;1537 2838;2745 2931;3429 1908;3507 2376;. 2788 1491;2381 1676;1332 695;3715 1678;3918 2179;4061 2370;. 3780 2212;3676 2578;1537 2838;2745 2931;3429 1908;3507 2376;. ;%a:假定的36個城市的坐標 n=100;%n:種群個數C=200;%C:停止代數m=2;%m:適配值淘汰加速指數,不宜太大Pc=0.9;%Pc:交叉概率Pm=0.2;%Pm: 變異概率D=distance(a);%生成距離矩陣R,Rlength=GeneTSP(D,a,n,C,m,Pc,Pm);function R,Rlength=GeneTSP(D,a,n,C,m,Pc,Pm) N,NN=size(D); %(31*31) farm=zeros(n,N); %存儲種群 %隨機生成初始種群,隨機產生從1到N的N個初始值,例如, RANDPERM(6) ,可能結果為:2 4 5 6 1 3. for i=1:n farm(i,:)=randperm(N); end R=farm(1,:); %一個隨機解(個體) scatter(a(:,1),a(:,2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論