Input : a set of downlink requests; : a set of visibility masks; |
Output : the best solution found so far; |
; / Initialize a population of request permutations |
by randomly sorting / |
while stopping condition is not reached do |
; / Select two individuals for reproduction / |
; / Generate two new individuals by crossover / |
; / Use SGA to calculate the utility of / |
; / Use SGA to calculate the utility of / |
; / Initialize improving flag / |
; |
while do / Neighborhood search continues until the utility is not improved / |
; |
for to do |
for to do |
; / Use the exchange operator / |
; / Use SGA to calculate the utility of / |
if then |
; / Preserve the exchange which improves the utility / |
; / Update the utility of / |
; |
end if |
end for |
end for |
end while |
while do / Neighborhood search continues until the utility is not improved / |
; |
for to do |
for to do |
; / Use the exchange operator / |
; / Use SGA to calculate the utility of / |
if then |
; / Preserve the exchange which improves the utility / |
; / Update the utility of / |
; |
end if |
end for |
end for |
end while |
; / Update the population by replacing two of the worst individuals / |
end while |
; / Select the request permutation with the highest utility in the population / |
; / Use SGA to generate the final solution / |
return ; |