728x90
개요
프로세스 모델 검증 방법 중 Footprint 기반의 Conformance Check를 구현하기 위한 코드 스니펫이고 보통 프로세스 모델은 여러가지 노드로 분기될 수 있는데 여기서는 단방향 프로세스 모델을 가정하고 모델과 로그를 모두 리스트로 생성해서 쉽게 작성됨. 즉, 실제 상황에서는 대부분 유효하지 않고, 커버하지 못하는 상황이 많음. 그냥 단방향 모델 상황에서 대략적인 정합도를 볼 수 있다 정도에 의미 부여가 될 듯. 상세한 내용은 레퍼런스 링크를 참고.
코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Check FootPrint Conformance | |
# 모델과 로그 Trace를 리스트로 구현 | |
model = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] | |
log = ['a', 'b', 'c', 'd', 'f', 'g', 'e'] | |
model_list_self = [] | |
log_list_self = [] | |
# 모델 경우의 수 파악 | |
for i in range(0, len(model)-1): | |
next_value = i + 1 | |
if next_value <= len(model)-1: | |
tuple_element = (model[i], model[next_value]) | |
model_list_self.append(tuple_element) | |
else: | |
pass | |
# 로그 경우의 수 파악 | |
for i in range(0, len(log_trace)-1): | |
next_value = i + 1 | |
if next_value <= len(log_trace)-1: | |
tuple_element = (log_trace[i], log_trace[next_value]) | |
log_list_self.append(tuple_element) | |
else: | |
pass | |
same_value = list(set(model_list_self) & set(log_list_self)) | |
model_lst_check = list(set(model_list_self) & set(same_value)) | |
log_lst_check = list(set(log_list_self) & set(same_value)) | |
lst_check = model_lst_check + log_lst_check | |
sum_value = model_list_self + log_list_self | |
len_sum = len(sum_value) | |
# 불일치 경우의 수 파악 | |
len_uncorrected = len(sum_value) - len(lst_check) | |
# Fitness 계산 | |
fitness_value = round((1 - (len_uncorrected / len_sum))*100,0) |
레퍼런스
728x90
'DEV' 카테고리의 다른 글
종료되지 않는 프로그램을 cmd에서 강제 종료하기 (0) | 2020.09.10 |
---|---|
cmd 배치파일 실행 시 콘솔 창 자동 꺼짐 방지 (4) | 2020.09.09 |
pip-autoremove : PIP로 종속 패키지도 같이 삭제하기 (0) | 2020.09.08 |
파이썬 돌리다가 nProtect 때문에 엿먹음 (0) | 2019.06.19 |
Python - Django를 사용하여 DB 불러오기 예제 (2) | 2018.05.18 |
Django 프로젝트 생성 및 세팅 (0) | 2018.05.17 |