A Genetic Algorithm for Task Scheduling

By Sean Strickland, Theisen Sanders

Artificial Intelligence - Computer Science 472 - Iowa State University

Links

Project Description

Our project idea is to develop a genetic algorithm for task scheduling. A general overview is that we would like to make a genetic algorithm that can take a large set of tasks, some constraints, a number of resources to run the tasks on, and outputs a schedule for running the tasks on the resources that efficiently uses time and resources while not violating any hard constraints. One possible use case for this is as a scheduler for a group of servers pulling tasks from a task pool.

A more concrete description is that each task could have a duration (amount of time it takes to execute), a priority value, and a set of prerequisite tasks (dependencies) that must be completed before this task can be executed. The input is a set of these tasks and the number of resources available to execute the tasks. The output is a list of resources and the order in which tasks are run on each resource. Additionally, users could set a number of generations they want the algorithm to run for (a larger number of generations yields a better result). The tricky part of this project will be developing a genome representation of a schedule and a fitness function that can accurately determine the efficiency of a given genome/schedule.

These details are flexible at the moment and there are many ways we could add to or change the properties of a task. We would like to make a web application that allows a user to construct the set of tasks and provide other inputs like a maximum running time, maximum number of generations, and/or a "seed sequence" that could be used to influence what the result might look like. The goal being to help others visualize and understand how genetic algorithms work.

Goals

Approach

Algorithm
Development Tools
Development Sequence
  1. Create genetic algorithm that satisfies the above description
  2. Create a REST API with Flask (Python) that accepts the algorithm input and responds with the algorithm output
  3. Create a user interface in the form of a web application to connect with the REST API endpoints

Anticipated Results

We expect that upon completion of our project, we will be able to consistently, effectively, and efficiently generate a task schedule using a genetic algorithm.

Sources

Last Updated 12/12/13