CS 371 - Introduction to Artificial Intelligence
Homework #3


Due: Tuesday 9/26 at the beginning of class
Note: Work is to be done in pairs

Stochastic Local Optimization


1. The Channel Routing Problem (CRP): 

For this exercise, you'll be given an State class by C.S. major and salutatorian David Hettlinger '04 from his research of summer 2002.   This class implements a complex combinatorial optimization problem concerning VLSI circuit design.  For this "Channel Routing Problem", horizontal and vertical wires are on opposite side of and connected through a silicon wafer.  We seek to find a wiring layout between pins with corresponding numbers that minimizes the number of necessary horizontal tracks.  All implementation of the State interface is supplied for you.  Your task is to implement and collect data on optimization performance with 10000 iterations for: Construct each initial CRP state with "new CRState4("dde.txt")".  All other interaction with this class will be according to the State interface.  Record the final energy (i.e. channel width) for each optimization run, and perform a minimum of 3 runs for each method/setting above (i.e. minimum 18 runs total).  We will share results for this problem on Thursday 9/21 in class.

2.  Choose Your Own Optimization Adventures:  Implement 2 of the 3 following problems using the State interface and write a test program that demonstrates the effectiveness of one of our stochastic local optimization techniques for the problem.  (If there are other optimization problems you would like to try, please see me.)  Print the energy of the minimum energy state at intervals during and at the end of the optimization.  Limit the time for each run to 1 minute.  You'll want to use even shorter runs as you develop, test, and debug. 

Hopefully, in looking at these problems, you'll see the wide applicability of such optimization algorithms.  Often, the most challenging aspect of such optimization is devising a good, efficient next state generator that gives beneficial structure to the state space, rather than merely bouncing randomly from one state to another.  Good next state generators both allow one to traverse the entire state space, and immediately sample states that are similar in quality to the current state.

Todd Neller