May 12, 2000 PROJECT GOALS
Our project comparatively analyzed three methods for scheduling participants and speakers for a conference held annually at our school. The methods we examined were integer programming, constraint satisfaction, and genetic algorithms. The goals of the research were to improve the scheduling process of the conference, to learn about the problem solving techniques and how to apply them to a real-world problem. The research also helped us to improve our skills in software engineering, literature review, oral and written communication, and to learn what graduate school might be like. Working as a team and having a close relationship with our advisor and mentor has also encouraged us in the field of computer science.
STUDENTS AND MENTOR INVOLVED
The two female undergraduate students involved were Heather Simmons and Natalie Bickley. The mentor and advisor was Dr. Lisa Burnell. All work was done at Texas Wesleyan University, Fort Worth, Texas. The students presented their work at University College Day on campus on February 15 and at The Consortium for Computing in Small Colleges, South Central Conference in Corpus Christi, Texas on April 15.
PROBLEM DESCRIPTION
Expanding Your Horizons (EYH) is a one-day conference held at Texas Wesleyan University intended to encourage young girls to pursue math and science related careers. Approximately 60 presenters come on that day from the DFW metroplex to present their careers in hands-on activities with the girls. Scheduling consists of assigning approximately twenty groups of twenty to twenty-two girls with four presenters per group. Each presenter is given the option of two morning sessions or two afternoon sessions. The girls are asked to choose two topics in which they are interested. As a result, each presenter presents her career to two different groups and each girl attends four sessions. Creating a schedule for the presenters and girls is a difficult task.
OVERVIEW AND ANALYSIS OF METHODS AND PROTOTYPES
The process we used to do the research was defined by the students and mentor at the start of the project. The first task was to do the initial research. Each technique was researched and a report was written about that topic. At that same time a tool was found for that topic and sample problems were tested using the tool so that the researchers could get a basic understanding of how to use that tool. Next, the EYH scheduling problem was implemented into each technique using the tool found. The techniques that were researched were Genetic Algorithms, Constraint Satisfaction Search, and Integer Programming. Genetic Algorithms Genetic algorithms are modeled after DarwinÕs survival of the fittest theory of evolution. Most basic genetic algorithms use bit strings to represent chromosomes. A chromosome represents a solution to a problem. The algorithm uses a fitness function to determine which chromosomes would be better to use to mate with other chromosomes to get an optimal solution. From our research on genetic algorithms, a principle advantage is that the tool does the work for you. The tool used for the genetic algorithm technique was Genetic Algorithm in C (GAC) available at the CMU repository (www.cs.cmu.edu). According to the information we found in our research, GAC would be fairly easy to use. We would need to determine a suitable representation for our problem in bits and then write the evaluation function the program would use. This seemed easier than what we found out to be true. First, writing the evaluation function proved to be more difficult than we first expected. Our lack of experience with the C language was an obstacle we had to overcome. To accomplish this, we wrote the evaluation function in Pascal and then our advisor converted it into the C language. Another problem we encountered was that the bit string was very difficult to interpret. Every time the program was run, we would need to take the 400+ bit string and convert it to integers and then convert those to the corresponding speaker it represented. Furthermore, solution quality is not guaranteed to be optimal, and therefore we did not choose to use genetic algorithms as a tool to solve the problem at hand. Constraint Satisfaction Constraint satisfaction is a technique used in Artificial Intelligence to solve many different types of problems, such as natural language processing, business applications, and optimization problems. The task of a constraint satisfaction search is to assign each variable a value that satisfies all requirements given by the constraints. The constraints are the relationships between these variables. Solving a CSP includes first assigning values to all the variables, then applying modifying operators to move toward a solution. Using Prolog to perform constraint satisfaction search worked very well for the EYH scheduling problem. An advantage of Prolog was the use of symbolic representation. This form of representation increased readability and writability. The output was saved as a comma delimited file and could then be opened in EXCEL to be sorted and printed according to the customer specifications with no further manipulations. Integer Programming Integer programming techniques represent a problem mathematically as a set of linear constraints and an objective function to be maximized or minimized. Integer values for variables are found that satisfy the given constraints. Integer programming in essence is constraint satisfaction using integers for the constraints instead of symbols. Two of the techniques studied are the cutting plane technique and the branch and bound method. LINDO proved to be a very interesting and useful tool in many example problems that we studied. However, in our case, with all of the approaches that we attempted to use, LINDO proved to be very tedious. The task of entering all of the constraints that the problem required was very large. It would also be difficult to use each year for the EYH program because the data representation was numerical rather than symbolic, and therefore harder to understand.
CONCLUSIONS AND RESULTS ACHIEVED
This project has been an incredible learning experience. The programming, technical writing and presentation skills of the students have greatly improved. The experience of working as a team has helped us to learn how to support team members and has also been a beneficial way to learn the discipline. While doing this research project, we have been able to encourage each other to work harder and to not give up. The best solution for the EYH scheduling problem was to use the program that was written in PROLOG using constraint satisfaction techniques. In conclusion, PROLOG is a good tool to use for problems like the EYH scheduling problem. The symbolic representation made it easier to write and to read when debugging and tracing through the program. It was also nice that the code was very short compared to the genetic algorithm code. At first we did not like the structure of the PROLOG language, but once we started to use it and understand how to use it, we both enjoyed using it. It is very different from other languages that are taught in the computer science curriculum. If it weren't for this project, we might never have learned this different language.