Sub GarbageCanModel() Dim i As Long Dim j As Long Dim k As Long Dim IE As Long Dim IL As Long Dim IB As Long Dim IT As Long Dim JA As Long Dim JAB As Long Dim JD As Long Dim JDB As Long Dim JE As Long Dim JEB As Long Dim KS As Long 'Decision maker inactivity Dim KT As Long 'Problem persistence Dim KU As Long 'Problem latency Dim KV As Long 'Problem velocity Dim KW As Long 'Problem failures Dim KX As Long 'Decision maker velocity Dim KY As Long 'Choice persistence Dim KZ As Long 'Choice failures Dim RES As Long 'The number of resolution Dim OVS As Long 'The number of oversight Dim FLT As Long 'The number of flight Dim GRES As Long 'The number of resolution without decision makers Dim GOVS As Long 'The number of oversight without decision makers Dim GFLT1 As Long 'The number of flight without decision makers (type1) Dim GFLT2 As Long 'The number of flight without decision makers (type2) Dim SimulationNumber As Long Dim ICH(1 To 10) As Long Dim ICS(1 To 10) As Long Dim JC(1 To 10) As Long Dim JET(1 To 20) As Long Dim JF(1 To 20) As Long Dim JFF(1 To 20) As Long Dim JPS(1 To 20) As Long Dim KDC(1 To 10) As Long Dim KDCW(1 To 10) As Long Dim IKA(1 To 10, 1 To 10) As Long Dim JIA(1 To 20, 1 To 10) As Long Dim KABC(1 To 20, 1 To 10) As Long Dim KBBC(1 To 20, 1 To 10) As Long Dim KCBC(1 To 20, 1 To 20) As Long Dim S As Long Dim XR As Long 'Energy researve Dim XS As Long 'Energy wastage Dim XEE(1 To 10) As Long Dim XEEFW(1 To 10) As Long Dim XERC(1 To 10) As Long Dim XERCFW(1 To 10) As Long Dim XERP(1 To 20) As Long Dim XSC(1 To 20) As Long Dim XEA(1 To 10, 1 To 20) As Long Dim ACS As String 'Type of access structre Dim DCS As String 'Type of decision structure Dim EGD As String 'Type of energy distribution Dim DCT As String 'Decision type Dim Entrytime As Worksheet Dim Energydistribution As Worksheet Dim Decisionstructure As Worksheet Dim Accessstructure As Worksheet Dim Statistics As Worksheet Dim Process As Worksheet 'Definition of worksheet Set Entrytime = Worksheets("Entry time") Set Energydistribution = Worksheets("Energy distribution") Set Decisionstructure = Worksheets("Decision structure") Set Accessstructure = Worksheets("Access structure") Set Statistics = Worksheets("Statistics") Set Process = Worksheets("Process") 'Constant value Const NTP = 20 Const NCH = 10 Const NPR = 20 Const NDM = 10 'Initial setting of simulation number SimulationNumber = 1 'Setting Entry time (2*2 patterns) For IE = 1 To 4 If IE = 1 Then For i = 1 To NCH ICH(i) = Entrytime.Cells(i + 1, 1) Next i For i = 1 To NPR JET(i) = Entrytime.Cells(i + 1, 3) Next i ElseIf IE = 2 Then For i = 1 To NCH ICH(i) = Entrytime.Cells(i + 1, 2) Next i For i = 1 To NPR JET(i) = Entrytime.Cells(i + 1, 3) Next i ElseIf IE = 3 Then For i = 1 To NCH ICH(i) = Entrytime.Cells(i + 1, 1) Next i For i = 1 To NPR JET(i) = Entrytime.Cells(i + 1, 4) Next i ElseIf IE = 4 Then For i = 1 To NCH ICH(i) = Entrytime.Cells(i + 1, 2) Next i For i = 1 To NPR JET(i) = Entrytime.Cells(i + 1, 4) Next i End If 'Setting solution coefficient For i = 1 To NTP XSC(i) = 6 Next i 'Pattern setting of problem load For IL = 1 To 3 IB = IL - 1 'Pattern setting of Access structure For JAB = 1 To 3 JA = JAB - 1 'Pattern setting of Deicision structure For JDB = 1 To 3 JD = JDB - 1 'Pattern setting of Energy distribution For JEB = 1 To 3 JE = JEB - 1 XR = 0 XS = 0 KS = 0 'Initial setting of Choice opportunity For i = 1 To NCH XERC(i) = 0 'The original setting = 1100 but this must be a bug. XEE(i) = 0 ICS(i) = 0 Next i 'Initial setting of Decision maker For k = 1 To NDM KDC(k) = 0 KDCW(k) = KDC(k) Next k 'Initial setting of Problem For j = 1 To NPR XERP(j) = IL * 1100 JF(j) = 0 JFF(j) = 0 JPS(j) = 0 Next j 'Setting Decision structure For i = 1 To NCH For j = 1 To NDM If JD = 0 Then IKA(i, j) = Decisionstructure.Cells(i + 1, j) DCS = "unsegmented" ElseIf JD = 1 Then IKA(i, j) = Decisionstructure.Cells(i + 1, j + 11) DCS = "hierarchical" ElseIf JD = 2 Then IKA(i, j) = Decisionstructure.Cells(i + 1, j + 22) DCS = "specialized" End If Next j Next i 'Setting Access structure For i = 1 To NPR For j = 1 To NCH If JA = 0 Then JIA(i, j) = Accessstructure.Cells(i + 1, j) ACS = "unsegmented" ElseIf JA = 1 Then JIA(i, j) = Accessstructure.Cells(i + 1, j + 11) ACS = "hierarchical" ElseIf JA = 2 Then JIA(i, j) = Accessstructure.Cells(i + 1, j + 22) ACS = "specialized" End If Next j Next i 'Setting Energy distribution For i = 1 To NDM For j = 1 To NTP If JE = 0 Then XEA(i, j) = Energydistribution.Cells(i + 1, 1) EGD = "less" ElseIf JE = 1 Then XEA(i, j) = Energydistribution.Cells(i + 1, 2) EGD = "equal" ElseIf JE = 2 Then XEA(i, j) = Energydistribution.Cells(i + 1, 3) EGD = "more" End If Next j Next i 'Initializing deicision type count RES = 0 OVS = 0 FLT = 0 GRES = 0 GOVS = 0 GFLT1 = 0 GFLT2 = 0 'The end of initial settings 'Simulation start(20 steps) For IT = 1 To NTP 'Choice activation For i = 1 To NCH If ICH(i) = IT Then ICS(i) = 1 JC(i) = 1 Else JC(i) = 0 End If Next i 'Problem activation For j = 1 To NPR If JET(j) = IT Then JPS(j) = 1 End If Next j 'Find most attractive choice for problem j For j = 1 To NPR If JPS(j) = 1 Then S = 1000000000 For i = 1 To NCH If ICS(i) = 1 Then If JIA(j, i) <> 0 Then If JF(j) <> 0 And JF(j) <> i Then If (XERP(j) + XERC(i) - XEE(i)) < S Then S = XERP(j) + XERC(i) - XEE(i) JFF(j) = i End If Else If (XERC(i) - XEE(i)) < S Then S = XERC(i) - XEE(i) JFF(j) = i End If End If End If End If Next i End If Next j For j = 1 To NPR JF(j) = JFF(j) JFF(j) = 0 Next j ITT = IT - 1 If IT = 1 Then ITT = 1 End If 'Find most attractive choice for decision maker k For k = 1 To NDM S = 1000000000 For i = 1 To NCH If ICS(i) = 1 Then If IKA(i, k) <> 0 Then If KDC(k) <> 0 And KDC(k) <> i Then If (XERC(i) - XEE(i) - (XEA(k, ITT) * XSC(ITT))) < S Then S = XERC(i) - XEE(i) - (XEA(k, ITT) * XSC(ITT)) KDCW(k) = i End If Else If (XERC(i) - XEE(i)) < S Then S = XERC(i) - XEE(i) KDCW(k) = i End If End If End If End If Next i Next k For k = 1 To NDM KDC(k) = KDCW(k) If KDC(k) = 0 Then XR = XR + (XEA(k, IT) * XSC(IT)) KS = KS + 1 End If KDCW(k) = 0 Next k 'Estblishing the energy required to make each choice For i = 1 To NCH If ICS(i) <> 0 Then If JC(i) = 1 Then XERCFW(i) = 0 Else XERCFW(i) = XERC(i) End If XEEFW(i) = XEE(i) XERC(i) = 0 For j = 1 To NPR If JPS(j) = 1 And JF(j) = i Then XERC(i) = XERC(i) + XERP(j) End If Next j For k = 1 To NDM If IKA(i, k) <> 0 And KDC(k) = i Then XEE(i) = XEE(i) + (XSC(IT) * XEA(k, IT)) End If Next k End If Next i 'Making decisions For i = 1 To NCH If ICS(i) = 1 Then If XERC(i) <= XEE(i) Then If XEEFW(i) < XEE(i) Then If XERC(i) > 0 Then RES = RES + 1 DCT = "RES" 'Write #3, DCS, ACS, EGD, DCT, IT ElseIf XERC(i) = 0 Then If XERCFW(i) > 0 Then FLT = FLT + 1 DCT = "FLT" 'Write #3, DCS, ACS, EGD, DCT, IT Else OVS = OVS + 1 DCT = "OVS" 'Write #3, DCS, ACS, EGD, DCT, IT End If End If Else If XERC(i) > 0 Then GRES = GRES + 1 DCT = "GRES" 'Write #3, DCS, ACS, EGD, DCT, IT ElseIf XERC(i) = 0 Then If XERCFW(i) > 0 Then If XEE(i) > 0 Then GFLT1 = GFLT1 + 1 DCT = "GFLT1" 'Write #3, DCS, ACS, EGD, DCT, IT Else GFLT2 = GFLT2 + 1 DCT = "GFLT2" 'Write #3, DCS, ACS, EGD, DCT, IT End If Else GOVS = GOVS + 1 DCT = "GOVS" 'Write #3, DCS, ACS, EGD, DCT, IT End If End If End If XS = XS + XEE(i) - XERC(i) ICS(i) = 2 For j = 1 To NPR If JF(j) = i Then JPS(j) = 2 End If Next j End If End If Next i For i = 1 To NCH KABC(IT, i) = ICS(i) Next i For k = 1 To NDM KBBC(IT, k) = KDC(k) Next k For j = 1 To NPR KCBC(IT, j) = JF(j) If JPS(j) <> 0 And JPS(j) <> 1 Then KCBC(IT, j) = 1000 ElseIf JPS(j) = 0 Then KCBC(IT, j) = -1 End If Next j Next IT 'Finish time period loop. Begin accumulation of summary statistics. KT = 0 KU = 0 KV = 0 KW = 0 KX = 0 KY = 0 KZ = 0 For i = 1 To NTP For j = 1 To NCH If KABC(i, j) = 1 Then KY = KY + 1 If i = NTP Then KZ = KZ + 1 End If End If Next j Next i For i = 2 To NTP For j = 1 To NDM If KBBC(i, j) <> KBBC(i - 1, j) Then KX = KX + 1 End If Next j Next i For i = 1 To NTP For j = 1 To NPR If KCBC(i, j) <> 0 Then If KCBC(i, j) <> -1 Then If KCBC(i, j) <> 1000 Then KT = KT + 1 ElseIf KCBC(i, j) = 1000 Then If i = NTP Then KW = KW + 1 End If End If End If ElseIf KCBC(i, j) = 0 Then KU = KU + 1 End If Next j Next i KW = NPR - KW For i = 2 To NTP For j = 1 To NPR If KCBC(i, j) <> KCBC(i - 1, j) Then KV = KV + 1 End If Next j Next i 'Begin write out of results. Statistics.Cells(SimulationNumber + 1, 1) = SimulationNumber Statistics.Cells(SimulationNumber + 1, 2) = IL Statistics.Cells(SimulationNumber + 1, 3) = DCS Statistics.Cells(SimulationNumber + 1, 4) = ACS Statistics.Cells(SimulationNumber + 1, 5) = EGD Statistics.Cells(SimulationNumber + 1, 6) = KS Statistics.Cells(SimulationNumber + 1, 7) = KT Statistics.Cells(SimulationNumber + 1, 8) = KU Statistics.Cells(SimulationNumber + 1, 9) = KV Statistics.Cells(SimulationNumber + 1, 10) = KW Statistics.Cells(SimulationNumber + 1, 11) = KX Statistics.Cells(SimulationNumber + 1, 12) = KY Statistics.Cells(SimulationNumber + 1, 13) = KZ Statistics.Cells(SimulationNumber + 1, 14) = XR Statistics.Cells(SimulationNumber + 1, 15) = XS Statistics.Cells(SimulationNumber + 1, 16) = RES Statistics.Cells(SimulationNumber + 1, 17) = OVS Statistics.Cells(SimulationNumber + 1, 18) = FLT Statistics.Cells(SimulationNumber + 1, 19) = GRES Statistics.Cells(SimulationNumber + 1, 20) = GOVS Statistics.Cells(SimulationNumber + 1, 21) = GFLT1 Statistics.Cells(SimulationNumber + 1, 22) = GFLT2 For i = 1 To NTP Process.Cells((SimulationNumber - 1) * NTP + 1 + i, 1) = SimulationNumber Next i For i = 1 To NTP For j = 1 To NCH Process.Cells((SimulationNumber - 1) * NTP + 1 + i, 2 + j) = KABC(i, j) Next j Next i For i = 1 To NTP For j = 1 To NDM Process.Cells((SimulationNumber - 1) * NTP + 1 + i, 13 + j) = KBBC(i, j) Next j Next i For i = 1 To NTP For j = 1 To NPR Process.Cells((SimulationNumber - 1) * NTP + 1 + i, 24 + j) = KCBC(i, j) Next j Next i SimulationNumber = SimulationNumber + 1 Next JEB Next JDB Next JAB Next IL Next IE End Sub