genetic_algorithm.py
Skrypt z implementacją algorytmu genetycznego.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))
Leave a Comment