diff --git a/Frontend/export/elog.csv b/Frontend/export/elog.csv index 9e9b0e81c09b31b796a037debe276ae307f41986..d1837965b700e593f3577cf2f211b88d6034186e 100644 --- a/Frontend/export/elog.csv +++ b/Frontend/export/elog.csv @@ -1,40 +1,24 @@ CaseID,Activity,StartTimestamp,EndTimestamp -0,place order,0.0,2.0 -1,place order,2.0,4.0 -2,place order,4.0,6.0 -0,arrange standard order,6.0,18.0 -1,arrange standard order,6.0,17.0 -2,arrange custom order,6.0,34.0 -3,place order,13.0,15.0 -3,arrange custom order,15.0,43.0 -1,pick from stock C,17.0,47.0 -0,pick from stock A,18.0,48.0 -4,place order,24.0,26.0 -4,arrange custom order,26.0,53.0 -2,manufacture A,34.0, -5,place order,37.0,39.0 -5,arrange custom order,39.0,59.0 -3,manufacture B,43.0, -1,pack A,47.0,64.0 -0,pack A,48.0,64.0 -6,place order,52.0,54.0 -4,manufacture A,54.0, -6,arrange standard order,54.0,64.0 -5,manufacture B,59.0, -1,attempt delivery B,64.0, -0,attempt delivery B,64.0, -6,pick from stock A,64.0,77.0 -7,place order,66.0,68.0 -7,arrange custom order,68.0,89.0 -8,place order,77.0,79.0 -6,pack B,79.0,98.0 -8,arrange custom order,79.0,99.0 -9,place order,89.0,91.0 -7,manufacture B,91.0, -9,arrange custom order,91.0, -6,attempt delivery A,98.0, -8,manufacture A,99.0, -10,place order,104.0,106.0 -10,arrange custom order,106.0, -11,place order,115.0,117.0 -11,arrange standard order,117.0, +0,place order,2023-07-07 16:41,2023-07-07 16:43 +1,place order,2023-07-07 16:43,2023-07-07 16:43 +2,place order,2023-07-07 16:45,2023-07-07 16:43 +0,arrange custom order,2023-07-07 16:47,2023-07-07 17:08 +1,arrange custom order,2023-07-07 16:47,2023-07-07 17:04 +2,arrange custom order,2023-07-07 16:47,2023-07-07 17:02 +3,place order,2023-07-07 16:54,2023-07-07 16:43 +3,arrange custom order,2023-07-07 16:56,2023-07-07 17:10 +4,place order,2023-07-07 17:04,2023-07-07 16:43 +2,manufacture B,2023-07-07 17:08, +4,arrange standard order,2023-07-07 17:08,2023-07-07 16:54 +1,manufacture B,2023-07-07 17:10, +0,manufacture A,2023-07-07 17:14, +5,place order,2023-07-07 17:18,2023-07-07 16:43 +5,arrange standard order,2023-07-07 17:20,2023-07-07 16:51 +4,pick from stock C,2023-07-07 17:21, +3,manufacture B,2023-07-07 17:25, +6,place order,2023-07-07 17:30,2023-07-07 16:43 +5,pick from stock A,2023-07-07 17:32,2023-07-07 16:57 +6,arrange custom order,2023-07-07 17:32, +7,place order,2023-07-07 17:41,2023-07-07 16:43 +7,arrange standard order,2023-07-07 17:43, +5,pack C,2023-07-07 17:48, diff --git a/Frontend/export/elog.xes b/Frontend/export/elog.xes index 527a4928d6eb6ab72fca7cbb844880e1ff186911..f5392211ec31c1a88fd746b492ce7f2506656e80 100644 --- a/Frontend/export/elog.xes +++ b/Frontend/export/elog.xes @@ -3,301 +3,185 @@ <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="0.0" /> - <int key="EndTimestamp" value="2" /> + <string key="StartTimestamp" value="2023-07-07 16:41" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="0" /> </event> </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="2.0" /> - <int key="EndTimestamp" value="4" /> + <string key="StartTimestamp" value="2023-07-07 16:43" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="1" /> </event> </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="4.0" /> - <int key="EndTimestamp" value="6" /> + <string key="StartTimestamp" value="2023-07-07 16:45" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="2" /> </event> </trace> <trace> <event> - <string key="Activity" value="arrange standard order" /> - <float key="StartTimestamp" value="6.0" /> - <int key="EndTimestamp" value="18" /> + <string key="Activity" value="arrange custom order" /> + <string key="StartTimestamp" value="2023-07-07 16:47" /> + <string key="EndTimestamp" value="2023-07-07 17:08" /> <int key="CaseID" value="0" /> </event> </trace> <trace> <event> - <string key="Activity" value="arrange standard order" /> - <float key="StartTimestamp" value="6.0" /> - <int key="EndTimestamp" value="17" /> + <string key="Activity" value="arrange custom order" /> + <string key="StartTimestamp" value="2023-07-07 16:47" /> + <string key="EndTimestamp" value="2023-07-07 17:04" /> <int key="CaseID" value="1" /> </event> </trace> <trace> <event> <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="6.0" /> - <int key="EndTimestamp" value="34" /> + <string key="StartTimestamp" value="2023-07-07 16:47" /> + <string key="EndTimestamp" value="2023-07-07 17:02" /> <int key="CaseID" value="2" /> </event> </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="13.0" /> - <int key="EndTimestamp" value="15" /> + <string key="StartTimestamp" value="2023-07-07 16:54" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="3" /> </event> </trace> <trace> <event> <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="15.0" /> - <int key="EndTimestamp" value="43" /> + <string key="StartTimestamp" value="2023-07-07 16:56" /> + <string key="EndTimestamp" value="2023-07-07 17:10" /> <int key="CaseID" value="3" /> </event> </trace> - <trace> - <event> - <string key="Activity" value="pick from stock C" /> - <float key="StartTimestamp" value="17.0" /> - <int key="EndTimestamp" value="47" /> - <int key="CaseID" value="1" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="pick from stock A" /> - <float key="StartTimestamp" value="18.0" /> - <int key="EndTimestamp" value="48" /> - <int key="CaseID" value="0" /> - </event> - </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="24.0" /> - <int key="EndTimestamp" value="26" /> - <int key="CaseID" value="4" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="26.0" /> - <int key="EndTimestamp" value="53" /> + <string key="StartTimestamp" value="2023-07-07 17:04" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="4" /> </event> </trace> <trace> <event> - <string key="Activity" value="manufacture A" /> - <float key="StartTimestamp" value="34.0" /> + <string key="Activity" value="manufacture B" /> + <string key="StartTimestamp" value="2023-07-07 17:08" /> + <string key="EndTimestamp" value=" " /> <int key="CaseID" value="2" /> </event> </trace> <trace> <event> - <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="37.0" /> - <int key="EndTimestamp" value="39" /> - <int key="CaseID" value="5" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="39.0" /> - <int key="EndTimestamp" value="59" /> - <int key="CaseID" value="5" /> + <string key="Activity" value="arrange standard order" /> + <string key="StartTimestamp" value="2023-07-07 17:08" /> + <string key="EndTimestamp" value="2023-07-07 16:54" /> + <int key="CaseID" value="4" /> </event> </trace> <trace> <event> <string key="Activity" value="manufacture B" /> - <float key="StartTimestamp" value="43.0" /> - <int key="CaseID" value="3" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="pack A" /> - <float key="StartTimestamp" value="47.0" /> - <int key="EndTimestamp" value="64" /> + <string key="StartTimestamp" value="2023-07-07 17:10" /> + <string key="EndTimestamp" value=" " /> <int key="CaseID" value="1" /> </event> </trace> <trace> <event> - <string key="Activity" value="pack A" /> - <float key="StartTimestamp" value="48.0" /> - <int key="EndTimestamp" value="64" /> + <string key="Activity" value="manufacture A" /> + <string key="StartTimestamp" value="2023-07-07 17:14" /> + <string key="EndTimestamp" value=" " /> <int key="CaseID" value="0" /> </event> </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="52.0" /> - <int key="EndTimestamp" value="54" /> - <int key="CaseID" value="6" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="manufacture A" /> - <float key="StartTimestamp" value="54.0" /> - <int key="CaseID" value="4" /> + <string key="StartTimestamp" value="2023-07-07 17:18" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> + <int key="CaseID" value="5" /> </event> </trace> <trace> <event> <string key="Activity" value="arrange standard order" /> - <float key="StartTimestamp" value="54.0" /> - <int key="EndTimestamp" value="64" /> - <int key="CaseID" value="6" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="manufacture B" /> - <float key="StartTimestamp" value="59.0" /> + <string key="StartTimestamp" value="2023-07-07 17:20" /> + <string key="EndTimestamp" value="2023-07-07 16:51" /> <int key="CaseID" value="5" /> </event> </trace> <trace> <event> - <string key="Activity" value="attempt delivery B" /> - <float key="StartTimestamp" value="64.0" /> - <int key="CaseID" value="1" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="attempt delivery B" /> - <float key="StartTimestamp" value="64.0" /> - <int key="CaseID" value="0" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="pick from stock A" /> - <float key="StartTimestamp" value="64.0" /> - <int key="EndTimestamp" value="77" /> - <int key="CaseID" value="6" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="66.0" /> - <int key="EndTimestamp" value="68" /> - <int key="CaseID" value="7" /> + <string key="Activity" value="pick from stock C" /> + <string key="StartTimestamp" value="2023-07-07 17:21" /> + <string key="EndTimestamp" value=" " /> + <int key="CaseID" value="4" /> </event> </trace> <trace> <event> - <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="68.0" /> - <int key="EndTimestamp" value="89" /> - <int key="CaseID" value="7" /> + <string key="Activity" value="manufacture B" /> + <string key="StartTimestamp" value="2023-07-07 17:25" /> + <string key="EndTimestamp" value=" " /> + <int key="CaseID" value="3" /> </event> </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="77.0" /> - <int key="EndTimestamp" value="79" /> - <int key="CaseID" value="8" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="pack B" /> - <float key="StartTimestamp" value="79.0" /> - <int key="EndTimestamp" value="98" /> + <string key="StartTimestamp" value="2023-07-07 17:30" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> <int key="CaseID" value="6" /> </event> </trace> <trace> <event> - <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="79.0" /> - <int key="EndTimestamp" value="99" /> - <int key="CaseID" value="8" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="89.0" /> - <int key="EndTimestamp" value="91" /> - <int key="CaseID" value="9" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="manufacture B" /> - <float key="StartTimestamp" value="91.0" /> - <int key="CaseID" value="7" /> + <string key="Activity" value="pick from stock A" /> + <string key="StartTimestamp" value="2023-07-07 17:32" /> + <string key="EndTimestamp" value="2023-07-07 16:57" /> + <int key="CaseID" value="5" /> </event> </trace> <trace> <event> <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="91.0" /> - <int key="CaseID" value="9" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="attempt delivery A" /> - <float key="StartTimestamp" value="98.0" /> + <string key="StartTimestamp" value="2023-07-07 17:32" /> + <string key="EndTimestamp" value=" " /> <int key="CaseID" value="6" /> </event> </trace> - <trace> - <event> - <string key="Activity" value="manufacture A" /> - <float key="StartTimestamp" value="99.0" /> - <int key="CaseID" value="8" /> - </event> - </trace> <trace> <event> <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="104.0" /> - <int key="EndTimestamp" value="106" /> - <int key="CaseID" value="10" /> - </event> - </trace> - <trace> - <event> - <string key="Activity" value="arrange custom order" /> - <float key="StartTimestamp" value="106.0" /> - <int key="CaseID" value="10" /> + <string key="StartTimestamp" value="2023-07-07 17:41" /> + <string key="EndTimestamp" value="2023-07-07 16:43" /> + <int key="CaseID" value="7" /> </event> </trace> <trace> <event> - <string key="Activity" value="place order" /> - <float key="StartTimestamp" value="115.0" /> - <int key="EndTimestamp" value="117" /> - <int key="CaseID" value="11" /> + <string key="Activity" value="arrange standard order" /> + <string key="StartTimestamp" value="2023-07-07 17:43" /> + <string key="EndTimestamp" value=" " /> + <int key="CaseID" value="7" /> </event> </trace> <trace> <event> - <string key="Activity" value="arrange standard order" /> - <float key="StartTimestamp" value="117.0" /> - <int key="CaseID" value="11" /> + <string key="Activity" value="pack C" /> + <string key="StartTimestamp" value="2023-07-07 17:48" /> + <string key="EndTimestamp" value=" " /> + <int key="CaseID" value="5" /> </event> </trace> </log> diff --git a/Frontend/main.py b/Frontend/main.py index 19ddaa6ee7021bf959cc228e69dac84a3b322826..84103775f4f7d0429e659a09a9619128a861018f 100644 --- a/Frontend/main.py +++ b/Frontend/main.py @@ -62,7 +62,6 @@ def upload_file(): flash('No files selected! Please select a file!') return redirect(url_for('index')) - print(uploaded_file.filename) return redirect(url_for('case_id', filename = uploaded_file.filename)) """ @@ -114,7 +113,7 @@ def case_id(filename): for file in os.listdir('static/'): if file.startswith('preview_net'): # not to remove other images os.remove('static/' + file) - + result = int(previewid) petrinet.decorate_petri_net(result, filename) diff --git a/Frontend/static/net.png b/Frontend/static/net.png index 47374c3b39d077726a86c86caabe3849804176e9..48f3ad6198131b342e3deb8aa4e14f2ecbf7d60a 100644 Binary files a/Frontend/static/net.png and b/Frontend/static/net.png differ diff --git a/Frontend/static/preview_net.png b/Frontend/static/preview_net.png index e9e1ae8ef4d28370396c97f0fbaeaa900e606207..adbb778101183b46d13e9b84ad1fceb9ed8fc3c0 100644 Binary files a/Frontend/static/preview_net.png and b/Frontend/static/preview_net.png differ diff --git a/Frontend/upload/elog (10).csv b/Frontend/upload/elog (10).csv new file mode 100644 index 0000000000000000000000000000000000000000..1b119c821cfa7bcf4cd9a31bd692a1a87533af2e --- /dev/null +++ b/Frontend/upload/elog (10).csv @@ -0,0 +1,22 @@ +CaseID,Activity,StartTimestamp,EndTimestamp +0,place order,2023-07-07 16:41,2023-07-07 16:43 +1,place order,2023-07-07 16:43,2023-07-07 16:43 +2,place order,2023-07-07 16:45,2023-07-07 16:43 +0,arrange custom order,2023-07-07 16:47,2023-07-07 17:02 +1,arrange custom order,2023-07-07 16:47,2023-07-07 17:03 +2,arrange custom order,2023-07-07 16:47,2023-07-07 17:04 +3,place order,2023-07-07 16:54,2023-07-07 16:43 +3,arrange custom order,2023-07-07 16:56,2023-07-07 17:11 +4,place order,2023-07-07 17:07,2023-07-07 16:43 +0,manufacture B,2023-07-07 17:09, +1,manufacture B,2023-07-07 17:09, +4,arrange custom order,2023-07-07 17:09,2023-07-07 17:11 +2,manufacture B,2023-07-07 17:10, +5,place order,2023-07-07 17:20,2023-07-07 16:43 +5,arrange custom order,2023-07-07 17:22,2023-07-07 17:01 +3,manufacture B,2023-07-07 17:26, +6,place order,2023-07-07 17:34,2023-07-07 16:43 +6,arrange custom order,2023-07-07 17:36, +4,manufacture B,2023-07-07 17:39, +5,manufacture B,2023-07-07 17:42, +7,place order,2023-07-07 17:47, diff --git a/Frontend/upload/elog (9).csv b/Frontend/upload/elog (9).csv new file mode 100644 index 0000000000000000000000000000000000000000..f7a6a6f17cc433ec98837ec56586cabd067975f2 --- /dev/null +++ b/Frontend/upload/elog (9).csv @@ -0,0 +1,9 @@ +CaseID,Activity,StartTimestamp,EndTimestamp +0,place order,2023-07-07 17:28,2023-07-07 17:30 +1,place order,2023-07-07 17:30,2023-07-07 17:30 +2,place order,2023-07-07 17:32,2023-07-07 17:30 +0,arrange custom order,2023-07-07 17:34, +1,arrange custom order,2023-07-07 17:34, +2,arrange custom order,2023-07-07 17:34, +3,place order,2023-07-07 17:38,2023-07-07 17:30 +3,arrange custom order,2023-07-07 17:40, diff --git a/backend/__pycache__/eventlog.cpython-311.pyc b/backend/__pycache__/eventlog.cpython-311.pyc index d23f62934404a8db52bb3bba4747d3ac032974a5..b01a5e7294cb4d2e0635882277acb4c49dc6091e 100644 Binary files a/backend/__pycache__/eventlog.cpython-311.pyc and b/backend/__pycache__/eventlog.cpython-311.pyc differ diff --git a/backend/__pycache__/simplesimmodel.cpython-311.pyc b/backend/__pycache__/simplesimmodel.cpython-311.pyc index fdc763fd02a7702af9867c104369289548f43dac..ebc60eb64288c41e6615808803a79c5a522b4589 100644 Binary files a/backend/__pycache__/simplesimmodel.cpython-311.pyc and b/backend/__pycache__/simplesimmodel.cpython-311.pyc differ diff --git a/backend/eventlog.py b/backend/eventlog.py index 99cd63e9b7307426803ebada0afa85db6f49c5fc..b08f5c5aed7aaa43e07abba24a1c348eccbf1522 100644 --- a/backend/eventlog.py +++ b/backend/eventlog.py @@ -24,12 +24,13 @@ from pm4py.objects.log.obj import Event from pm4py.objects.log.exporter.xes import exporter as xes_exporter from pm4py.objects.log.importer.xes import importer as xes_importer import os +import datetime import simplesimmodel as model from businessprocess import BusinessProcess -def add_start_event(process, event_id, case_id, activity, start_timestamp): +def add_start_event(process, event_id, case_id, activity, start): """Add the start of an event to the event log of a process. Parameters @@ -40,30 +41,35 @@ def add_start_event(process, event_id, case_id, activity, start_timestamp): the unique case-id of a case activity : str the name of the activity - start_timestamp : float + start : float the relative start time of the event """ + + start_timestamp = current_time + datetime.timedelta(minutes = start) + process.event_log.append(event_id) process.event_log[event_id] = { 'CaseID': case_id, 'Activity': activity, - 'StartTimestamp': float(start_timestamp), - 'EndTimestamp': None + 'StartTimestamp': start_timestamp.strftime('%Y-%m-%d %H:%M'), + 'EndTimestamp': " " } process.event_counter += 1 -def add_end_event(process, event_id, end_timestamp): +def add_end_event(process, event_id, duration): """Add the end of an event to the event log of a process. Parameters ---------- event_id : int the unique id of the event - end_timestamp : float - the relative end time of the event + duartion : float + the complete duration of the event """ + event = process.event_log[event_id] - event['EndTimestamp'] = end_timestamp + end_timestamp = current_time + datetime.timedelta(minutes = duration) + event['EndTimestamp'] = end_timestamp.strftime('%Y-%m-%d %H:%M') def export_to_csv(process, file_path): """Export the event log of a process simulation to .csv. @@ -134,9 +140,7 @@ def convert_to_dataframe(name): # file_path = r"Frontend/upload/" + name #docker file_path = r"upload/" + name - print(name) file_extension = os.path.splitext(file_path)[1].lower() - print(file_extension) if file_extension == '.csv': event_log_df = pd.read_csv(file_path) @@ -154,6 +158,7 @@ def convert_to_dataframe(name): event_log_df = pd.DataFrame(event_data) else: print(f"Unsupported file type: {file_extension}") + return None # print(event_log_df) return event_log_df @@ -193,12 +198,24 @@ def format_check(name): if activity not in allowed_activities: return False + res = True + start = event['StartTimestamp'] - if not isinstance(start, float): + print(start) + try: + bool(datetime.datetime.strptime(start, '%Y-%m-%d %H:%M')) + except ValueError: + res = False + if not res and not (start == " " or start == None): return False end = event['EndTimestamp'] - if not isinstance(end, float): + print(end) + try: + bool(datetime.datetime.strptime(end, '%Y-%m-%d %H:%M')) + except ValueError: + res = False + if not res and not (end == " " or end == None): return False return True @@ -404,6 +421,8 @@ def generate_event_log(time): env = simpy.Environment() business_process = BusinessProcess(env, ressources) business_process.event_log_flag = True + global current_time + current_time = datetime.datetime.now() - datetime.timedelta(minutes = time) env.process(model.run_process(env, business_process)) env.run(until = time) # export to both formats diff --git a/backend/simplesimmodel.py b/backend/simplesimmodel.py index 640160ff4b2edef990215ef3423da757edc881c4..f721c518b6bfb0fc2913ee16ab75e4435bb2649a 100644 --- a/backend/simplesimmodel.py +++ b/backend/simplesimmodel.py @@ -128,12 +128,14 @@ def execute_case(env, case, process): # if the event_log_flag is set add the event to the log if process.event_log_flag: event_counter = process.event_counter - log.add_start_event(process, event_counter, case, "place order", env.now) + start = env.now + log.add_start_event(process, event_counter, case, "place order", start) yield env.process(process.place_order()) # do the activity if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) # if the last action was made from the agent set the process flag to be able to return to the environment's step function @@ -159,10 +161,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "arrange standard order", env.now) yield env.process(process.arrange_standard_order()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -176,10 +180,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "arrange custom order", env.now) yield env.process(process.arrange_custom_order()) - if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + if process.event_log_flag: + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -206,10 +212,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pick from stock A", env.now) yield env.process(process.pick_from_stock_a()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -221,10 +229,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pick from stock B", env.now) yield env.process(process.pick_from_stock_b()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -236,10 +246,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pick from stock C", env.now) yield env.process(process.pick_from_stock_c()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -251,10 +263,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "manufacture A", env.now) yield env.process(process.manufacture_a()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -266,10 +280,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "manufacture B", env.now) yield env.process(process.manufacture_b()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -287,10 +303,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pack A", env.now) yield env.process(process.pack_a()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -302,10 +320,11 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pack B", env.now) yield env.process(process.pack_b()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False @@ -318,10 +337,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "pack C", env.now) yield env.process(process.pack_c()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -338,10 +359,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "attempt delivery A", env.now) yield env.process(process.attempt_delivery_a()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -353,10 +376,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "attempt delivery B", env.now) yield env.process(process.attempt_delivery_b()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -368,10 +393,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "attempt delivery C", env.now) yield env.process(process.attempt_delivery_c()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) if case_obj.agent: process.flag = False with process.system.request() as request: @@ -387,10 +414,12 @@ def execute_case(env, case, process): yield request if process.event_log_flag: event_counter = process.event_counter + start = env.now log.add_start_event(process, event_counter, case, "order completed", env.now) yield env.process(process.order_completed()) if process.event_log_flag: - log.add_end_event(process, event_counter, env.now) + duration = env.now - start + log.add_end_event(process, event_counter, duration) # remove the case from the active cases since it's now done