# Start BPTK and automatically read the scenarios found in the scenarios folder
# this also loads all the Python classes referenced in the scenarios, so we are immediately ready
# to run scenarios and plot results.
from BPTK_Py.bptk import bptk
= bptk() bptk
Enterprise Digital Twin
An Enterprise Digital Twin of a Professional Service Firm
Enterprise Digital Twin
We’re currently build a digital twin for transentis and the model here contains the simulation part. Please check our current meetup series on this topic - you can download slides from the meetup and also watch the meetup recordings.
Introduction
Agents
- Consultant. Available or Busy
- Project. acquired->ready->started->fully_staffed->completed
Revenue
- From project assignments
Cost
- Consultant Wages
- Overhead cost
bptk.list_scenarios()
*** smEDT ***
two_consultants
three_consultants
base
interactive
Base Scenario
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["base"],
scenarios="Project Lifecycle",
title=["project"],
agents=["acquired","ready","started","fully_staffed","completed"],
agent_states={
series_names"smEDT_base_project_acquired" : "Acquired",
"smEDT_base_project_ready" : "Ready",
"smEDT_base_project_started" : "Started",
"smEDT_base_project_fully_staffed" : "Fully Staffed",
"smEDT_base_project_completed" : "Completed",
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["base"],
scenarios="Consultants",
title=["consultant"],
agents=["available","busy"],
agent_states={
series_names"smEDT_base_consultant_available" : "Available",
"smEDT_base_consultant_busy" : "Busy"
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["base"],
scenarios="Revenue",
title=["controlling"],
agents=["active"],
agent_states=["revenue"],
agent_properties=["total"]
agent_property_types
)
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["base"],
scenarios="Expenses",
title=["controlling"],
agents=["active"],
agent_states=["expenses"],
agent_properties=["total"]
agent_property_types
)
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["base"],
scenarios="Earnings",
title=["controlling"],
agents=["active"],
agent_states=["earnings"],
agent_properties=["total"]
agent_property_types
)
Two Consultants per Project Scenario
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["two_consultants"],
scenarios="Project Lifecycle",
title=["project"],
agents=["acquired","ready","started","fully_staffed","completed"],
agent_states={
series_names"smEDT_base_project_acquired" : "Acquired",
"smEDT_base_project_ready" : "Ready",
"smEDT_base_project_started" : "Started",
"smEDT_base_project_fully_staffed" : "Fully Staffed",
"smEDT_base_project_completed" : "Completed",
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["two_consultants"],
scenarios="Consultants",
title=["consultant"],
agents=["available","busy"],
agent_states={
series_names"smEDT_base_consultant_available" : "Available",
"smEDT_base_consultant_busy" : "Busy"
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["two_consultants"],
scenarios="Revenue",
title=["controlling"],
agents=["active"],
agent_states=["revenue"],
agent_properties=["total"]
agent_property_types
)
Three Consultants per Project
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["three_consultants"],
scenarios="Project Lifecycle",
title=["project"],
agents=["acquired","ready","started","fully_staffed","completed"],
agent_states={
series_names"smEDT_base_project_acquired" : "Acquired",
"smEDT_base_project_ready" : "Ready",
"smEDT_base_project_started" : "Started",
"smEDT_base_project_fully_staffed" : "Fully Staffed",
"smEDT_base_project_completed" : "Completed",
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["three_consultants"],
scenarios="Consultants",
title=["consultant"],
agents=["available","busy"],
agent_states={
series_names"smEDT_base_consultant_available" : "Available",
"smEDT_base_consultant_busy" : "Busy"
} )
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["three_consultants"],
scenarios="Revenue",
title=["controlling"],
agents=["active"],
agent_states=["revenue"],
agent_properties=["total"]
agent_property_types
)
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["three_consultants"],
scenarios="Accumulated Earnings",
title=["controlling"],
agents=["active"],
agent_states=["accumulated_earnings"],
agent_properties=["total"]
agent_property_types
)
Dashboard
Simple dashboard to experiment with the simulation.
%run src/dashboard.ipy
bptk.plot_scenarios(=["smEDT"],
scenario_managers="area",
kind=["interactive"],
scenarios="Project Lifecycle",
title=["project"],
agents=["acquired","ready","started","fully_staffed","completed"],
agent_states={
series_names"smEDT_base_project_acquired" : "Acquired",
"smEDT_base_project_ready" : "Ready",
"smEDT_base_project_started" : "Started",
"smEDT_base_project_fully_staffed" : "Fully Staffed",
"smEDT_base_project_completed" : "Completed",
} )