Skip to content

Commit b2677a8

Browse files
committed
Small refactorings to fix (sometimes) failing test
1 parent 55a39c7 commit b2677a8

File tree

9 files changed

+48
-45
lines changed

9 files changed

+48
-45
lines changed

poetry.lock

Lines changed: 28 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "simod"
7-
version = "3.5.13"
7+
version = "3.5.14"
88
authors = ["Manuel Camargo", "Ihar Suvorau", "David Chapela"]
99
description = "Simod is a Python tool for automated discovery of business process simulation models from event logs."
1010

src/simod/extraneous_delays/optimizer.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
)
99
from extraneous_activity_delays.enhance_with_delays import HyperOptEnhancer, DirectEnhancer
1010
from lxml import etree
11+
from pix_framework.filesystem.file_manager import remove_asset
1112

13+
from simod.cli_formatter import print_step
1214
from simod.event_log.event_log import EventLog
1315
from simod.extraneous_delays.types import ExtraneousDelay
1416
from simod.settings.extraneous_delays_settings import ExtraneousDelaysSettings
1517
from simod.simulation.parameters.BPS_model import BPSModel
1618

1719

18-
class ExtraneousDelayTimersOptimizer:
20+
class ExtraneousDelaysOptimizer:
1921
def __init__(
2022
self,
2123
event_log: EventLog,
@@ -42,6 +44,7 @@ def run(self) -> List[ExtraneousDelay]:
4244
timer_placement=TimerPlacement.BEFORE,
4345
simulation_engine=SimulationEngine.PROSIMOS,
4446
)
47+
configuration.PATH_OUTPUTS = self.base_directory
4548
# Discover extraneous delays
4649
simulation_model = _bps_model_to_simulation_model(self.bps_model)
4750
if self.settings.num_iterations > 1:
@@ -60,6 +63,10 @@ def run(self) -> List[ExtraneousDelay]:
6063
) for activity in best_timers
6164
]
6265

66+
def cleanup(self):
67+
print_step(f"Removing {self.base_directory}")
68+
remove_asset(self.base_directory)
69+
6370

6471
def _bps_model_to_simulation_model(bps_model: BPSModel) -> SimulationModel:
6572
parser = etree.XMLParser(remove_blank_text=True)

src/simod/settings/common_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def default() -> "CommonSettings":
8080
Metric.CIRCADIAN_EMD,
8181
Metric.CYCLE_TIME_EMD,
8282
],
83-
clean_intermediate_files=False,
83+
clean_intermediate_files=True,
8484
)
8585

8686
@staticmethod

src/simod/simod.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
HyperoptIterationParams as ControlFlowHyperoptIterationParams,
2727
)
2828
from simod.event_log.event_log import EventLog
29-
from simod.extraneous_delays.optimizer import ExtraneousDelayTimersOptimizer
29+
from simod.extraneous_delays.optimizer import ExtraneousDelaysOptimizer
3030
from simod.extraneous_delays.types import ExtraneousDelay
3131
from simod.extraneous_delays.utilities import add_timers_to_bpmn_model
3232
from simod.prioritization.discovery import discover_prioritization_rules
@@ -61,7 +61,7 @@ class Simod:
6161
# Optimizer for the Resource Model
6262
_resource_model_optimizer: Optional[ResourceModelOptimizer]
6363
# Optimizer for the Extraneous Delay Timers
64-
_extraneous_delay_timers_optimizer: Optional[ExtraneousDelayTimersOptimizer]
64+
_extraneous_delays_optimizer: Optional[ExtraneousDelaysOptimizer]
6565

6666
def __init__(
6767
self,
@@ -234,13 +234,13 @@ def _optimize_resource_model(self) -> ResourceModelHyperoptIterationParams:
234234

235235
def optimize_extraneous_activity_delays(self) -> List[ExtraneousDelay]:
236236
settings = self._settings.extraneous_activity_delays
237-
self._extraneous_delay_timers_optimizer = ExtraneousDelayTimersOptimizer(
237+
self._extraneous_delays_optimizer = ExtraneousDelaysOptimizer(
238238
event_log=self._event_log,
239239
bps_model=self._best_bps_model,
240240
settings=settings,
241241
base_directory=self._extraneous_delays_dir,
242242
)
243-
timers = self._extraneous_delay_timers_optimizer.run()
243+
timers = self._extraneous_delays_optimizer.run()
244244
return timers
245245

246246
def _evaluate_model(self, bps_model: BPSModel, output_dir: Path):
@@ -292,6 +292,8 @@ def _clean_up(self):
292292
print_section("Removing intermediate files")
293293
self._control_flow_optimizer.cleanup()
294294
self._resource_model_optimizer.cleanup()
295+
if self._settings.extraneous_activity_delays is not None:
296+
self._extraneous_delays_optimizer.cleanup()
295297

296298

297299
def _export_canonical_model(

src/simod/simulation/parameters/BPS_model.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,3 @@ def to_json(self, output_dir: Path, process_name: str) -> Path:
189189
json.dump(self.to_dict(), f)
190190

191191
return json_parameters_path
192-
193-
# TODO
194-
# Implement default method to discover a complete BPS model from scratch.
195-
# It receives the training+validation log and it discovers a first direct
196-
# attempt, this would be the Prosimos CRISP method, and then SIMOD iterates
197-
# overriding each parameter.

tests/assets/configuration_simod_with_extraneous.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ resource_model:
4141
participation: 0.4
4242
extraneous_activity_delays:
4343
optimization_metric: relative_emd
44-
num_iterations: 3
44+
num_iterations: 1 # Direct discovery, no optimization

tests/assets/configuration_simod_with_model_and_extraneous.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ resource_model:
2929
participation: 0.4
3030
extraneous_activity_delays:
3131
optimization_metric: relative_emd
32-
num_iterations: 3
32+
num_iterations: 1 # Direct discovery, no optimization

tests/test_simod.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
"expect_prioritization_rules": False,
2323
},
2424
{
25-
"name": "Simod extraneous",
25+
"name": "Simod with model",
2626
"config_file": "configuration_simod_with_model.yml",
2727
"expect_extraneous": False,
2828
"expect_batching_rules": False,
2929
"expect_prioritization_rules": False,
3030
},
3131
{
32-
"name": "Simod extraneous",
32+
"name": "Simod with model & extraneous",
3333
"config_file": "configuration_simod_with_model_and_extraneous.yml",
3434
"expect_extraneous": True,
3535
"expect_batching_rules": False,

0 commit comments

Comments
 (0)