Automatic Discovery of Network Generators
Java R Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


What is it?

Synthetic is a machine learning tool that can be used to discover plausible generators for complex networks. Generators are simple computer programs that control the growth of a network from the bottom-up, in a similar fashion to the processes believed to underlie the emergence of many different types of networks, be them biological, social or technological.

Generators are useful as network growth models, both for their potentially explanatory and predictive powers. In a way, this tool automates the scientific method. It creates and refines hypothesis, and tests them against real data, in a process that leads to increasingly plausible models.

Programs are represented in a very simple language that is suitable both for humans and the machine learning process. The machine learning algorithm used is Genetic Programming, belonging to the family of Evolutionary Algorithms, which are inspired by Darwinian evolution. Programs are subject to random variations, much like the genetic material in biological entities. The programs with the highest quality survive, leading to an ongoing refinement of the growth model.

For a more complete explanation see this article and this blog post.

Installation and usage

Check the wiki

Related publications

Menezes, T. and Roth, C., Symbolic regression of generative network models, Scientific Reports 4 (2014)


This work has been partially supported by grants funded by the French National Agency of Research, “Algopol” ANR-12-CORD- 0018.