Giter Club home page Giter Club logo

306's Introduction

SOFTENG 306 Project 1

CircleCI Team-02 Logo

This project aims to develop a fast algorithm to solve optimal task scheduling on multiple processors. We have implemented three different algorithms, DFS branch-and-bound, A* and a parallel version of DFS branch-and-bound. DFSBnB is typically used for its higher speed in testing and low memory usage. Parallel DFSBnB is used when multiple processors are specified by the user. These algorithms all run on a allocation-ordering (AO) search space. To find schedules, tasks are first allocated to a processor. Then, the tasks on each processor are ordered to form a valid schedule.

The Team

We are Team-02 (also known as Team 2).

Name UPI Github Username
Liam Caldwell lcal259 ljcnz
Nisarag Bhatt nbha702 FocalChord
Timo van Veenendaal tvan508 timovv
Tony Liu tliu818 Minus20Five
William Li wli213 williamlixu
William Li zli667 TwelveHertz

Project Setup

  1. Clone the repo:
https://github.com/timovv/306.git
  1. Import as Gradle project in Intellij (preferably enable auto-import)
  2. Install Lombok Intellij plugin
  3. Run the following Gradle task:
./gradlew generateGrammarSource

Or, just run ./gradlew assemble

Building

To build an executable jar, run

./gradlew clean shadowJar

The jar will be placed in build/libs/.

Usage

To execute, just run java -jar <jarname.jar> [options...]

The appliation accepts a number of command-line parameters.

Usage: java -jar <project.jar> INPUT.dot P [OPTIONS]
 
INPUT.dot (A task graph with integer weights in dot format) 
P (Number of processors to schedule the INPUT graph on.) 

Optional: 
-p N (Use N cores for execution in parallel (default is sequential).) 
-v (Visualise the search.) 
-o OUTPUT (Output file is named OUTPUT (default is INPUT-output.dot).)

Visualisation

Visualisation Running the program with the -v flag enables the visualisation. The visulisation shows useful statistics as the algorithm is running, such as the number of allocations and orderings checked and the best schedule found so far.

Useful Documentation

306's People

Contributors

timovv avatar williamlixu avatar minusome avatar focalchord avatar zywilliamli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.