Sub G_combinations()
Dim shelf As Integer
Dim used As Double
Dim result As Double
Dim noproducts As Integer
Dim ip As Integer
Dim profit As Double
Dim result As Double
Dim resultF() As Variant
Dim i As Integer
Dim F() As Variant
Dim best_F() As Variant
noproducts = 5
shelf = 10
F(1) = -1
F(2) = -1
F(3) = -1
F(4) = -1
F(5) = -1
used = 0
profit = -100000
Do While used < shelf
F(1) = F(1) + 1
used = Application.Max(0, F(1)) + Application.Max(0, F(2)) + Application.Max(0, F(3)) + Application.Max(0, F(4)) + Application.Max(0, F(5))
If used = shelf Then
For ip = 1 To noproducts
resultF(ip) = F(ip)+ 1
Next ip
result = resultF(1) + resultF(2) + resultF(3) + resultF(4) + resultF(5)
If result > profit Then
profit = result
best_F(1) = Application.Max(F(1), 0)
best_F(2) = Application.Max(F(2), 0)
best_F(3) = Application.Max(F(3), 0)
best_F(4) = Application.Max(F(4), 0)
best_F(5) = Application.Max(F(5), 0)
Else
profit = profit
End If
used = 0
Exit Do
End If
Do While used < shelf
F(2) = F(2) + 1
used = Application.Max(0, F(1)) + Application.Max(0, F(2)) + Application.Max(0, F(3)) + Application.Max(0, F(4)) + Application.Max(0, F(5))
If used = shelf Then
For ip = 1 To noproducts
resultF(ip) = F(ip)+ 1
Next ip
result = resultF(1) + resultF(2) + resultF(3) + resultF(4) + resultF(5)
If result > profit Then
profit = result
best_F(1) = Application.Max(F(1), 0)
best_F(2) = Application.Max(F(2), 0)
best_F(3) = Application.Max(F(3), 0)
best_F(4) = Application.Max(F(4), 0)
best_F(5) = Application.Max(F(5), 0)
Else
profit = profit
End If
F(2) = -1
used = 0
Exit Do
End If
Do While used < shelf
F(3) = F(3) + 1
used = Application.Max(0, F(1)) + Application.Max(0, F(2)) + Application.Max(0, F(3)) + Application.Max(0, F(4)) + Application.Max(0, F(5))
For ip = 1 To noproducts
resultF(ip) = F(ip)+ 1
Next ip
result = resultF(1) + resultF(2) + resultF(3) + resultF(4) + resultF(5)
If result > profit Then
profit = result
best_F(1) = Application.Max(F(1), 0)
best_F(2) = Application.Max(F(2), 0)
best_F(3) = Application.Max(F(3), 0)
best_F(4) = Application.Max(F(4), 0)
best_F(5) = Application.Max(F(5), 0)
Else
profit = profit
End If
If used = shelf Then
F(3) = -1
used = 0
Exit Do
End If
Do While used < shelf
F(4) = F(4) + 1
used = Application.Max(0, F(1)) + Application.Max(0, F(2)) + Application.Max(0, F(3)) + Application.Max(0, F(4)) + Application.Max(0, F(5))
For ip = 1 To noproducts
resultF(ip) = F(ip)+ 1
Next ip
result = resultF(1) + resultF(2) + resultF(3) + resultF(4) + resultF(5)
If result > profit Then
profit = result
best_F(1) = Application.Max(F(1), 0)
best_F(2) = Application.Max(F(2), 0)
best_F(3) = Application.Max(F(3), 0)
best_F(4) = Application.Max(F(4), 0)
best_F(5) = Application.Max(F(5), 0)
Else
profit = profit
End If
If used = shelf Then
F(4) = -1
used = 0
Exit Do
End If
Do While used < shelf
F(5) = F(5) + 1
used = Application.Max(0, F(1)) + Application.Max(0, F(2)) + Application.Max(0, F(3)) + Application.Max(0, F(4)) + Application.Max(0, F(5))
For ip = 1 To noproducts
resultF(ip) = F(ip)+ 1
Next ip
result = resultF(1) + resultF(2) + resultF(3) + resultF(4) + resultF(5)
If result > profit Then
profit = result
best_F(1) = Application.Max(F(1), 0)
best_F(2) = Application.Max(F(2), 0)
best_F(3) = Application.Max(F(3), 0)
best_F(4) = Application.Max(F(4), 0)
best_F(5) = Application.Max(F(5), 0)
Else
profit = profit
End If
If used = shelf Then
F(5) = -1
used = 0
Exit Do
End If
Loop
Loop
Loop
Loop
Loop
End Sub
Bookmarks