PuLP is a mathematical programming modelling library written in Python.

PuLP can generate MPS or LP files and call GLPK, COIN, CPLEX, or GUROBI to solve linear problems. PuLP requires Python 2.5 or greater, and the documentation is available at here. PuLP is released under the MIT license.

The beauty of PuLP is its expressive syntax, it includes the COIN solver, and its ability to dereference your code from a specific solver.


The Gurobi Optimizer is a state-of-the-art solver for mathematical programming.

It includes solvers for; linear programming models (LP), quadratic programming models (QP), quadratically constrained programming models (QCP), mixed-integer linear programming models (MILP), mixed-integer quadratic programming models (MIQP), and mixed-integer quadratically constrained programming models (MIQCP).

Gurobi offers a broad range of interfaces (including Python making it very easy to use with Tropofy), access to industry-standard modeling languages, flexible licensing together with transparent pricing, and outstanding, easy to reach, support.


LocalSolver is the first math programming software combining the simplicity of use of a model-and-run solver and the power of local-search techniques for combinatorial optimization.

Having declared your optimization model using mathematical operators, LocalSolver will provide you with high-quality solutions in very short running times without any tuning. Relying on local search, LocalSolver is able to scale up to 10 million binary decision variables, running on standard computers. LocalSolver is particularly suited for solving large-scale real-life combinatorial problems arising in business and industry.


Python is a programming language that lets you work more quickly and integrate your systems more effectively.

You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. Python runs on Windows, Linux/Unix, Mac OS X, and has been ported to the Java and .NET virtual machines. Python is free to use, even for commercial products, because of its OSI-approved open source license.

One of the key reasons behind pythons success is the standard library which covers everything from asynchronous processing to zip files.


SciPy is a Python-based ecosystem of open-source software for mathematics, science, and engineering.

The core packages list includes: NumPy - Base N dimensional array package, SciPy libarary - Fundamental library for scientific computing, MatPlotLib - Comprehensive 2D Plotting, IPython - Enhanced Interactive Console, Sympy - Symbolic mathematics and Pandas - Data structures & analysis


One Dimension Stock Cutting
This app solves the problem of cutting stock lengths to satisfy varied customer orders minimising waste i.e. cutting steel beams. The core of the app uses PuLP and the workflow combines simple grids with pie and stacked column charts.
Bulk Facility Storage Optimiser
This app solves the problem of choosing an optimal set of leasing contracts for different types of storage to maximise revenue i.e. renting out bulk storage. The core of the app uses PuLP and the workflow combines simple grids with an area, pie and column charts.
Facility Location Optimisation
This app solves the problem of deciding which facilities to commission to serve a geographically dispersed demand minimising a combination of transportation and capital costs. The core of the app uses PuLP and the workflow combines simple grids, pie charts and a KML map.
Sudoku Solver
No problem solving related toolkit is complete without a sudoku solver worked example! The core of the app uses PuLP (an implementation using Gurobi's Python interface is also provided) and the workflow uses simple grids.
Travelling Salesman Solver
Finds the shortest path connecting a given set of locations such that all locations are visted once. The core of the app uses Gurobi's Python interface and the workflow uses simple grids and a KML map.
Staff Rostering Optimiser
This app solves a simple rostering problem where staff, paid differing amounts indicate availability to cover a given workload. -The core of the app uses Gurobi's Python interface and the workflow uses simple grids a timeline, pie and column charts.
Network Flow Optimiser
This app solves what is called a multi commodity network flow problem. Multiple product types must be moved within a network with specific supply and demand amounts sharing capacity on transportation arcs to minimise transportation cost. The core of the app uses Gurobi's Python interface and the workflow uses simple grids, column charts and KML maps.
Diet Selection Optimiser
This app takes a set of nutritional targets, a selection of foods with different nutritional content and their costs and chooses a selection of food servings to meet the nutritional targets at minimum cost. The problem solved is often referred to as the classic diet model. The core of the app uses Gurobi's Python interface and the workflow uses simple grids, and some simple charts.
Assembly Line Sequencing Optimiser
This online tool solves a sequencing problem commonly found in assembly line production. The problem involves determining a sequence for a set of items that are assembled at different stations in an assembly line such that the capacity for any station across a given subset of the items being assembled is not exceeded. The core of the app uses LocalSolver and the workflow uses simple grids.
Max Weighted Cut Solver
This app solves the Max Weighted Cut problem, in a geographic setting. Given a set of locations (nodes), and a set of numerical relationships between locations (weighted arcs), allocate the locations into two groups, such that the sum of the relationships between locations in different groups is maximised. The core of the app uses LocalSolver and the workflow uses simple grids, maps, and charts.
Knapsack Optimiser
This app solves the well known Knapsack problem. Given a set of items with weights and values, and a 'knapsack' that can hold a certain weight, allocate items to the knapsack, such that the value of the items contained within is maximised. The core of the app uses LocalSolver and the workflow uses simple grids, and charts.
Minimum Spanning Tree Solver
This app generates a minimum spanning tree, using Kruskal's algorithm, for a given road network. The input is a road network, described using intersections and their adjacent roads. The output is a minimum spanning tree based on road length. The core of the app uses C++ and the workflow uses simple grids, and maps.
Batch Geocoding
This app takes a given set of addresses and determine their latitude and longitude by calling an external web service. This app is written in simple Python and the workflow uses simple grids and a KML map
KML Generation
This app creates a KML file to display a set of locations and lines on a map. This app is written in simple Python and the workflow uses simple grids and a KML map
Election Results Dashboard
This app packages up some previous Australian federal election results and displays them using a KML map and a range of pie and column charts.
Linear Regression with R
This app shows how to interface to R, the well known statistical computing package, with a Tropofy App. The workflow uses simple grids and a scatter chart.
SciPy, NumPy, and Matplotlib: 3D plots
This app demonstrates using SciPy, NumPy and Matplotlib with a Tropofy App. The workflow uses simple grids and a static image generated by Matplotlib.
Seating Planner
This app solves an event seating allocation problem, which maximises the overall satisfaction of guests. The core of the app uses PuLP and the workflow uses simple grids and a range of charts.
Zombie Outbreak
Zombies zombie zombiesZombies zombies Zombies. This lighthearted app uses Scipy, NumPy and Matplotlib to model a Zombie outbreak. You can model a range of different scenarios depending on the Zombie Outbreak that is affecting you! The workflow uses simple grids and a static image generated by Matplotlib.