필자는 Windows 10 시스템에 pygraphviz를 설치할 수 없었습니다. 임시 해결책으로 FSM의 상태와 전환을 별도의 그래프에 저장하려고합니다. 예 :파이썬 전환 : FSM의 가능한 모든 전환을 그래프로 매핑하는 방법
from transitions import Machine
from graphviz import Digraph
class Matter(object):
pass
# The states
states=['hungry', 'satisfied', 'full', 'sick']
# And some transitions between states.
transitions = [
{ 'trigger': 'eat', 'source': 'hungry', 'dest': 'satisfied' },
{ 'trigger': 'eat', 'source': 'satisfied', 'dest': 'full' },
{ 'trigger': 'eat', 'source': 'full', 'dest': 'sick' },
{ 'trigger': 'rest', 'source': ['satisfied', 'full', 'sick'], 'dest':
'hungry' }]
# Initialize
machine = Matter()
fsm = Machine(machine, states=states, transitions=transitions, initial=states[0])
dot = Digraph(comment='FSM')
src = machine.state
for event in transitions:
machine.trigger(event['trigger'])
dst = machine.state
dot.edge(src,dst,event['trigger'])
src = dst
print (dot)
여기 내 그래프는 가능한 모든 전환을 포함하지 않으며 순차 전환 만 포함합니다.
출력 :
digraph {
hungry -> satisfied [label=eat]
satisfied -> full [label=eat]
full -> sick [label=eat]
sick -> hungry [label=rest]
}
당신은 여러 상태 전이 그래프에 존재하지 않는 볼 수 있듯이. 모든 전환을 트리거하여 그래프에 저장할 수있는 방법이 있습니까? 아니면이 모든 작업을 수행 할 수있는 사용자 지정 코드를 작성해야합니까?