The purpose of this project is to create a system that schedules a set of tasks onto an arbitrary number of processors. The input is in the form of a .DOT file, which contains a directed acyclic graph of all the tasks and their dependencies. The system is required to output an optimal schedule, that is, a valid schedule with the earliest finishing time, while retaining all the dependencies of the original graph.
The design of this system uses dedicated IO classes, and object-oriented hierarchical structures for the various graphing and algorithm components. This design is exlpored in detail within the Wiki.
The currently implemented branch-and-bound algorithm uses a cost function calculated by computational bottom level, idle time and lastest finishing time when finding an optimal schedule.
To install this project, please download the runnable JAR File submitted.
Enter the following on the command line: java -jar <filename.jar> <input_graph.DOT> <num_processors> <options...>
To build from source, run a maven update command on the project, then run the io.main class (make sure the command-line arguments from the Running/Options section are specified in the run configuration)
The following options are supported by the system:
-p <numberCores>
The number of processor cores to use-o <output_filename>
The file to output to.-v
Flag to visualise or not.