James is a bachelor of science student at University of Wisconsin Madison. In his fourth year of undergraduate work, he will be studying applied math, physics and computer science. He is busy thinking of a way that can combine theories from these areas together to build a powerful algorithm. He is also doing machine learning to improve speed and accuracy for the Tox21 challenge. Also he is pursuing a PhD degree and hopes to decide his research focus in the near future.
Computational Essay: Demystify Agriculture in United States
Project: Implement Petri Net
Petri net is a mathematical modeling language for the description of distributed systems. It is a directed bipartite graph in which the nodes represent transitions (i.e. events that may occur, represented by squares) and places (i.e. conditions, represented by circles). The directed arcs describe which places are pre- and/or postconditions for which transitions (signified by arrows). Arcs run from a place to a transition or vice versa, never between places or between transitions. This project is going to be to write a package to visualize a Petri net and make further analysis on the math model it presents.
Summary of Results
Visualization and animation of the Petri net, given the correct data structure and initial condition. The creation of three different user interfaces to simplify input for building Petri net, including general input, chemical reactions and system of transitions. The application of a Petri net for modeling analysis in mathematics and computer science (Lotka–Volterra equations, concurrency problems related to CPU scheduling). Functions for the reachability, k-boundedness and liveness of a Petri net, given places, current state and transition rules.
Currently, more needs to be improved for the user interface and visualization so that it is easier for the user to use the Petri net package and fetch data from it. Also, some functions for mathematical properties can be added, such as discussions on liveness, deadlock and compatibility. Petri net is very useful because it is inherently graphical and good at representing concurrency, and some interesting properties of nets can be expressed in terms of reachability. I hope more can be added to make the Petri net package more powerful.