Skip to content

Program to calculate maximum flows in flow networks. The project implements Dinic's augmenting path algorithm and Goldberg-Tarjan's push-relabel algorithm with a comprehensive GUI and several example networks.

Notifications You must be signed in to change notification settings

ChristianGebhardt/MFA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MFA

The repository contains a program to calculate maximum flows in flow networks. The project implements Dinic's augmenting path algorithm and Goldberg-Tarjan's push-relabel algorithm with a comprehensive GUI and several example networks.

A documentation about all classes is included in the subfolder doc and can be accessed via the website https://christiangebhardt.github.io/MFA/.

To run the program:

  • Install git on the computer and chose a project folder
  • Checkout the GitHub project:
    • open a git bash in the project folder (right click > 'Git Bash Here')
    • initialize the repository with the command:git init
    • clone the repository with the command:git clone https://github.com/ChristianGebhardt/MFA.git
  • Install a Java runtime environment (JRE) - minimum version required: 1.7.0
  • Run the EXE-file MFA.exe (double click or console command MFA.exe)
  • Alternative: Run the JAR-file MFA.jar (double click or console command java MFA.jar)

The screen should support a minimum resolution of 1200 x 800 to display the user interface correctly. The user interface shows some help information at the start of the program ('Getting started'). They can be reloaded with the help menu item. The program includes an example flow network that can be loaded.

To develop the program with Eclipse:

  • Install git on the computer and chose a project folder
  • Checkout the GitHub project:
    • open a git bash in the project folder (right click > 'Git Bash Here')
    • initialize the repository with the command:git init
    • clone the repository with the command:git clone https://github.com/ChristianGebhardt/MFA.git
  • Install a Java development kit (JDK) - minimum version required: 1.7.0, recommended version: 1.8.0
  • Install Eclipse - minimum version required: 4.2 (Juno), recommended version: 4.6 (Neon)
  • Open the project in Eclipse: 'File' > 'Open project from file system ...'

Overview over the included folders:

  • src: The source files of the code and ressource files for the program
    • package de.lmu.ifi.mfa contains the model with the implementation of the maximum flow algorithms
    • package de.lmu.ifi.mfa_gui contains a graphical user interface to manipulate the model and apply the maximum flow algorithms
    • class Main.java is the main class of the program that starts the program
    • folder resources contains an example flow network and icons for the program
  • doc: The javadoc documentation of the packages and classes
  • lib: The 'JGraphX Swing Component - Java Graph Visualization Library' for the flow network visualization
  • examples: Some template flow networks to test the maximum flow algorithms
    • thesis_example.mfa default example of the thesis (total flow: F=7)
    • large_network.mfa example with more than 20 vertices (total flow: F=8)
    • dense_graph.mfa example with arc circuits (total flow: F=6)

Version: 1.0.1 Author: Christian Gebhardt Date: 2016-09-03


Further Information:

The MFA-project is part of the bachelor thesis "Efficient Transport System Scheduling based on Maximum Flow Algorithms" by Christian Gebhardt submitted at the Institute of Informatics at LMU Munich (submission date: 2016-09-27).

The thesis can be accessed via the link https://www.cip.ifi.lmu.de/~gebhardta/publication/thesis_mfa.pdf.

About

Program to calculate maximum flows in flow networks. The project implements Dinic's augmenting path algorithm and Goldberg-Tarjan's push-relabel algorithm with a comprehensive GUI and several example networks.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages