finish: Next k ALL = 170 '总共天数 For i = 1 To 30 For j = 1 To ALL - 1
If C(i, j) = 1 And C(i, j + 1) = 1 Then x(i, 1) = x(i, 1) + 1 '统计背靠背次数 End I
If B(i, j) = 1 And B(i, j + 1) = 1 Then x(i, 2) = x(i, 2) + 1 '统计连续客场参赛次数 End If
If D(i, j) = 1 And D(i, j + 1) = 1 Then x(i, 3) = x(i, 3) + 1 '统计连续与强队参赛次数 End If Next j Next i
'根据C矩阵求均衡度 For i = 1 To 30 s = 0
For j = 1 To ALL If C(i, j) = 1 Then
s = s + 1 '统计总共比赛天数 temp(s) = j '统计哪些天有比赛 End If Next j
For k = 1 To s - 1
g(k) = temp(k + 1) - temp(k) '统计相邻两场比赛的间隔 Next k
s = s - 1 '区间数 aver = 0 For k = 1 To s
16
aver = aver + g(k) Next k
aver = aver / s '平均间隔天数 s1 = 0
For k = 1 To s
s1 = s1 + (g(k) - aver) ^ 2 Next k
Var = s1 / (s - 1) '方差
x(i, 4) = Var ^ 0.5 '标准差作为均衡度 Next i
Cells(1234, 1) = s + 1 Line = 1240 '显示行数 Cells(Line, 1) = \队号\ Cells(Line, 2) = \队名\ Cells(Line, 3) = \背靠背次数\ Cells(Line, 4) = \连续客场参赛次数\ Cells(Line, 5) = \连续与强队参赛次数\ Cells(Line, 6) = \均衡度\ For k = 1 To 30 Cells(Line + k, 1) = k Cells(Line + k, 2) = Info(k) For j = 1 To 3
Cells(Line + k, 2 + j) = x(k, j) Next j
Cells(Line + k, 2 + 4) = Format(x(k, 4), \ Next k '将指标归一化
Dim Max(4), Min(4) As Double Dim x1(30, 4) As Double Dim Re(30) As Double
17
Dim w(4) As Double '权重 w(1) = 0.3146 w(2) = 0.0789 w(3) = 0.1271 w(4) = 0.4694
For j = 1 To 4 '求各列指标的最大与最小值 Max(j) = x(1, j) Min(j) = x(1, j) For i = 1 To 30
If x(i, j) > Max(j) Then Max(j) = x(i, j) End If
If x(i, j) < Min(j) Then Min(j) = x(i, j) End If Next i Next j
For j = 1 To 4
For i = 1 To 30 '归一化指标
x1(i, j) = (x(i, j) - Min(j)) / (Max(j) - Min(j)) Next i Next j
For i = 1 To 30 s2 = 0
For j = 1 To 4
s2 = s2 + w(j) * x1(i, j) Next j
Re(i) = s2 '合成结果
18
Next i
'根据Re(30)进行排名 Dim Tr(30) As Double
Dim Xu(30), Ou(30) As Integer For i = 1 To 30 Xu(i) = i '队序号 Tr(i) = Re(i) '存储原来值 Next i
'对结果从小到大排序 For i = 1 To 29 For j = i + 1 To 30 If Tr(j) < Tr(i) Then tt = Tr(i)
Tr(i) = Tr(j) '成绩交换按从小到大排序 Tr(j) = tt t1 = Xu(i)
Xu(i) = Xu(j) '队序号交换 Xu(j) = t1 End If Next j Next i
For i = 1 To 30 Ou(i) = i '排名序号 Next i
'获得各队排名的序号,存于Ou(30)中 For i = 1 To 29 For j = i + 1 To 30 If Xu(j) < Xu(i) Then t1 = Xu(i)
Xu(i) = Xu(j) '对各对序号排序
19
Xu(j) = t1 t1 = Ou(i)
Ou(i) = Ou(j) '对排名序号交换 Ou(j) = t1 End If Next j Next i
'显示归一化后指标 Line = 1274
Cells(Line, 1) = \队号\ Cells(Line, 2) = \队名\ Cells(Line, 3) = \背靠背次数\ Cells(Line, 4) = \连续客场参赛次数\ Cells(Line, 5) = \连续与强队参赛次数\ Cells(Line, 6) = \均衡度\ Cells(Line, 7) = \合成结果\ Cells(Line, 8) = \排名结果\ For k = 1 To 30 Cells(Line + k, 1) = k Cells(Line + k, 2) = Info(k) For j = 1 To 4
Cells(Line + k, 2 + j) = Format(x1(k, j), \ Next j
Cells(Line + k, 2 + 5) = Format(Re(k), \ Cells(Line + k, 2 + 6) = Ou(k) Next k End Sub 程序二: '进行排名
Private Sub CommandButton1_Click()
20
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数学建模08D题(4)在线全文阅读。
相关推荐: