Skip to content

Commit ed516c8

Browse files
committed
addition of parsers arguments is now in different file. Algorithm.execute now takes arguments.
1 parent ece67c7 commit ed516c8

File tree

3 files changed

+53
-29
lines changed

3 files changed

+53
-29
lines changed

algorithm/algorithm.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33

44

55
class Algorithm:
6-
76
@staticmethod
8-
def execute(data):
7+
def execute(data, n, m, e, nep, nsp, ngh, iterations):
98

109
"""
1110
Pomaga myslenie o rozwiazaniach jako o kwiatkach. Kazda pszczola siedzi w danym momencie na jednym konkretnym
@@ -21,18 +20,10 @@ def execute(data):
2120
max_iter - liczba iteracji
2221
"""
2322

24-
n = 25
25-
m = 9
26-
e = 3
27-
nep = 9
28-
nsp = 3
29-
ngh = 1
30-
max_iter = 1000
31-
3223
# inicjalizujemy pule losowymi rozwiazaniami
3324
pool = [AlgorithmUtils.random_solution(data) for _ in range(n)]
3425

35-
for i in range(max_iter):
26+
for i in range(iterations):
3627
print("Iter ", i)
3728

3829
# dla kazdego rozwiazania obliczamy wynik - ukladamy je od najlepszych do najgorszych
@@ -54,11 +45,11 @@ def execute(data):
5445
for gs in good_solutions:
5546
pool.append(AlgorithmUtils.best_in_neighbourhood(data, gs, ngh, nsp))
5647
# dla pszczol ktore byly slabe wybieramy dla nich nowe, calkowicie losowe rozwiazania (leca gdzie indziej)
57-
for _ in range(n-m):
48+
for _ in range(n - m):
5849
pool.append(AlgorithmUtils.random_solution(data))
5950

60-
# podsumowujac - jesli np. n=5, m=3, e=1, to zawsze na koniec iteracji 1 pszczola pochodzi z obszaru
61-
# elitarnego, 2 z dobrych, a 2 sa losowane od nowa.
51+
# podsumowujac - jesli np. n=5, m=3, e=1, to zawsze na koniec iteracji 1 pszczola pochodzi z obszaru
52+
# elitarnego, 2 z dobrych, a 2 sa losowane od nowa.
6253

6354
pool = sorted(pool, key=lambda s: calculate_score(data, s), reverse=True)
6455
return pool[0]

main.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import time
22
from argparse import ArgumentParser
3-
from os.path import join
4-
5-
from os import getcwd
63

74
from algorithm.algorithm import Algorithm
85
from parsers.input_parser import parse_input
96
from parsers.output_builder import save_solution
7+
from utils.argument_parser_util import add_parser_arguments
108
from utils.solution_checker import check_solution
119

1210

1311
def main():
14-
input_file = args.i
15-
output_file = args.o
12+
input_file, output_file = args.i, args.o
13+
n, m, e = args.n, args.m, args.e
14+
nep, nsp, ngh = args.nep, args.nsp, args.ngh
15+
iterations = args.max
1616

1717
before = time.time()
18-
best_solution = Algorithm.execute(parse_input(input_file))
18+
best_solution = Algorithm.execute(parse_input(input_file), n, m, e, nep, nsp, ngh, iterations)
1919
save_solution(best_solution, output_file)
2020
score = check_solution(input_file, output_file)
2121
after = time.time()
@@ -29,14 +29,6 @@ def main():
2929

3030
if __name__ == "__main__":
3131
parser = ArgumentParser(description="Distributed cache problem solver.")
32-
33-
default_input_filename = "me_at_the_zoo.in"
34-
parser.add_argument("-i", "-input_file", help="Path to input file.", type=str,
35-
default=join(getcwd(), "files", default_input_filename))
36-
37-
default_output_filename = "solution.out"
38-
parser.add_argument("-o", "-output_file", help="Path to output file.", type=str,
39-
default=join(getcwd(), "files", default_output_filename))
40-
32+
add_parser_arguments(parser)
4133
args = parser.parse_args()
4234
main()

utils/argument_parser_util.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from os.path import join
2+
3+
from os import getcwd
4+
5+
6+
def add_parser_arguments(parser):
7+
default_input_filename = "me_at_the_zoo.in"
8+
parser.add_argument("-i", "-input_file", help="Path to input file.", type=str,
9+
default=join(getcwd(), "files", default_input_filename))
10+
11+
default_output_filename = "solution.out"
12+
parser.add_argument("-o", "-output_file", help="Path to output file.", type=str,
13+
default=join(getcwd(), "files", default_output_filename))
14+
15+
default_n = 25
16+
parser.add_argument("-n", "-bees", help="Amount of bees.", type=int,
17+
default=default_n)
18+
19+
default_m = 9
20+
parser.add_argument("-m", "-good_solutions", help="Amount of good solutions.", type=int,
21+
default=default_m)
22+
23+
default_e = 3
24+
parser.add_argument("-e", "-elite_solutions", help="Amount of elite solutions.", type=int,
25+
default=default_e)
26+
27+
default_nep = 9
28+
parser.add_argument("-nep", help="???", type=int,
29+
default=default_nep)
30+
31+
default_nsp = 3
32+
parser.add_argument("-nsp", help="???", type=int,
33+
default=default_nsp)
34+
35+
default_ngh = 1
36+
parser.add_argument("-ngh", help="Neighborhood radius.", type=int,
37+
default=default_ngh)
38+
39+
default_max_iter = 1000
40+
parser.add_argument("-max", "-iterations", help="Amount of iterations.", type=int,
41+
default=default_max_iter)

0 commit comments

Comments
 (0)