Skip to content
This repository has been archived by the owner on Oct 26, 2019. It is now read-only.

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

License

Notifications You must be signed in to change notification settings

jordansimsmith/task-scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Awards

  • First place for fastest sequential execution, averaged over 5 12 node graphs.
  • Third place for best search visualisation

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published