Code

Spatially Embedded Random Networks (SERNS)

A SERN is a natural generalisation of a random network, taking into account that many physical networks are embedded in space, and longer links are more costly, and hence less likely.

We’ve been doing some work on SERNs for a little while. Here’s a few relevant links.

Reuleaux triangles

A Reuleaux triangle is the shape you get, starting from an equilateral triangle, and adding three circular arcs, drawn from each corner. It’s not actually a triangle, but what’s in a name?

The interesting thing is that a Reuleaux triangle is a shape of constant width. That means it can be used as a roller (but not a wheel). The animation below shows this – we can see that although the centre of the triangle moves up and down, the top surface of the rotating triangle is always level.

Rolling Reuleaux Triangle

Follow the link below to see more, get links to 3D printable versions, and Matlab code to play with it.

Metagraphs

Metagraphs are a generalisation of graphs (or networks) similar in nature to a directed hypergraph.

  • A hypergraph allows an “edge” to connect more than one node.
  • Directionality means that an edge can connect one set of objects to another difference set.

The main difference in a metagraph is that edges come associate with properties, even properties that are conditional on other parts to the graph, making them ideal to represent policies.

Open Computer Code

Links to code from projects or math topics. conSERN: fast generation of Spatially Embedded Random Networks (SERNs). mgtoolkit: a Python toolkit for Metagraphs. LinePicking: code for solving the Line Picking problem. AutoNetkit: Automated network configuration toolkit Topology Zoo: a project to collect and transcribe data network topologies from around the world. COLD: network topology synthesis. SAIL: Statistically Accurate Internet Loss Measurements. Roulette code is available from GitHub, or via the Zip file listed below.

Sea Shells

There are a large variety of sea-shells (and land shells) that can be simply described by rotating a ellipse around a log-spiral that has been projected onto a cone. The image below was generated using this approach:



Roulettes

A Roulette is a curve derived by rolling one curve against another. In the image below, the blue point on the blue ellipse is rolled along a straight line (the x-axis) to generate the purple curve (which is called an undularly).

roulette

Included here is some Matlab code to generate roulette curves, with a fair degree of generality, but also showing how to generate specific instances such as cycloids, trochoids, the Cissoid of Dioclese, and the undularly and nodary.

COLD

The Combined Optimization and Layered Design (COLD) Algorithm is used to synthesise data network topologies.

It uses a Genetic Algorithm to optimise the PoP-level structure of a network, then uses Generalised Graph Products to synthesise a router level network.

AutoNetkit

AutoNetkit: Automated Network Configuration: Construct your network from a topology diagram, add protocols, automatically allocate IP addresses, and generate configuration files with templates. Deploy to emulated networks and measure the results, with live visual feedback of design and measurement steps. Go to the AutoNetkit page for more details.

SAIL

Statistically Accurate Internet Loss Measurements (SAIL)

This project focusses on a rigorous statistical method to analyse the results of loss measurements. SAIL uses algorithms from Hidden Semi-Markov Models to estimate the parameters of the real loss process from measurement. It then computes the real loss rate and its variance. SAIL is light-weight and runs in linear time (on the number of samples). You can find the code to perform the analysis, and the data we used in our paper (as well as links to the papers), on the SAIL web page.