CS 5970 Programming Assignment 2 — Genetic Algorithms

Due Friday, April 4, 2014

1. Motivation

The required components of evolutionary computation are replicators, replication, and a selection mechanism, and we require that the replication be high fidelity. When we go to create a particular evolutionary computation implementation, we need to decide on particulars for each of the requirements as well as others. Some of the questions we need to answer to create our implementations are:

All of these decisions need to be made in the context of the particular problem to which evolutionary computation will be applied (for example, the replicators in combination must be able to represent solutions to the problem in question). These decisions will also effect the unfolding of the evolutionary process (e.g., how quickly it converges to a solution).

2. Goals

The goals of this assignment are:

3. Assignment Overview

You will design, program, and run a simple genetic algorithm to find solutions to several instances of the 0-1 multiple knapsack problem, a version of the classic knapsack problem.

    General solutions get you a 50% tip.

In the 0-1 multiple knapsack problem, you have have m knapsacks, each with a carrying capacity c(i), i ∈ {1, …, m}. You also have items you can put into the knapsacks. Each item has a weight w(j) and a profit p(j), j ∈ {1, …, n}. Your objective is to find a way to pack each knapsack with a set items that together do not exceed that knapsack’s individual capacity while maximizing your profit over all of the knapsacks.

You will also turn in written material regarding the design and implementation choices you made regarding the GA and an analysis of the results you will collected from your runs.

4. Assignment Details

The instances of the 0-1 multiple knapsack problem you will find solutions to are located in a repository of 1500 instances. You should choose a diverse subset of 10-12 problems from this repository to use in this assignment.

Carry out the following steps. Underlined steps require a written response, those in code require you to write software, and those in italics require you to collect data. Written responses, code, and data will be turned in for grading

  1. Consider the choices one needs to make regarding the design and implementation of any evolutionary computation system.
  2. List the choices that need to be made when designing an evolutionary computation system that have already been made for you in this assignment.
  3. For each of these choices, list which option I chose for you in making this assignment.
  4. List the choices you need to make regarding the design of your GA. (Note, these do not include purely implementation choices such as programming language.) Between those I chose for you and those you chose yourself, you should be able to list at least nine.
  5. Choose an option that seems reasonable to you for each of these design choices and explain why it seems reasonable to you. If you do not have a good reason for your chosen option, say so.
  6. Implement your GA.
  7. Now that you have implemented your GA, you are likely to have recognized more choices that you needed to make along the way. List the choices you needed to make regarding the design of your GA. Including the choices you listed previously, your list should now contain at least ten choices.
  8. For each of these design choices, list the option you chose, and explain why it seems reasonable to you. If you do not have a good reason for your chosen option, say so.
  9. Answer the following questions about data collection, reporting, and conclusions so that you are ensured of collecting the appropriate data. Attempt to justify your answers to these questions. As you do so, keep in mind that what you want is a data set that allows you to understand the workings of your GA as an optimization tool and you want to report the minimum amount that allows your reader to thoroughly understand what you have learned. Note that you may lack a justification for your answers to some of these questions at this time. That is acceptable since this is your first evolutionary computation programming assignment in this course. However, you should keep all of these questions in your mind as the course progresses and be able to give good, justified answers to similar questions for your large project.
  10. Run your GA on your selected instances of the 0-1 multiple knapsack problem.
  11. Report your results and conclusions regarding the application of your GA to the 0-1 multiple knapsack problem.

5. What to Turn In

Write Up
You will turn in both a hard copy and an electronic copy of your write up. Your write-up should be a coherent document that covers all of the underlined steps from the assignment above. Note that selected data in a digested form (such as tables or graphs) should be included in your writeup; however, your raw data should not be included here.
Code
You will turn in both a hard copy and an electronic copy of your code. You will turn in the source code you have written for this GA. Your source code should be well structured and well commented. It should conform to good coding standards (e.g., no memory leaks).
Data
You will turn in just an electronic copy (no hard copy) of your data. This may be in a single file or multiple files. You will also need to include a brief writeup on how the data is organized.

6. Notes on this Assignment

You may write your program from scratch or may start from programs for which the source code is freely available (such as on the web or from friends or student organizations). If you do not start from scratch, you must give a complete and accurate accounting of where all of your code came from and indicate which parts are original or changed, and which you got from which other source. Similarly, for the written components of this assignment you may follow the format or content of other written works but you must give a complete and accurate accounting of who deserves credit for all parts of your documents. You will be graded on the contribution you make to your project; in other words, to earn the points possible for this assignment, you must make your own substantial contributions to the completion of this assignment above and beyond what you obtain from others. Failure to give credit where credit is due is academic fraud and will be dealt with accordingly. Please see the University's web pages on academic integrity.