CS 495 GENETIC ALGORITHMS, Fall 1998, Instructor: Jeffrey Horn
General Student Concerns: Colloquia and Seminars Local Events NMU CS Employment
NUMBER: CS 495 (11855, Lec. 01)
PREREQUISITES: Two semesters of programming (CS 120 and CS 122) or permission of instructor.
DESCRIPTION:
This course introduces students to the young field of "Evolutionary
Computation",
in which a simple abstraction of biological evolution is simulated
on computers, and
used to "evolve" elegant, complex solutions to difficult problems.
We will use the latest
programming techniques, such as object-oriented programming and parallel
distributed
processing over a network of workstations, to solve various artificial
and real-world
problems. We will concentrate more on the nature of the artificial
evolution than on
programming. In addition to testing our code on "toy" problems,
we will work on several
well-known, open problems in the literature, such as the "NYC Tunnels
problem" , to
see if we can find better solutions than have ever been seen to date!
MEETING TIMES: 1:00 PM MWRF
What's REALLY New:
Suggestions:
- use reciprocal of total cost for fitness (i.e., 1/cost -> fitness) since SGA code is written for maximization. Or change SGA code to minimize the fitness.
- Assume pop. size * num. of generations = total number of fitness evaluations. Thus you are limited (artificially) to N * G = 10,000 evals of pipeBB.
- A system call in C is just
- system("pipeBB"); (I think)
Our first real programming assignment should be officially assigned on Monday, Sept. 21, just before I leave for a week! So be there on Monday, and keep up on this web page: Link to LEGO MindStorms article
- I DID finally get the Black Box version of the pipe network (NYC tunnels problem) running.
- You can find it in the usual place (~jeffhorn/Research/Pipe), but I also put copies of the files in our GA Code directory on this web server (just click on Code below, and then on the "Pipe" subdirectory, or just click here)
- There are three files:
- "pipeBB" is the executable black box code. Just run it at the command line, or with a system call from within your GA code.
- "input" is the file with the chromosomes. See the example. Sorry, the name "input" is hardwired into the pipeBB code; so is the name "output". Note that the format of input is strict: there must be exactly 84 bits per line, with a carriage return (newline character) at the end of each line, INCLUDING THE LAST LINE! No additional characters or blank lines, at the beginning or end (or pipeBB will surely core dump!).
- "output" is where pipeBB will write the total costs for each pipe network in the "input" file's chromosomes. These are floats, one per line, with newline characters ("\n" in C) at the end of each line, just as in "input"!
- Note that I got it working for a variable number of chromosomes. Thus if you put just one chromosome in "input" you will get just one total cost in "output. It should work for any number of chromosomes up to 40,000 (the max is hardwired; increasing it would require recompiling the source for pipeBB. Let me know if you need this.) If you give pipeBB an input file with more than 40K chromosomes, it WILL crash! I guarantee.
- Good luck. Details of the assignment on Monday.
CONTENTS
WEEK OF
HOMEWORKS & PROGRAMS