Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions comprehensive_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import sys
sys.path.append('pygad')
import pygad_modified as ga
import numpy

# Multi-objective fitness function
def fitness_func(ga_instance, solution):
# Three objectives: maximize fitness, minimize time cost, maximize diversity
fitness_score = numpy.sum(solution)
time_cost = numpy.random.randint(10, 50) # Simulate time cost
diversity_score = numpy.random.uniform(0.5, 1.0) # Simulate diversity score
return [fitness_score, time_cost, diversity_score]

# Callback function to track environment changes
def on_generation(ga_instance):
print(f"Generation {ga_instance.generations_completed}: Environment = {ga_instance.current_environment}")

print("=== Comprehensive Test: Environment State Machine & Multi-Objective Optimization ===\n")

# Create GA instance with environment state machine enabled
ga_instance = ga.GA(
num_generations=30, # Should cycle through 3 environments (30 generations / 10 = 3 cycles)
num_parents_mating=5,
fitness_func=fitness_func,
sol_per_pop=20,
num_genes=10,
parent_selection_type="sss",
crossover_type="single_point",
mutation_type="random",
mutation_probability=0.05,
crossover_probability=0.7,
on_generation=on_generation
)

print(f"Initial Environment: {ga_instance.current_environment}")
print("\nStarting Genetic Algorithm with Environment State Machine...\n")

# Run the GA with environment state machine
ga_instance.run()

print("\n=== GA Run Completed ===")
print(f"Total generations completed: {ga_instance.generations_completed}")
print(f"Final environment: {ga_instance.current_environment}")

# Show Pareto front data from the last generation
print("\n=== Pareto Front Data from Last Generation ===")
if hasattr(ga_instance, 'last_generation_fitness'):
print(f"Last generation fitness data shape: {ga_instance.last_generation_fitness.shape}")
print("Each solution has 3 objectives: [fitness_score, time_cost, diversity_score]")

print("\nTest completed successfully!")
35 changes: 35 additions & 0 deletions example_multi_objective.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import sys
sys.path.append('pygad')
import pygad_modified as ga
import numpy

def fitness_func(ga_instance, solution):
# Example multi-objective fitness function
fitness_score = numpy.sum(solution)
time_cost = numpy.random.randint(10, 50) # Simulate time cost
diversity_score = numpy.random.uniform(0.5, 1.0) # Simulate diversity score
return [fitness_score, time_cost, diversity_score]

def on_generation(ga_instance):
print(f"Generation completed: {ga_instance.generations_completed}")
print(f"Current environment: {ga_instance.current_environment}")

# Initialize the GA instance
ga_instance = ga.GA(
num_generations=30,
num_parents_mating=10,
fitness_func=fitness_func,
sol_per_pop=50,
num_genes=5,
parent_selection_type="sss",
crossover_type="single_point",
mutation_type="random",
mutation_probability=0.05,
crossover_probability=0.7,
on_generation=on_generation
)

# Run the GA
ga_instance.run()

print("GA run completed!")
Binary file added pygad/__pycache__/__init__.cpython-313.pyc
Binary file not shown.
Binary file added pygad/__pycache__/pygad.cpython-313.pyc
Binary file not shown.
Binary file added pygad/__pycache__/pygad_modified.cpython-313.pyc
Binary file not shown.
Binary file added pygad/helper/__pycache__/__init__.cpython-313.pyc
Binary file not shown.
Binary file added pygad/helper/__pycache__/misc.cpython-313.pyc
Binary file not shown.
Binary file not shown.
539 changes: 539 additions & 0 deletions pygad/pygad_modified.py

Large diffs are not rendered by default.

Binary file added pygad/utils/__pycache__/__init__.cpython-313.pyc
Binary file not shown.
Binary file added pygad/utils/__pycache__/crossover.cpython-313.pyc
Binary file not shown.
Binary file added pygad/utils/__pycache__/mutation.cpython-313.pyc
Binary file not shown.
Binary file added pygad/utils/__pycache__/nsga2.cpython-313.pyc
Binary file not shown.
Binary file not shown.
Binary file added pygad/visualize/__pycache__/__init__.cpython-313.pyc
Binary file not shown.
Binary file not shown.
3 changes: 3 additions & 0 deletions test_env.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
print("Python environment is working!")
import numpy
print("NumPy imported successfully!")
23 changes: 23 additions & 0 deletions test_ga.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import sys
sys.path.append('pygad')
import pygad_modified as ga
import numpy

def fitness_func(ga_instance, solution):
return numpy.sum(solution)

print("Creating GA instance...")
try:
ga_instance = ga.GA(
num_generations=10,
num_parents_mating=5,
fitness_func=fitness_func,
sol_per_pop=10,
num_genes=5
)
print("GA instance created successfully!")
print(f"Initial environment: {ga_instance.current_environment}")
except Exception as e:
print(f"Error creating GA instance: {e}")
import traceback
traceback.print_exc()
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.