GithubHelp home page GithubHelp logo

res550 / task-scheduler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jordansimsmith/task-scheduler

0.0 1.0 0.0 501 KB

This project is about using artificial intelligence (AI) and parallel processing power to solve a difficult scheduling problem.

License: GNU General Public License v3.0

Java 97.60% CSS 2.40%

task-scheduler's Introduction

Task Scheduler - Group 13

This project is about using artificial intelligence (AI) and parallel processing power to solve a difficult scheduling problem. In its general form, this scheduling problem belongs to the class of so called NP-hard problems.

CircleCI

task_scheduler

How to build the project

The project was developed in Java, using Maven as a build tool. Run mvn package to ensure dependencies, run unit tests and package the runnable jar file. The runnable jar will be located at target/task-scheduler-1.0-SNAPSHOT.jar.

How to run the project

java −jar scheduler.jar INPUT.dot P [OPTION]
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.dot output file is named OUTPUT.dot (default is INPUT−output.dot)

To run the project, ensure you have Oracle JDK 8 installed. Refer to the help message above for command line arguments. The project is developed to run on Linux, specifically the UoA lab computer builds. For visualisation, make sure you have mpstat (from the sysstat package) installed if running in another Linux environment.

Project documentation

Please refer to the project Wiki for comprehensive documentation regarding the development of this project. Key areas of the wiki are linked below.

Project boards, issue tracking and pull requests were used to aid project management. Please refer to the links below.

Notes regarding the user interface

task_scheduler_ui

Features

  • Input Graph: This panel is a visual representation of the input graph provided by the user.
  • Current Schedule: This panel represents the schedule that is currently being considered by the scheduling algorithm. It will continue to change until the optimal schedule is found. Each task can be clicked on to show its parents and children's locations on the current schedule. Please refer to the above image for an example.
  • States Searched: This panel provides information on the algorithm's progress. This includes the algorithms state (running/finished), the time elapsed, and the proportion of the total search space processed. This proportion is shown by the pie graph on the left hand side, and is log transformed to provide a clearer visual indication.
  • CPU/Memory: These panels show the current performance of the hardware while Task Scheduler is active.

Performance Disclaimer

When the user interface is enabled (-v flag), Task Scheduler throttles/uses a less intensive algorithm to provide a smoother user experience.

If timing is critical, please run the program without visualisation enabled.

Team members

Name GitHub Username UoA UPI
Reshad Contractor res550 Rcon954
Harrison Leach HarrisonLeach1 Hlea849
Nidhinesh Nand nidhineshnand Nnan773
Jed Robertson JedLJRobertson Jrob928
Jordan Sim-Smith jordansimsmith Jsim862

task-scheduler's People

Contributors

jordansimsmith avatar nidhineshnand avatar jedljrobertson avatar harrisonleach1 avatar res550 avatar

Watchers

James Cloos 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.