-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWriter.py
More file actions
78 lines (69 loc) · 2.67 KB
/
Writer.py
File metadata and controls
78 lines (69 loc) · 2.67 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from dataclasses import dataclass
@dataclass
class Writer:
"""
Realiza a escrita em um arquivo.
Args:
output_file (str): Diretório do arquivo de saída.
k_value (int): A quantidade máxima de rótulos distintos.
archs (dict): Os arcos utilizados no modelo.
labels (dict): Os rótulos utilizados no modelo.
subtour (dict): Os 'subtours' utilizados no modelo.
math_model (str): O modelo matemático do modelo.
optimal_solution (float): A solução ótima do modelo.
"""
output_file: str
k_value: int
archs: dict
labels: dict
subtour: dict
math_model: str
optimal_solution: float
def write(self):
"""Faz a escrita em um arquivo."""
try:
with open(self.output_file, "w", encoding="utf-8") as file:
# Variáveis dos arcos e os seus valores.
archs_vars = ""
for arch in self.archs.values():
archs_vars += f"{str(arch)} = {arch.solution_value()}\n"
# Variáveis dos rótulos e os seus valores.
labels_vars = ""
for label in self.labels.values():
labels_vars += f"{str(label)} = {label.solution_value()}\n"
# Variáveis dos 'subtours' e seus valores.
subtour_vars = ""
for sbt in self.subtour.values():
subtour_vars += f"{str(sbt)} = {sbt.solution_value()}\n"
file.write(
f"{'#' * 25} SAÍDA {'#' * 25}"
+ "\n\n"
+ f"{'#' * 25} SOLUÇÃO ÓTIMA {'#' * 25}"
+ "\n"
+ str(self.optimal_solution)
+ "\n\n"
+ f"{'#' * 25} VARIÁVEIS DOS ARCOS E SEUS VALORES {'#' * 25}"
+ "\n"
+ archs_vars
+ "\n"
+ f"{'#' * 25} VARIÁVEIS DOS RÓTULOS E SEUS VALORES {'#' * 25}"
+ "\n"
+ labels_vars
+ "\n"
+ f"{'#' * 25} VARIÁVEIS DOS 'SUBTOURS' {'#' * 25}"
+ "\n"
+ subtour_vars
+ "\n"
# (Opcional)
# + f"{'#' * 25} MODELO MATEMÁTICO {'#' * 25}"
# + "\n"
# + self.math_model
# + "\n"
)
# Fecha o arquivo.
file.close()
except FileNotFoundError:
raise FileNotFoundError
def __post_init__(self):
"""Inicializa os demais atributos."""
self.write()