genetic_algorithm.py
Skrypt z implementacją algorytmu genetycznego.unknown
plain_text
a year ago
2.2 kB
6
Indexable
import json
import random
# Wczytaj dane wejściowe
with open("simulation_input.json", "r") as file:
data = json.load(file)
# Parametry wejściowe
mass_tonnes = data["mass_tonnes"]
fuel_consumption_factor = data["fuel_consumption_factor"]
cost_per_tonne_usd = data["cost_per_tonne_usd"]
# Funkcja celu: minimalizacja kosztów
def fitness_function(solution):
mass = solution["mass"]
fuel_cost = mass * fuel_consumption_factor * cost_per_tonne_usd
return fuel_cost
# Algorytm genetyczny
def genetic_algorithm(mass_options, population_size=10, generations=20, mutation_rate=0.1):
# Inicjalizacja populacji
population = [{"mass": random.choice(mass_options)} for _ in range(population_size)]
for generation in range(generations):
# Obliczanie dopasowania
fitness_scores = [fitness_function(ind) for ind in population]
# Selekcja najlepszych
sorted_population = [x for _, x in sorted(zip(fitness_scores, population))]
population = sorted_population[:population_size // 2]
# Krzyżowanie
offspring = []
for _ in range(len(population) // 2):
parent1 = random.choice(population)
parent2 = random.choice(population)
child = {"mass": (parent1["mass"] + parent2["mass"]) // 2}
offspring.append(child)
# Mutacja
for ind in offspring:
if random.random() < mutation_rate:
ind["mass"] = random.choice(mass_options)
# Aktualizacja populacji
population += offspring
# Zwrot najlepszego rozwiązania
best_solution = min(population, key=fitness_function)
return best_solution
# Uruchom algorytm
try:
best_result = genetic_algorithm(mass_tonnes)
print("Najlepsze rozwiązanie:", best_result)
# Zapisz wynik do pliku
with open("genetic_algorithm_results.json", "w") as result_file:
json.dump(best_result, result_file, indent=4)
print("Wynik został zapisany w pliku 'genetic_algorithm_results.json'.")
except Exception as e:
print("Wystąpił błąd:", str(e))
Editor is loading...
Leave a Comment