/
auzubarev
/
time-process
Обзор
Документация
Войти
/
auzubarev
/
time-process
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/parser.py
46 строк
2 KB
Alex Zubarev
first_commit
15 фев 2026, 12:18
15 фев 2026, 12:18
3390c17
Код
Авторство
О чём код?
import random import xml.etree.ElementTree as ET def parse_pnml(file_path): tree = ET.parse(file_path) root = tree.getroot() net = { "places": [], "transitions": [], "arcs": [], "initial_marking": {} } for page in root.findall('.//{*}page'): for p in page.findall('{*}place'): p_id = p.get('id') net["places"].append(p_id) initial = p.find('{*}initialMarking/{*}text') if initial is not None: net["initial_marking"][p_id] = int(initial.text) else: net["initial_marking"][p_id] = 0 for t in page.findall('{*}transition'): net["transitions"].append(t.get('id')) for a in page.findall('{*}arc'): src = a.get('source') tgt = a.get('target') net["arcs"].append((src, tgt)) return net def generate_tpn(file_path, time_variants = [(0, 0), (0, 1), (1, 1)]): net = parse_pnml(file_path) in_arcs = {t: [] for t in net["transitions"]} out_arcs = {t: [] for t in net["transitions"]} for src, target in net["arcs"]: if target in net["transitions"]: in_arcs[target].append(src) elif src in net["transitions"]: out_arcs[src].append(target) intervals = {} random.seed(2115) for t in net["transitions"]: intervals[t] = random.choice(time_variants) net["in_arcs"] = in_arcs net["out_arcs"] = out_arcs net["intervals"] = intervals return net