Skip to content

Latest commit

 

History

History
97 lines (68 loc) · 1.75 KB

README.md

File metadata and controls

97 lines (68 loc) · 1.75 KB

Perti Net

Perti Net

Getting started

This example will create the following P/T_system:

P/T_system

Builder

$builder = new \ziguss\petrinet\PTSystemBuilder();

// places
$p1 = $builder->place(1);
$p2 = $builder->place();
$p3 = $builder->place();
$p4 = $builder->place();

// transitions
$t1 = $builder->transition()->setName('t1');
$t2 = $builder->transition()->setName('t2');
$t3 = $builder->transition()->setName('t3');
$t4 = $builder->transition()->setName('t4');

// connects
$builder->connect($p1, $t1);
$builder->connect($t1, $p2);
$builder->connect($t1, $p3);
$builder->connect($p2, $t2);
$builder->connect($p3, $t3);
$builder->connect($t2, $p4);
$builder->connect($t3, $p4);
$builder->connect($p4, $t4, 2);

// get net system
$net = $builder->getPTSystem();

Fire transition

Let's fire a transition.

// ['t1']
$enabledTransitions = $net->getEnabledTransitions();
$net->fire($enabledTransitions[0]);

After fire t1, we got a new marking:

P/T_system

// ['t2', 't3']
$enabledTransitions = $net->getEnabledTransitions();
$net->fire($t2);

After fire t2, we got another new marking:

P/T_system

// ['t3']
$enabledTransitions = $net->getEnabledTransitions();
$net->fire($enabledTransitions[0]);

Render

Graphviz Render

$render = new \ziguss\petrinet\render\Graphviz();
echo $render->render($net);

The Graphviz render transforms a net into a string in dot format, so you can write the string in a file:

file_put_contents('petrinet.dot', $string);

then

dot -Tpng petrinet.dot -o 4.png

You will obtain this kind of image:

P/T_net