Computer Systems Lab TJHSST Current Projects 2004-2005 Second Period - PowerPoint PPT Presentation

computer systems lab tjhsst current projects 2004 2005 second period n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Computer Systems Lab TJHSST Current Projects 2004-2005 Second Period PowerPoint Presentation
Download Presentation
Computer Systems Lab TJHSST Current Projects 2004-2005 Second Period

play fullscreen
1 / 271
Computer Systems Lab TJHSST Current Projects 2004-2005 Second Period
247 Views
Download Presentation
Leo
Download Presentation

Computer Systems Lab TJHSST Current Projects 2004-2005 Second Period

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Computer Systems LabTJHSSTCurrent Projects 2004-2005Second Period

  2. Current Projects, 2nd Period • Casey Barrett: The Design and Implementation of Decicion Trees for Career Guidance • Andy Desoto: Modeling of Evacuation Centers using NetLogo • Keith Diggs: Optimizing Genetic Algorithms for Use in Cyphers 2

  3. Current Projects, 2nd Period • John Fitzsimmons: Creating a 3D Game With Textures and Lighting • Christopher Goss: Paintball Frenzy: Graphical Turn-Based Game With a Minimax AI Agent • Stephen J. Hilber: Modeling Evolving Social Behavior • Rachel Miller: Use of Machine Learning to Develop a Better Artificial Intelligence for Playing Tic-Tac-Toe 3

  4. Current Projects, 2nd Period • Kyle Moffett: The Analysis and Maintenance of a Robust, Highly- Available Computer Systems Laboratory • Jason Pan: Developing an AI Player for "Guess Who?" • Madeleine E. R. Pitsch: Study of Creating Compuattional Models of Traffic • Timothy Wismer: Development of a Deadlock-Detecting Resource Locking Algorithm for a Kernel Debugging User-space API Library (KDUAL) • Dan Wright: Developing Algorithms for Computational Comparative Diachronic Historical Linguistics 4

  5. Decision Trees for Career GuidanceThis research project will be an investigation into the design and implementation of various decision trees for career guidance. A decision tree takes into account some sort of situation outlined by a group of parameters and outputs a Boolean decision to the situation. This project will take into account many aspects associated with decision trees including database building, searching and sorting, and algorithms for accessing data.My project utilizes numerous decision trees in an effort to serve as a tool for career guidance for young adults. A user will fill out a form of specified fields that will then be analyzed by the group of decision trees until a field of study/occupation is given to the user as the outcome. This group of decision trees will be built through database building techniques. 5

  6. Abstract This research pro ject will be an investigation into the design and implementation of various decision trees for career guidance. A decision tree takes into account some sort of situation outlined by a group of parameters and outputs a Boolean decision to the situation. This pro ject will take into account many aspects associated with decision trees including database building, searching and sorting, and algorithms for accessing data. My project utilizes numerous decision trees in an effort to serve as a tool for career guidance for young adults. A user will fill out a form of specified fields that will then be analyzed by the group of decision trees until a field of study/occupation is given to the user as the outcome. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  7. This group of decision trees will be built through database building techniques. I have utilized extensive research from various websites that offer expertise in a number of areas. I used tutorial websites that had examples and explanations of decision trees generated by the C4.5 program. I have also tried to read various research papers that deal with decision trees. Although I have yet to find one that remotely relates to career guidance, I feel that my understanding of decision trees has increased as a result of these research papers. Introduction This pro ject will utilize numerous decision trees to assist young people by helping them focus on their interests and what career paths may coincide with those interests. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  8. Background/Implementation A decision tree is a graphical representation of the decision analysis process. This type of tool consists of some sort of input, whether it is a situation or an ob ject. This input is then sent through a set of parameters, or rules, and eventually the tree gives a Boolean output. There are many different types of parameters that can be used. Or in other words, many different types of parameter cases can be used. These cases can include numerical data, simple yes/no answers, or word answers, such as hair color (black, brown, or blonde). Each parameter will have a specified set of cases that correspond to the parameter. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  9. To help me better understand decision trees and how to build them, I have utilized Professor Ross Quinlans revolutionary decision tree generator programs, the C4.5. What these programs do is take into account large sets of data (from properly written database files) and looks for correlations within the sets. It then uses these correlations to build a decision tree that follows the 'rules' outlined by the correlations. In an auxiliary program, the C4.5rules program, the 'rules' for the tree generated can be displayed. This program gave me a better understanding of how decision trees are built. I wrote my own database files that could be read by the C4.5 program. I learned the proper syntax for these database files, which I would later utilize for career guidance. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  10. For each database, two separate kinds of files are needed, the .names file, which outlines each parameter and the appropriate cases as well as the end cases, and also the .data file, which consists of singular entries. Each entry in the database properly fills up each parameter outlined in the .names file. I also had to research techniques for career guidance. The most rudimentary of these techniques was to have a user fill out a list of field data and then compare the user's answers to those of a highly comprehensive database. Some of these questionnaire-type devices included many different occupational fields, such as art/music, engineering, writing/journalism, and social services. For my pro ject, I decided to start out with two very distinct fields that would be a good way to acclimate myself for making a career guidance program. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  11. These two fields would be the liberal arts field and the sciences field. For career guidance, I separated the decision trees that I would need into three different and distinct trees. The first one is a tree designed to help a user decide whether they should focus on either of the broad intellectual categories of the sciences or the liberal arts. This decision will be decided based a series of fields the user fills out in a separate C++ program. Some of these fields include the user's grades in their current English and Math class, if the user is in a science club, the number of computers that the user owns, and the number of plays the user has participated in during the last year. These starting questions are somewhat broad because this is the first preset tree that the user will be compared to. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  12. The next step was to develop a user input program that prompts the user questions related to career guidance. The program then takes the answers and writes them to a .data file. I wrote this program in C++. Likewise, I needed to use the fstream.h library in order to gain access to the classes ifstream and ofstream. I then created the questions test file that became the ifstream that the program will read. This program contained four functions, better outlined in the Iteration Report: Third Quarter. Currently, the only acceptable inputs for this program are strings, however, during the fourth quarter, I will expand the inputs to include classes char, int, and double. The user input is first compared to a database of other people's answers and the decision that each of the other people decided upon. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  13. Since I have not had enough users, the databases are fictitious data that I have engineered in order to fit my ideal decision tree for this progression. The data from this database helps comprise a decision tree that the user's answers will be run through. Since there are three different decision trees, three separate ideal databases will be made, one for the broad first test, and then one each for the science fields and the liberal arts field. After a first decision is made, it will be relayed back to the user. If the user wishes to continue, he or she will be given another set of parameters that will be more in depth in either the liberal arts or science fields. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  14. These trees, which are still in progress, will help the user compare their answers against another database corresponding to their broad interests (liberal arts or sciences). When compared to these more specialized databases, a more focused decision was sent back to the user. This is because the user's responses will be matched up with the decision tree that the databases helped generate and the decisions that the databases output. Right now, I am working on the algorithm that compares the user input answers to the decision tree. This algorithm will produce some sort of numerical correlation between the sets of answers. The higher the correlation number is with respect to that specific path of the decision tree, then the more likely the program will output an answer similar to that of the higher correlation. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  15. In the end, a type of occupation or a field of study will be output to the user based on the correlations. Also, I have trained extensively in the ways of the Reverse Game. Without possessing a shred of natural Reverse Game ability, I have worked my way up from the ranks of novice to a somewhat respectable player capable of defeating each and every of the 20 progressively challenging levels. The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  16. Conclusions References Decision Trees: A subtopic of machine learning. http://www.aaai.org/AITopics/html/trees.html Quinlan, Ross. (n.d.) Ross Quinlan Personal Page. http://www.rulequest.com/Personal/ C4.5 Tutorial. http://www2.cs.uregina.ca/~hamilton/courses/831/notes/ml/dtrees/c4.5/tutorial.html Career Key: Job Interests. http://www.careerkey.org/cgi-bin/ck.pl?action=choices Hettich, Scott. (n.d.) UCI Machine Learning Repository http://www.ics.uci.edu/~mlearn/MLRepository.html Nilsson, Nils. (May 10, 2004). Introduction to Machine Learning http://robotics.stanford.edu/people/nilsson/mlbook.html The Design and Implementation of Decicion Trees for Career GuidanceCasey Barrett

  17. Modeling of Evacuation Centers Using NetLogoModeling is a powerful tool that allows a programmer or social engineer to observe cause-and-effect relationships in occurences that a) happen too slowly or quickly to see, b) involve danger or safety concerns, c) occur on a scale too large or too small for study, d) is not a common occurrence. Using NetLogo, a multi-agent programmable modeling environment, the socio- and psychological factorsaffecting decision-making in these situations can be effectively simulated. 17

  18. Abstract The actions of citizens during terror and evacuation events are oftentimes hard to predict. Using NetLogo, a 'crossplatform multi-agent programmable modeling environment' from The Center for Connected Learning and Computer-Based Modeling (CCL), the socio- and psychological factors affecting decisionmaking in these situations can be effectively simulated. Through appropriate research in categories of modeling and sociology, human behavior can be studied to help urban developers and social engineers protect the nation's interest: its citizens. Citizens that follow certain algorithms, or behave in certain ways, have a much greater chance of survival. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  19. I . Introduction to NetLogo NetLogo is a cross platform multi-agent programmable modeling environment created by Northwestern University's Center for Connected Learning and Computer-Based Modeling (hereafter CCL). It was designed specifically for simulation of social and natural phenomenon. Originally StarLogoT, this language and graphical user interface hybrid offers a multitude of possibilities for researchers and students, allowing users to examine interactions and behaviors on both micro and macro scales. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  20. NetLogo is designed with accessibility in mind; the program allows for quick Java applet exportation and interactivity with CCL's HubNet interface, which lets the user run participatory simulations in which a class or group of testers takes part in enacting the behavior of a system as each user controls a part of the system by using an individual device (such as a TI-83+ calculator or a networked computer). NetLogo comes packaged with an expansive models library and an assortment of code samples for easy access. A. NetLogo Graphic User Interface NetLogo's main advantage is that it allows a quick and relatively simple way for the programmer to implement a convenient graphical user interface (hereafter GUI). Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  21. A NetLogo GUI can contain the following components: buttons, sliders, switches, choices, monitors, plots, texts, and outputs. 1) Buttons: Buttons activate on the user's command. There are two types of buttons, standard buttons and forever buttons. Standard buttons activate the contained code on click, but forever buttons execute the contained commands repeatedly until the button is clicked a second time, mimicking a whileloop. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  22. 2) Sliders: Sliders allow the user to manually select the value of a certain variable. Sliders control the minimum and maximum values, as well as the increment of increase/decrease, while the user chooses the value. 3) Switches: Switches allow for a user to directly affect a boolean value. 4) Choices: Through the use of choices, the user can select certain values, Strings, and more that the programmer allows. 5) Monitors: Monitors allow the user to examine the value of a variable as the simulation runs. 6) Texts and Outputs: Texts and Outputs display certain messages the programmer encodes. These can be displayed at any time during the simulation. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  23. B. HubNet and Other Extensions NetLogo's versatility allows programs to be accessed and used in environments outside the computer laboratory setting. HubNet, one instance, allows a multitude of users to interact with a single model through the use of Texas Instruments TI-83+ calculators or networked computers. This is ideal for classroom settings because it allows each tester involved to affect the model in some way. Also, NetLogo offers easy exportation to Java Applet format, and with several keystrokes, an applet embedded in an HTML page can be created. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  24. I I . Introduction to Modeling Modeling is a powerful tool that allows a programmer or social engineer to observe cause-and-effect relationships in occurences that a) happen too slowly or quickly to see, b) involve danger or safety concerns, c) occur on a scale too large or too small for study or d) is not a common occurrence. Armed with this knowledge, a scientist can use the material learned to help a community, understand a cause, or solve a problem. A perfect use for the modeling technology of today is a subject that meets all of these above criteria. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  25. The modeling of population centers during evacuation situations is perfect for such a study, because evacuation frequently occurs too quickly, is quite dangerous, happens rarely, and happens on such a wide scale that observing patterns is nearly impossible. In order to accurately code such an event, certain features must be researched. A. The Environment In general, areas to be evacuated generally contain a large number of citizens in a small area; the population density in such regions tends to be quite high. In the metropolises and cities of today, high-rise apartments, parking garages, subway stations all provide unique, but crowded, environments. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  26. These situations provide the greatest trouble to researchers and social engineers. B. The Citizens In times of terror or enormous stress, citizens often behave irrationally; different than they would normally. Thus, citizens' behavior in the simulation must reflect this behavior. The intelligences programmed into version 1.2 follow. ) Speedy, Normal, Slow: The Speedy, Normal, and Slow citizens differ in the number of times they move per timestep. Speedy, Normal, and Slow citizens more 3, 2, and 1 squares, respectively. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  27. When they collide with a wall (or another citizen, if Collision? is turned on), they turn in a random direction and continue their movement. 2) Righty: Righty citizens react to collisions by turning ninety degrees. They move two squares per timestep. 3) Retreater: Retreaters react to collisions by turning 180 degrees, taking a step forward, and choosing a direction in their 90 degree front arc. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  28. I I I . Running the Simulation Utilizing the Simulation consists of three steps: initializing the Basic Environment Setup, or BES; running the model; analyzing the model with the Graphical (Statistical) Interface, or GSI. A. Basic Environment Setup (BES) The user controls the following sliders, choices, and etc. to set the parameters for the environment. 1) 'walldistancey' Slider: sets the distance between the horizontal walls. When a citizen's movement would take it into a wall, it runs its collision program detailed above. The two horizontal walls each contain a passable gap separating the danger from the safety area. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  29. 2) 'walldistancex' Slider: sets the distance between the vertical walls. When a citizen's movement would take it into a wall, it runs its collision program detailed above. 3) 'evacuationtime' Slider: sets how many timesteps the model runs for. 4) 'collide?' Switch: selects whether or not citizens collide with one another, activating collision code upon impact. 5) 'areasize' Selector: selects how many citizens begin in your model. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  30. The selector has five options: a) Metropolis (225 citizens) b) City (150 citizens) c) Village d) Town (90 citizens) e) Thorpe (15 citizens) f) Abode (3 citizens). There are (citizens / 3) citizens of each color (red, white, blue) in the model. 6) 'explosiontime' Slider: selects at what time the explosion occurs. The explosion is the radius selected below. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  31. 7) 'explosionrad' Slider: chooses the radius of the explosion. Explosions kill citizens contained within them and creates an impenetrable wall. 8) 'Draw Walls' Button: while depressed, lets the user draw black walls 1 pixel in diameter. I V. T H E P RO J E C T This project was set up to determine the most effective ways to get large numbers of citizens to safety in times of danger. In order to determine how to do this, certain things must be determined. First, the parameters that add to the dangerousness of the environment should be measured. Secondly, once the situations of greatest danger are found, the most effective intelligences to escape this danger must be poinpointed as well. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  32. Using the environment instantiated in the setup (see subsection "The Environment"), different situations are tested. The tests were run in environments of four different dimensions: large x large, short x large, large x short, and short x short. V. T H E T E S T As described above (see "Project" section), the first part of the test is to determine the dangerous situation. The results of this test follow. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  33. These tests were ran with build version 1.2, located on the web: www.tjhsst.edu/ kdesoto/techlab. Large x large = 15m x 5m Short x large = 5m x 15m Large x short = 15m x 5m Short x short = 5m x 5m A set of 225 "control" citizens was given a period of 120 minutes to escape each danger situation. This was performed ten times, and escaped citizens were graphed. This can be found in the appendix. The l x l area, on average, trapped almost 111 citizens per 120 minutes. This is almost 50 percent. The s x l area, on average, trapped almost 22 citizens per 120 minutes. This is almost 10 percent. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  34. The l x s area, on average, trapped almost 27 citizens per 120 minutes. This is almost 12 percent. The s x s area, on average, trapped 0 citizens per 120 minutes, 0 percent. VI. Conclusion The conclusion goes here. V I I . Acknowledgement The authors would like to thank... Mr. Randy Latimer, Computer Systems Laboratory Mr. Uri Wilenski, CCL REFERENCES A [1] H. Kopka and P. W. Daly, A Guide to LTEX, 3rd ed. Addison-Wesley, 1999. Modeling Evacuation of Population Centers Using NetLogoKurt Andrew DeSoto

  35. Optimizing Genetic Algorithms for Cypher DecodingOver the past several years, genetic algorithms have come into wide use because of their ability to find good solutions to computing problems very quickly. They imitate nature by crossing over strings of information represented as chromosomes, with preference given to the more fit solutions produced. They hold great promise in the field of cryptology, where they may be used to quickly find good partial solutions, thus eliminating much of the intense manual labor that goes into identifying initial coding schemes. 35

  36. Abstract Over the past several years, genetic algorithms have come into wide use because of their ability to find good solutions to computing problems very quickly. They imitate nature by crossing over strings of information represented as chromosomes, with preference given to the more fit solutions produced. They hold great promise in the field of cryptology, where they may be used to quickly find good partial solutions, thus eliminating much of the intense manual labor that goes into identifying initial coding schemes. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  37. Introduction This document is the written history of the author's work on genetic algorithms over the course of the past year. The hope is to reach a better understanding of genetic algorithms through the results of intensive work on the sub ject in several different applications. The Problem Genetic algorithms have become very useful tools in the field of computer science, however, they are rather open-ended and can be applied in wildly different ways.1 The problem here is to optimize a genetic algorithm for a cryptological problem. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  38. Statement of Objective The ultimate objective is to use a genetic algorithm to efficiently solve different problems such as the Beale cypher and the evolution of pi. Regardless of whether that objective is reached or not, the pro ject should foster a better understanding of how to apply genetic algorithms to cryptology problems. The purpose of this report is to document the development and effectiveness of the project. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  39. Scope The pro ject deals mainly with the Beale Cyphers as a tool with which to determine which properties of a genetic algorithm may be modified so that the algorithm may operate more smoothly. The pro ject also includes an initial foray into evolving the value of pi. Background Historical Summary The Beale Cypher is one of the most famous unsolved puzzles in cryptography. Basically, 100 years ago, Beale buried treasure in a lake in Bedford County, near Roanoke. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  40. Three letters were written, encoded and given to a friend. Beale subsequently travelled west and never returned. Later, one of the 3 letters was deciphered. Beale had used a simple encoding algorithm. His letters consisted of a large list of numbers. These numbers corresponded to the first 480 words in the American Declaration of Independence. For example, if the document starts "The quick brown fox..." then 3 would represent the letter 'b' and so forth. (1 Duray) Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  41. So, one of the letters was succesfully deciphered, but to this day the other two remain unbreakable. While there is a fair amount of evidence that the Beale treasure is a hoax, there is no reason to believe that the cyphers themselves are. It is also probable that the other cyphers either use the same document, just different encoding methods, or use similar documents and the same encoding.2 Preceding Work I am not sure how much work has been done trying to decode the two as-yet undeciphered letters. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  42. Throughout the 1970s, one Dr. Carl Hammer used computers to analyze those two letters and found cyclic patterns in the numbers that suggested an actual coding mechanism as opposed to randomly chosen numbers.3 There is some evidence that the cypher is nothing more than a hoax. Kenneth Dobyns concludes after a lengthy statistical analysis that "there is no content to [the] cyphers" and that the numbers in the two undeciphered texts were chosen "substantially at random, limited only by the restriction that no numerical value would be repeated immediately adjacent or semi-adjacent to a similar value." Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  43. Theory It is one of the great ironies of computer science that a machine built to outperform a living organism works best at times when it imitates the living organism itself. Charles Darwin's 1859 book On the Origin of Species laid the foundation not only for anthropology but for a great number of largely economic theories such as "Social Darwinism." The idea that the members most fit to survive would be the most likely to reproduce resounded in the scientific community. It should come as no surprise, then, that computers might be able to produce end results as well as nature itself if they would follow this model. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  44. A genetic algorithm is a method of computing that attempts to replicate nature's mechanism for evolution by organizing computer data into formats that are akin to DNA chromosomes. The idea is to have multiple manifestations of these computer data so that they might "cross over" the way that real-life chromosomes do. The "crossing over" does not happen randomly; the programmer has to code the program to do this, but he can choose to do it in a manner that takes two promising sets of data and combines them into what would hopefully be an even better set of data. We need these "promising sets of data" because the data are supposed to be the solution to some sort of problem. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  45. Genetic algorithms are most effective in quickly finding good solutions to problems in which there may be several acceptable solutions. The problem of decoding the Beale Cypher, then, would seem to be an excellent candidate for a genetic algorithm as described above. The search space is essentially infinite, yet it would be possible to program the computer to recognize good solutions as those with a high incidence of actual English words coming out of the translation. While there is one "correct" solution, but if I can get my program to come up with a solution that a human viewer could identify as reasonably close to this correct solution, then it will have been a success. 2 Matthews 3 Krystek Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  46. Design Criteria Primary Criteria · The pro ject will be able to take the code of the second letter in the Beale Cypher and independently come up with a string in which an observing human can recognize the English message of the cypher. · The pro ject will use a genetic algorithm to do so, crossing over possible solutions to produce hopefully better ones. Secondary Criteria · The pro ject may independently produce the exact answer to the second letter in the Beale Cypher, character for character. · The genetic algorithm may be both time-efficient and space-efficient, allowing for easy application to other similar cyphers (even other letters) · Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  47. The pro ject may produce a viable solution to the first and third letters of the Beale Cypher from which a human would be able to do meaningful and independent work. A genetic algorithm similar to the one used to satisfy the Primary Criteria may be adapted to other areas in cryptology and (this is a long shot) into other research areas such as artificial life. Procedure The project largely dictated its own future ­ since there was no initial goal at the outset of the year, the pro ject was largely defined as whatever might be successful. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  48. At the time the author applied for the Computer Systems Research Lab, his idea was to create an intelligent computer agent to play the Japanese game Go. By September, the idea of exploring genetic algorithms had become fairly entrenched in the author's mind, but a search for applications was still necessary. After spending two months tinkering with a program that evolved the value of , it was decided to pursue the Beale Cypher in depth. The program decode01.c was written to the point where it would begin crossing multiple chromosomes over each other and producing results that clearly followed progressive patterns (thanks to substantive debugging). Once the functionality for crossing over was written into the program, work on the heuristic could begin. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  49. It is based on the relative frequencies of each alphabetical character in the English language4 and the most commonly occurring words in the language.5 The heuristic analyzes the translations produced by a chromosome and calculates how far the relative character frequencies of the translations deviate from that of general English, with priority values being assigned to the translations that deviate the least in terms of character frequency and also have the most identifiable English words. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs

  50. The word-search function was the most difficult part of the program to write, not because the goal was uncertain, but because it introduced an entirely new problem to the pro ject: that of organizing an extensive list of data into the program's infrastructure in such a manner that it could then be successfully used to analyze translations of the program. I finally settled on a linked-list structure after a long period of flailing with a very error-prone multi-dimensional array. Optimizing Genetic Algorithms for Use in CyphersKeith Diggs