======================
Evolutionary Petri Net
======================

*Evolutionary Petri Nets* (EPN) is a convenient tool for the automatic 
inference, optimization, and reverse engineering of Petri Nets (PNs). The 
library exploits the evolutionary computation methodology described in [1].

WARNING: this is a preliminary alpha release.

EPN can be used as follows:
	
	#!/usr/bin/env python

	from epn.hpn import *
	from epn.evolpn import *
	from epn.basic import *

	POPULATION = 10

	E = EvolutionaryPetriNet()
	E.setPopulationSize(POPULATION)
	E.useTournament(size=2)
	E.setIterations(100)
	for p in range(POPULATION):
		p = HiddenPetriNet("H"+str(p))
		E.addHPN(p)
		E.mutate()
	E.setFitnessFunction( ... )
	E.Optimize()
	
EPN can produce output figures of the PNs by using the dot/graphviz library. 
For this reason, EPN relies on the external library pydot. The current state
of the whole EPN can be outputted with the following command:

	E.dumpToFile("output.png")


Basics
======

EPNs does not directly handle PNs, but it exploits an extended class named 
*Hidden Petri Net* (HPN). A population of HPNs undergoes an evolutionary 
process, in which the best individuals are iteratively modified and improved
by means of crossover and mutation operators. The evolutive pressure is driven
by a user-defined fitness function.

The programmer is given the freedom of choosing 

* the population size;

* one of the selection mechanism (roulette wheel, ranking, tournament);

* the maximum number of iterations;

* the pre- and post-order of transitions (see [1] for further information).


Thanks also to
--------------

EPNs have been developed by a joint effort of M.S. Nobile and G. Mauri 
(University of Milan-Bicocca, Italy), D. Besozzi (University of Milan, Italy) 
and P. Cazzaniga (University of Bergamo, Italy).

Further information:

[1] Nobile, Besozzi, Cazzaniga and Mauri, "The Foundations of Evolutionary
Petri Nets", Proceedings of the 4th International Workshop on Biological 
Processes & Petri Nets (BioPPN 2013), a satellite event of PETRI NETS 2013
(G. Balbo and M. Heiner, eds.), CEUR Workshop Proceedings Vol. 988, 60-74, 2013

<http://www.disco.unimib.it/go/45712>`_