-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathn_queen.py
62 lines (46 loc) · 2.12 KB
/
n_queen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
################################################################
# Date: 20 Aug 2022
# Author: Izcar J. Muñoz Torrez
# --------------------------------------------------------------
# ____ ____ _
# / __ \ | _ \ | |
# | | | |_ __ ___ _ __ | |_) |_ _| |_ ___
# | | | | '_ \ / _ \ '_ \ | _ <| | | | __/ _ \
# | |__| | |_) | __/ | | | | |_) | |_| | || __/
# \____/| .__/ \___|_| |_| |____/ \__, |\__\___|
# | | __/ |
# |_| |___/
# --------------------------------------------------------------
################################################################
from genetic_algorithm import MUTATION_PROBABILITY_CONST, N_QUEEN_CONST, GeneticAlgorithm
import argparse
from datetime import datetime
from utils import brand, formatter_side_by_side
INITIAL_POPULATION_CONST = 100
GENERATIONS_CONST = 100
def main():
parser = argparse.ArgumentParser(description='Genetic Algorithm')
parser.add_argument('-n', '--n-queen', type=int, default=N_QUEEN_CONST,
help='Number of queens')
parser.add_argument('-p', '--population', type=int, default=INITIAL_POPULATION_CONST,
help='Population size')
parser.add_argument('-m', '--mutation-probability', type=int, default=MUTATION_PROBABILITY_CONST,
help='Mutation probability')
parser.add_argument('-g', '--generations', type=int, default=GENERATIONS_CONST,
help='Number of generations')
args = parser.parse_args()
n_queen = GeneticAlgorithm(args.population, args.n_queen, args.mutation_probability)
## start time
try:
start_time = datetime.now()
n_queen.solve(args.generations)
except KeyboardInterrupt:
print("\nInterrupted", end="\n")
finally:
end_time = datetime.now()
duration = 'Duration: {}'.format(end_time - start_time)
text = f'{duration}\n{n_queen}'
text = formatter_side_by_side(brand, text)
print(text)
if '__main__':
main()