728x90
연구를 하다 보면 실험을 위해 프로세스 모델로부터 시뮬레이션을 통해서 이벤트 로그를 만들어 내야하는(play-out) 경우가 생긴다. 아직 documentation이 안 되어 있어서 몰랐는데, (몰라서 ProM으로 100번 반복하고 그랬다 ㅎㅎ..) 오늘 코드를 뒤져보니 PM4Py에도 Simulation 코드가 있었다. 이번 포스팅에서는 PM4Py를 이용해서 프로세스 모델로 부터 simulation log를 generate하는 방법에 대해 알아보겠다.
* 이 포스팅은 pm4py version 1.2.2를 기준으로 작성되었다.
1. 우선, log를 만들어내고 싶은 petri net을 만든다.
import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.alpha import factory as alpha_miner
log = xes_importer.import_log(os.path.join("input_data", "running-example.xes")) # 괄호 안에 원하는 파일의 경로를 쓴다.
net, im, fm = alpha_miner.apply(log)
2. 이 petri net에 대해 simulation을 통해 log를 generate한다.
from pm4py.algo.simulation.playout import factory as sim_factory
log = sim_factory.apply(net, im, parameters={"noTraces": 200})
이 때, 사용될 수 있는 parameter는 다음과 같다.
- noTraces: generate할 log의 trace 개수 (default = 100)
- maxTraceLength: trace의 최대 이벤트 개수 (default = 100)
3. log가 제대로 만들어졌는지 확인하기 위해 다음 코드를 입력한다.
print(len(log))
print(log[0])
len(log)가 설정한 noTraces와 같게 (설정하지 않았다면 100) 나오고, log[0]에 trace가 print되면 성공이다.
이번 포스팅에서는 페트리 넷으로부터 시뮬레이션 이벤트 로그를 만들어내는 방법에 대해 알아보았다. 이는 많은 모델들을 시뮬레이션을 통해 검증해야 할 때나 비교해야 할 때에 유용하게 활용될 수 있을 것이다.
300x250
최근댓글