This commit is contained in:
andrzej 2020-05-11 12:18:52 +02:00
commit 400fa1cb6b

View File

@ -1,18 +1,16 @@
import random
import math
import statistics
import time
### prawdopodobieństwo mutacji
mutation_prob = 0.02
mutation_prob = 0.03
### ilość osobników w pokoleniu, powinna być parzysta
generation_size = 30
generation_size = 20
### liczba pokoleń
number_of_generations = 100
number_of_generations = 30
### liczba paczek
number_of_packages = 15
number_of_packages = 45
### liczba regałów
number_of_racks = 5
number_of_racks = 70
### jak bardzo promowane są osobniki wykorzystujące całą pojemność regału
amount_of_promotion = 3
@ -95,26 +93,21 @@ def mutation(individual):
individual[locus] = random.randint(0,number_of_racks-1)
return individual
### lista paczek, indeks to id paczki, wartość w liście to jej waga
packages = [random.randint(2,9) for i in range(number_of_packages)]
### lista regałów, indeks to id regału, wartość w liście to jego pojemność
racks = [random.randint(10,20) for i in range(number_of_racks)]
# print(packages)
# print(racks)
### WŁAŚCIWY ALGORYTM
generation = first_gen()
global_maximum = -math.inf
def gen_alg(number_of_generations, generation_size, mutation_prob, amount_of_promotion):
### WŁAŚCIWY ALGORYTM
generation = first_gen()
global_maximum = -math.inf
# pętla znajdująca najlepszy fitness w pierwszym pokoleniu
for i in range(generation_size):
# pętla znajdująca najlepszy fitness w pierwszym pokoleniu
for i in range(generation_size):
evaluation_of_individual = evaluation(generation[i])
if evaluation_of_individual > global_maximum:
global_maximum = evaluation_of_individual
best_individual = generation[i].copy()
#właściwa pętla programu
for generation_index in range(number_of_generations):
#właściwa pętla programu
for generation_index in range(number_of_generations):
print('pokolenie numer: ', generation_index)
# print(generation)
@ -146,4 +139,12 @@ for generation_index in range(number_of_generations):
if local_maximum > global_maximum:
global_maximum = local_maximum
generation = descendants
print('maximum globalne: ', global_maximum)
print('maximum globalne: ', global_maximum)
### lista paczek, indeks to id paczki, wartość w liście to jej waga
packages = [random.randint(1,10) for i in range(number_of_packages)]
### lista regałów, indeks to id regału, wartość w liście to jego pojemność
racks = [random.randint(15,18) for i in range(number_of_racks)]
# print(packages)
# print(racks)
gen_alg(number_of_generations, generation_size, mutation_prob, amount_of_promotion)