główny algorytm w funkcji

This commit is contained in:
magdabiadala 2020-05-11 11:53:55 +02:00
parent 3ff8b95999
commit fc54101f4e

View File

@ -1,18 +1,16 @@
import random import random
import math import math
import statistics
import time
### prawdopodobieństwo mutacji ### prawdopodobieństwo mutacji
mutation_prob = 0.02 mutation_prob = 0.03
### ilość osobników w pokoleniu, powinna być parzysta ### ilość osobników w pokoleniu, powinna być parzysta
generation_size = 30 generation_size = 20
### liczba pokoleń ### liczba pokoleń
number_of_generations = 100 number_of_generations = 30
### liczba paczek ### liczba paczek
number_of_packages = 15 number_of_packages = 45
### liczba regałów ### liczba regałów
number_of_racks = 5 number_of_racks = 70
### jak bardzo promowane są osobniki wykorzystujące całą pojemność regału ### jak bardzo promowane są osobniki wykorzystujące całą pojemność regału
amount_of_promotion = 3 amount_of_promotion = 3
@ -95,13 +93,8 @@ def mutation(individual):
individual[locus] = random.randint(0,number_of_racks-1) individual[locus] = random.randint(0,number_of_racks-1)
return individual 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)
def gen_alg(number_of_generations, generation_size, mutation_prob, amount_of_promotion):
### WŁAŚCIWY ALGORYTM ### WŁAŚCIWY ALGORYTM
generation = first_gen() generation = first_gen()
global_maximum = -math.inf global_maximum = -math.inf
@ -147,3 +140,11 @@ for generation_index in range(number_of_generations):
global_maximum = local_maximum global_maximum = local_maximum
generation = descendants 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)