Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .github/workflows/simod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
timeout-minutes: 120
strategy:
matrix:
python-version: [ '3.9' ]
python-version: [ '3.11' ]
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -121,7 +121,7 @@ jobs:
if: github.ref == 'refs/heads/master'
strategy:
matrix:
python-version: [ '3.9' ]
python-version: [ '3.11' ]
environment:
name: PyPI
url: https://pypi.org/p/simod
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ the [Prosimos](https://github.com/AutomatedProcessImprovement/Prosimos) simulato

| Dependency | Version | Notes |
|------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------|
| Python | 3.9 | For Windows, [Python 3.9.13](https://www.python.org/downloads/release/python-3913/) is the last distribution with Windows installers. |
| Python | 3.11 | For Windows, [Python 3.9.13](https://www.python.org/downloads/release/python-3913/) is the last distribution with Windows installers. |
| Java | 1.8 | For example, use [Amazon Corretto 8](https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html). |
| Poetry | latest | If using Docker or compiling from source, use [Poetry](https://python-poetry.org/) for building, installing, and managing Python dependencies. |

Expand Down
60 changes: 30 additions & 30 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "simod"
version = "5.1.6"
version = "5.2.0"
authors = [
"Ihar Suvorau <ihar.suvorau@gmail.com>",
"David Chapela <david.chapela@ut.ee>",
Expand All @@ -15,40 +15,40 @@ readme = "README.md"
packages = [{ include = "simod", from = "src" }]

[tool.poetry.dependencies]
python = "^3.9,<3.12"
click = "^8.1.3"
hyperopt = "^0.2.7"
lxml = "^5.3.0"
matplotlib = "^3.6.0"
networkx = "^3.2.1"
numpy = "^1.24.23"
pandas = "^2.1.0"
pendulum = "^3.0.0"
pydantic = "^2.3.0"
python-dotenv = "^1.0.0"
python-multipart = "^0.0.12"
pytz = "^2024.2"
PyYAML = "^6.0"
requests = "^2.28.2"
scipy = "^1.13.0"
python = ">=3.11,<3.13"
click = "^8.4.2"
hyperopt = "^0.3.0"
lxml = "^6.1.1"
matplotlib = "^3.11.1"
networkx = "^3.6.1"
numpy = "^2.4.6"
pandas = "^2.3.3"
pendulum = "^3.2.0"
pydantic = "^2.13.4"
python-dotenv = "^1.2.2"
python-multipart = "^0.0.32"
pytz = "^2026.3"
PyYAML = "^6.0.3"
requests = "^2.34.2"
scipy = "^1.17.1"
statistics = "^1.0.3.5"
tqdm = "^4.64.1"
xmltodict = "^0.13.0"
prosimos = "^2.0.6"
extraneous-activity-delays = "^2.1.21"
tqdm = "^4.70.0"
xmltodict = "^1.0.4"
prosimos = "^2.1.0"
extraneous-activity-delays = "^2.3.0"
openxes-cli-py = "^0.1.15"
pix-framework = "^0.13.17"
log-distance-measures = "^2.0.0"
pix-framework = "^0.15.0"
log-distance-measures = "^2.2.0"

[tool.poetry.group.dev.dependencies]
pytest = "^7.1.3"
pytest-cov = "^4"
pytest = "^9.0.1"
pytest-cov = "^7.0.0"
memory-profiler = "^0.61.0"
pylint = "^2.17.4"
setuptools = "^67.8.0"
seaborn = "^0.12.2"
pytest-benchmark = "^4.0.0"
snakeviz = "^2.2.0"
pylint = "^4.0.3"
setuptools = "^80.9.0"
seaborn = "^0.13.2"
pytest-benchmark = "^5.2.3"
snakeviz = "^2.2.2"

[tool.poetry.scripts]
simod = "simod.cli:main"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
version: 5
version: 5.2
##########
# Common #
##########
common:
# Path to the event log in CSV format
train_log_path: ../../event_logs/BPIC_2012_W_train.csv.gz
train_log_path: ../../event_logs/AcademicCredentials_train.csv.gz
# Event log to evaluate the discovered BPS model with
test_log_path: ../../event_logs/BPIC_2012_W_test.csv.gz
test_log_path: ../../event_logs/AcademicCredentials_test.csv.gz
# Specify the name for each of the columns in the CSV file (XES standard by default)
log_ids:
case: "case_id"
Expand All @@ -23,10 +23,31 @@ common:
- absolute_event_distribution
- relative_event_distribution
- circadian_event_distribution
- circadian_workforce_distribution
- arrival_event_distribution
- cycle_time_distribution
# Whether to discover case attributes or not
discover_data_attributes: false
######################
# Case Arrival model #
######################
case_arrival:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: arrival_event_distribution
# Number of optimization iterations over the search space
num_iterations: 5
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 3
# Whether to simulate the arrival times using the distribution of inter-arrival times observed in the training log,
# or fitting a parameterized probabilistic distribution (e.g., norm, expon) with these observed values.
use_observed_arrival_distribution: false
# When fitting a probabilistic distribution, threshold used to filter out outliers in the sample of inter-arrival
# times observed in the training event log (fixed or range between two floats). Increasing the outlier threshold
# increases the "range" of accepted values, thus, potentially decreasing the number of observations considered
# an outlier.
outlier_threshold:
- 5.0
- 50.0
#################
# Preprocessing #
#################
Expand All @@ -40,7 +61,7 @@ control_flow:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: two_gram_distance
# Number of optimization iterations over the search space
num_iterations: 30
num_iterations: 40
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 5
# Methods for discovering gateway probabilities
Expand Down Expand Up @@ -77,7 +98,7 @@ resource_model:
# Resource profiles configuration
resource_profiles:
# Resource profile discovery type
discovery_type: pool
discovery_type: differentiated
# Time granularity (in minutes) for the resource calendar (the higher the density of events in the log, the smaller the granularity can be)
granularity: 60
# Minimum confidence of the intervals in the discovered calendar (of a resource or set of resources)
Expand All @@ -89,4 +110,4 @@ resource_model:
- 0.05
- 0.5
# Participation of a resource in the process to discover a calendar for them (gathered together otherwise)
participation: 0.4
participation: 0.4
109 changes: 109 additions & 0 deletions resources/config/benchmark/AcademicCredentials_diff_extr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
version: 5.2
##########
# Common #
##########
common:
# Path to the event log in CSV format
train_log_path: ../../event_logs/AcademicCredentials_train.csv.gz
# Event log to evaluate the discovered BPS model with
test_log_path: ../../event_logs/AcademicCredentials_test.csv.gz
# Use this process model and skip its discovery
process_model_path: ../../../outputs/AcademicCredentials_diff/best_result/AcademicCredentials_train.bpmn
# Specify the name for each of the columns in the CSV file (XES standard by default)
log_ids:
case: "case_id"
activity: "activity"
resource: "resource"
start_time: "start_time"
end_time: "end_time"
# Number of evaluations of the discovered BPS model
num_final_evaluations: 10
# Metrics to evaluate the discovered BPS model
evaluation_metrics:
- 3_gram_distance
- 2_gram_distance
- absolute_event_distribution
- relative_event_distribution
- circadian_event_distribution
- circadian_workforce_distribution
- arrival_event_distribution
- cycle_time_distribution
# Whether to discover case attributes or not
discover_data_attributes: false
######################
# Case Arrival model #
######################
case_arrival:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: arrival_event_distribution
# Number of optimization iterations over the search space
num_iterations: 5
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 3
# Whether to simulate the arrival times using the distribution of inter-arrival times observed in the training log,
# or fitting a parameterized probabilistic distribution (e.g., norm, expon) with these observed values.
use_observed_arrival_distribution: false
# When fitting a probabilistic distribution, threshold used to filter out outliers in the sample of inter-arrival
# times observed in the training event log (fixed or range between two floats). Increasing the outlier threshold
# increases the "range" of accepted values, thus, potentially decreasing the number of observations considered
# an outlier.
outlier_threshold:
- 5.0
- 50.0
#################
# Preprocessing #
#################
preprocessing:
multitasking: false
enable_time_concurrency_threshold: 0.5
################
# Control-flow #
################
control_flow:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: two_gram_distance
# Number of optimization iterations over the search space
num_iterations: 1
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 1
# Methods for discovering gateway probabilities
gateway_probabilities: discovery
##################
# Resource model #
##################
resource_model:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: circadian_emd
# Number of optimization iterations over the search space
num_iterations: 40
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 5
# Whether to discover prioritization or batching behavior
discover_prioritization_rules: false
discover_batching_rules: false
# Resource profiles configuration
resource_profiles:
# Resource profile discovery type
discovery_type: differentiated
# Time granularity (in minutes) for the resource calendar (the higher the density of events in the log, the smaller the granularity can be)
granularity: 60
# Minimum confidence of the intervals in the discovered calendar (of a resource or set of resources)
confidence:
- 0.5
- 0.85
# Minimum support of the intervals in the discovered calendar (of a resource or set of resources)
support:
- 0.05
- 0.5
# Participation of a resource in the process to discover a calendar for them (gathered together otherwise)
participation: 0.4
#####################
# Extraneous delays #
#####################
extraneous_activity_delays:
# Method to compute the extraneous delay (naive or eclipse-aware)
discovery_method: eclipse-aware
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: relative_emd
# Number of optimization iterations over the search space (1 = direct discovery, no optimization stage)
num_iterations: 20
92 changes: 92 additions & 0 deletions resources/config/benchmark/AcademicCredentials_fuzz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
version: 5.2
##########
# Common #
##########
common:
# Path to the event log in CSV format
train_log_path: ../../event_logs/AcademicCredentials_train.csv.gz
# Event log to evaluate the discovered BPS model with
test_log_path: ../../event_logs/AcademicCredentials_test.csv.gz
# Use this process model and skip its discovery
process_model_path: ../../../outputs/AcademicCredentials_diff/best_result/AcademicCredentials_train.bpmn
# Specify the name for each of the columns in the CSV file (XES standard by default)
log_ids:
case: "case_id"
activity: "activity"
resource: "resource"
start_time: "start_time"
end_time: "end_time"
# Number of evaluations of the discovered BPS model
num_final_evaluations: 10
# Metrics to evaluate the discovered BPS model
evaluation_metrics:
- 3_gram_distance
- 2_gram_distance
- absolute_event_distribution
- relative_event_distribution
- circadian_event_distribution
- circadian_workforce_distribution
- arrival_event_distribution
- cycle_time_distribution
# Whether to discover case attributes or not
discover_data_attributes: false
######################
# Case Arrival model #
######################
case_arrival:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: arrival_event_distribution
# Number of optimization iterations over the search space
num_iterations: 5
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 3
# Whether to simulate the arrival times using the distribution of inter-arrival times observed in the training log,
# or fitting a parameterized probabilistic distribution (e.g., norm, expon) with these observed values.
use_observed_arrival_distribution: false
# When fitting a probabilistic distribution, threshold used to filter out outliers in the sample of inter-arrival
# times observed in the training event log (fixed or range between two floats). Increasing the outlier threshold
# increases the "range" of accepted values, thus, potentially decreasing the number of observations considered
# an outlier.
outlier_threshold:
- 5.0
- 50.0
#################
# Preprocessing #
#################
preprocessing:
multitasking: false
enable_time_concurrency_threshold: 0.5
################
# Control-flow #
################
control_flow:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: two_gram_distance
# Number of optimization iterations over the search space
num_iterations: 1
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 1
# Methods for discovering gateway probabilities
gateway_probabilities: discovery
##################
# Resource model #
##################
resource_model:
# Metric to guide the optimization process (loss function to minimize)
optimization_metric: circadian_emd
# Number of optimization iterations over the search space
num_iterations: 40
# Number of times to evaluate each iteration (using the mean of all of them)
num_evaluations_per_iteration: 5
# Whether to discover prioritization or batching behavior
discover_prioritization_rules: false
discover_batching_rules: false
# Resource profiles configuration
resource_profiles:
# Resource profile discovery type
discovery_type: differentiated_fuzzy
# Time granularity (in minutes) for the resource calendar (the higher the density of events in the log, the smaller the granularity can be)
granularity: 60
fuzzy_angle:
- 0.1
- 0.9
Loading
Loading