1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
Function optimum(nb_subch_tr, nb_bis_tr)
'Option Explicit
'Option Base 1
Dim connect_width(4) As Integer, connect_length(4) As Integer
Dim rect_width(4) As Integer
Dim rect_length(4) As Integer
Dim i As Integer
Dim N_DL_opt As Double
Dim N_DL_max As Integer
Dim j As Integer, jmax As Integer
Dim max As Double
Dim a As Integer, b As Integer
max = rect_width(1) * rect_length(1)
jmax = 1
nb_subch_tr = Sheets("PHY").Range("C24").Value
nb_bis_tr = ((Sheets("PHY").Range("C40").Value) / 2) - map_width rect_width(1) = 0
rect_length(1) = 0
N_DL_opt = 0
Do
'DLburst_cur = Sheets("Capacity").Range("J12").Value * N_DL
N_DL = N_DL - 1
For i = 1 To n Step 1
If tabl(1, i) <= nb_subch_tr And tabl(2, i) <= nb_bis_tr Then
While (nb_bis_tr - rect_width(i)) >= 0
rect_width(i) = rect_width(i) + tabl(1, i)
connect_width(i) = connect_width(i) + 1
Wend
While (nb_subch_tr - rect_length(i)) >= 0
rect_length(i) = rect_length(i) + tabl(2, i)
connect_length(i) = connect_length(i) + 1
Wend
End If
Next i
For j = 2 To n
jmax = 1
If rect_width(j) * rect_length(j) > max Then
max = rect_width(j) * rect_length(j)
jmax = j
End If
Next j
N_DL_opt = (rect_width(jmax) * rect_length(jmax)) / (tabl(1, jmax) * tabl(2, jmax))
a = nb_subch_tr - rect_length(jmax)
b = nb_bis_tr - rect_width(jmax)
Loop While N_DL > (connect_length(jmax) * connect_width(jmax))
N_DL = N_DL + 1
N_DL_max = N_DL_opt
While b > 0
Call optimum(a, (nb_bis_tr - b)) N_DL_max = N_DL_max + N_DL_opt
Wend
While a > 0
Call optimum(nb_subch_tr, b)
N_DL_max = N_DL_max + N_DL_opt
Wend
End Function |
Partager