Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
The Pennsylvania State University
The Graduate School
College of Engineering
EVOLVING INTELLIGENT CONTROL
RULES FOR A COLLABORATIVE
MULTI-AGENT MANUFACTURING CELL
A Dissertation in
Industrial Engineering
by
Marc Duane Latorella
© 2017 Marc Duane Latorella
Submitted in Partial Fulfillment
of the Requirements
for the Degree of
Doctor of Philosophy
December 2017
ii
The dissertation of Marc Duane Latorella was reviewed and approved* by the following:
Soundar R. T. Kumara
Allen E. Pearce and Allen M. Pearce Professor of Industrial and Manufacturing Engineering
Dissertation Advisor
Chair of Committee
Guodong Pang
Associate Professor of Industrial and Manufacturing Engineering
Conrad Tucker
Associate Professor of Industrial and Manufacturing Engineering
and School of Engineering Design Technology
Michael Saunders
Professor Emeritus of Entomology
Janis Terpenny
Peter and Angela Dal Pezzo Professor of Industrial and Manufacturing Engineering and
Head of the Harold and Inge Marcus Department of Industrial and Manufacturing Engineering
*Signatures are on file in the Graduate School.
iii
ABSTRACT
How can effective intelligent control rules be determined for complex multi-agent
systems? Finite state automata are used to model how agents take actions to move them
between different conditional states. Agent software must effectively encode this
behavior and facilitate optimal agent collaboration. Often, complexity of the behavior and
the unforeseeable nature of emergent agent interaction makes for difficult a priori
development of intelligent controllers. An evolutionary learning method was constructed
to derive intelligent control rules for heterogeneous or homogeneous agents to
accomplish individual and system goals. These collaborative agents rely on sensor
information to inform their actions instead of relying on centralized tactical coordination
or interagent communication.
The evolutionary learning program required the instantiation of a pool of
intelligent controller solutions. A set of probabilistic vectors was selected as the format of
the intelligent controller solution. This format was chosen with an eye towards potential
continued adaptation once deployed in real-life autonomous scenarios. This solution form
also allowed for application of numerous genetic operators during the reproductive phase,
as well as reinforcement learning, during and after the simulation fitness evaluation.
Rules associated with condition states were only added as those states that were
encountered during simulation evaluation, thus maintaining compactness and tractability
of the method. Because the iterative genetic process is so closely intertwined with the
simulation process, a pre-existing simulation software package could not be used. This
required the programming of both the evolutionary method as well as the simulation
testbed, which included the modeling of all agents and the environment as well.
iv
A problem scenario was chosen wherein multiple automated guided vehicles
process parts through a manufacturing cell. Method validation was accomplished by
evolving intelligent control rules which resulted in optimal behavior of the multi-agent
system. Numerous experiments were then performed to optimally allocate controller
types to agents, or to overcome sensor or agent faults.
There is an increasing need to address real-world autonomous multi-agent
applications which require flexible controllers that can adapt to changing circumstances
in remote environments. This method was developed to be a step towards achieving that
goal.
v
TABLE OF CONTENTS
List of Tables .………………………………………………………………………………....
List of Figures .………………………………………………………………………………...
Acknowledgments .……………………………………………………………………............
Chapter 1: INTRODUCTION.…………………………………………………………………
1.1 Problem Statement …………………………………………………………………...
1.2 Problem Scenario: AGVs in a Manufacturing Cell…………………………………..
1.3 Research Background………………………………………………………………...
1.4 Research Motivation………………………………………………………………….
1.5 Discussion of the Research Problem……………………………………………........
1.6 Overview of the Solution Methodology…………………………………………..…
1.7 Contributions ……………………………………………………………………..…
1.8 Organization of the Thesis………………………………………………………..…
Chapter 2: BACKGROUND LITERATURE………………………………………...............
2.1 Collaborative Multi-Agent Systems………………………………………………...
2.2 Genetic Algorithms…………………………………………………………….........
2.3 Evolutionary Strategies……………………………………………………………..
2.4 Related Research Literature Survey ………………………………..........................
Chapter 3: METHODOLOGY..………………………………………………………………
3.1 AGVs in a Manufacturing Cell……………………………………………………..
3.1.1 AGV Problem Representation Objective ….………………………….…….….......
3.1.2 AGV Problem Control & Effectiveness Objectives………………………………...
3.1.3 AGV Problem Validation Objective …………………………………….….…........
3.1.4 AGV Problem Implementation Objective…………………………………………..
3.1.5 AGV Problem Experimentation Objective ……………………………….....….......
3.1.6 AGV Problem Instructional Objective …………………………….…….…….…....
3.2 Generalized Methodology …………………………………………………..………
3.2.1 Representation Objective …………………………….………………………..……
3.2.2 Control & Effectiveness Objective………………………………………………..…
3.2.3 Validation Objective………………………………………………..……………….
3.2.4 Implementation Objective…………………………………………………………....
3.2.5 Experimentation Objective ……………………………….....…................................
3.2.6 Instructional Objective …………………………….…….…….…............................
Chapter 4: RESULTS & EXPERIMENTS......…………………………………………..…...
4.1 Method Development Results…………………………………………..…………...
4.2 Overview of Experiments…..…………………………………………..……………
4.3 Experiment 1: Midsize / Nine-Action / Individually-Controlled………………..………
4.4 Experiment 2: Midsize / Nine-Action / Bookend-Controlled……………………..…….
4.5 Experiment 3: Midsize / Nine-Action / Universal-Controlled…………………………..
4.6 Experiment 4: Midsize / Nine-Action / Divided-Controlled……………………...…….
4.7 Experiment 5: Midsize / Five-Action / Individually-Controlled……………….……....
4.8 Experiment 6: Midsize / Five-Action / Bookend-Controlled……………………..……
4.9 Experiment 7: Midsize / Five-Action / Universal-Controlled……………………….....
4.10 Experiment 8: Midsize / Five-Action / Divided-Controlled…………………………...
4.11 Experimental Results……………………………………………………………..….
vii
viii
x
1
1
2
5
9
12
14
19
20
22
22
34
40
42
46
46
47
48
58
61
61
61
62
62
67
75
75
76
77
78
78
91
93
107
118
131
143
157
169
180
192
vi
Chapter 5: GENERALIZABILITY AND SCALABILITY………………………..…………
Chapter 6: UNIQUENESS AND CONCLUSIONS….…………………………………..….
Chapter 7: FUTURE WORK….……………………………………………………..……….
Appendix: Main Program Code………………………….………………………………….
References………………………….………………………………………………………...
198
201
204
205
229
vii
LIST OF TABLES
Table 2.1: Research Literature Survey: Evolutionary Learning of Multi-Robot/Agent Systems…….
Table 3.1: AGV Validation Problem: State Transition Rules Determined By Inspection…………....
Table 4.1: Midsize Problem Results: Nine Actions vs. Five Actions……………………………..….
43
60
194
viii
LIST OF FIGURES
Figure 1.1: AGVs in a Manufacturing Cell Problem………………………………………………….
Figure 2.1: Reactive Subsumption Agent Control Architecture……………………………………....
Figure 2.2: Markov Decision Process……………………………………………………………..…..
Figure 2.3: Q-Learning…………………………………………………………………………….….
Figure 2.4: Learning Classifier Systems and BBA Algorithm…………………………………….….
Figure 2.5: Genetic Algorithms Example………………………………………………….………….
Figure 2.6: Adaptive Landscape………………………………………………………….…………...
Figure 3.1: AGV Problem and System Characteristics………………………………….…………….
Figure 3.2: AGV Problem Condition & Action Values……………………………….………………
Figure 3.3: Initial Unbiased Automaton for AGV Grid Problem……………………….…………….
Figure 3.4: Three Initial Automaton Solutions Each With One Start State……………….………………
Figure 3.5: Solution Zero For AGV Grid Problem Executes a State Transition………….……………..
Figure 3.6: Two Automata Solutions After simulation training of visited states……….………………
Figure 3.7: Crossover point selection applied to the AGV Grid problem……………….……………
Figure 3.8: Hybridization of 1st generation automata forms a new offspring solution……….………
Figure 3.9: Small AGV Problem for Validation…..…………………………………….……………
Figure 3.10: Method to determine the next state in the automaton……………………….………..…
Figure 3.11: Automaton representation using start state and unbiased probabilities……….…………
Figure 3.12: General form of probability value and related variables…………………….………….
Figure 3.13: General form of method’s automaton solution…………………………….……………
Figure 3.14: Recombination technique applied to automaton structure……………….……………..
Figure 4.1: Generalized Representation of Collaborative Multi-AGV Problem…….……………….
Figure 4.2: Alternate Representation of Problem…………………………………….………………
Figure 4.3: Initial Configuration of System for Experiment 1……………………….………………
Figure 4.4: Evolving Fitness Scores for Experiment 1.………………………………………………
Figure 4.5: Generational Fitness for Experiment 1…………………………………………………..
Figure 4.6: Scores of Three Components of Fitness for Experiment 1………………………………
Figure 4.7: Initial Configuration of System for Experiment 2……………………….………………
Figure 4.8: Evolving Fitness Scores of Experiment 2……………………………………………….
Figure 4.9: Generational Fitness for Experiment 2………………………………………………….
Figure 4.10: Scores of Three Components of Fitness for Experiment 2…………………………….
Figure 4.11: Initial Configuration of System for Experiment 3……………………………………..
Figure 4.12: Evolving Fitness Scores for Experiment 3……………………………………………..
Figure 4.13: Generational Fitness for Experiment 3…………………………………………………
Figure 4.14: Scores of Three Components of Fitness for Experiment 3………………………..……
Figure 4.15: Initial Configuration of System for Experiment 4……………………………………...
Figure 4.16: Evolving Fitness Scores of Experiment 4………………………………………………
Figure 4.17: Generational Fitness for Experiment 4…………………………………………………
Figure 4.18: Scores of Three Components of Fitness for Experiment 4…………………………….
Figure 4.19: Initial Configuration of System for Experiment 5…………………………….………..
Figure 4.20: Evolving Fitness Scores for Experiment 5……………………………………………..
Figure 4.21: Generational Fitness for Experiment 5…………………………………………………
Figure 4.22: Scores of Three Components of Fitness for Experiment 5……………………………..
Figure 4.23: Initial Configuration of System for Experiment 6……………………………………...
Figure 4.24: Evolving Fitness Scores of Experiment 6………………………………………………
Figure 4.25: Generational Fitness for Experiment 6…………………………………………………
Figure 4.26: Scores of Three Components of Fitness for Experiment 6…………………………….
Figure 4.27: Initial Configuration of System for Experiment 7…………………………..…………
Figure 4.28: Evolving Fitness Scores for Experiment 7…………………………………………….
Figure 4.29: Generational Fitness for Experiment 7…………………………………...……………
Figure 4.30: Scores of Three Components of Fitness for Experiment 7…………………………….
4
25
30
31
32
39
41
47
47
48
50
51
54
55
56
58
65
68
70
70
72
79
80
94
104
104
106
107
116
117
118
119
128
128
129
131
140
141
142
143
155
156
157
158
167
167
169
170
178
179
180
ix
Figure 4.31: Initial Configuration of System for Experiment 8…………………………..…………
Figure 4.32: Evolving Fitness Scores of Experiment 8……………………………………………...
Figure 4.33: Generational Fitness for Experiment 8…………………………………………………
Figure 4.34: Scores of Three Components of Fitness for Experiment 8…………………………….
181
190
191
192
x
ACKNOWLEDGMENTS
I would like to thank my advisor, Dr. Soundar Kumara, for all of his help and
support over the years. His unlimited patience and dedication is a reflection of the deep
commitment he has to his students as a mentor and as a teacher. It is an example which is
inspiring and will always be remembered. I would also like to thank my other committee
members, Dr. Guodong Pang, Dr. Conrad Tucker and Dr. Michael Saunders for their
guidance in shaping the direction of this dissertation. Thanks are also due to the faculty of
the Industrial and Manufacturing Engineering Department, including Dr. M. Jeya
Chandra, Dr. Robert Voigt and Dr. Janis Terpenny, for their help facilitating my pursuit
of this degree. I must also thank Lisa Fuoss and the rest of the administrative staff for all
of their assistance. Finally, I would like to thank my parents and my sister for their
unwavering support and encouragement over the years.
During my time at Penn State, I am thankful to have received funding and
learning opportunities in the form of several teaching assistantships, a research
assistantship and a fellowship. From May 1996 to August 1998, I received a research
assistantship at the Applied Research Laboratory at Penn State, which is a division of the
Office of Naval Research. My work there partly inspired the chosen direction of my
dissertation research. I was also granted a GSRP fellowship from July 2000 to June 2002,
under NASA Research Grant NGT-1-52249, to explore advanced control strategies for
the FreeFlight autonomous aircraft program. I acknowledge that the aforementioned
federal funding was used to support some of the work described in this dissertation. The
findings and conclusions within this dissertation do not necessarily reflect the view of the
funding agencies.
Chapter One: Introduction
1.1 Problem Statement
There is a current trend toward proliferation of collaborative multi-agent systems
across numerous application areas. Agents are increasingly expected to operate
autonomously in complex and dynamic environments. The indeterminable nature of
complex system interaction prohibits derivation of effective intelligent controllers by
traditional methods. The purpose of this research is to create a unique hybrid evolutionary
learning method which uses modified probabilistic finite state automata to develop
customized intelligent controllers for complex, collaborative multi-agent systems. This
hybrid method employs both evolutionary learning and reinforcement learning
techniques. The method will be applied to a manufacturing cell problem with
collaborative automated guided vehicles (AGVs) to demonstrate its effectiveness in
deriving the intelligent control rules which lead to optimal collaborative behavior where
communication and tactical guidance is limited or even non-existent.
A number of sub-problems are associated with the derivation and application of
this method. The sub-problems are listed below (each sub-problem forms as an
objective):
1. Representation Objective devises a standard approach to reformulate any
problem in terms that will allow the method to be applied. This involves fully
understanding the conditions and actions that define the multi-agent system.
2. Control Objective constructs the method so that it can continually evolve a
pool of prospective intelligent controllers for the application problem. This
2
involves constructing an evolutionary learning process as well as a simulation
environment in which the pool of intelligent controller solutions can be
evaluated.
3. Effectiveness Objective involves the creation and fine-tuning of goal
performance functions within the simulation runs as well as the setting of
genetic and other process parameters to achieve successful evolution of an
optimal solution.
4. Validation Objective applies the method to a small problem for which the
control rules can be determined easily by inspection. These results are
matched by the control logic derived by the method thus confirming the
efficacy of the method for use in larger problems.
5. Implementation Objective entails application of the method to a realistic
multi-agent system scenario, resulting in the derivation of intelligent
controllers. The sub-problems in this research will be studied with reference to
a scenario involving automated guided vehicles in a manufacturing cell.
6. Experimentation Objective uses the method to derive different types of
controller solutions under different circumstances such as introduced sensor
faults or differently allocated controller types. Controller allocation
experiments can be performed to decide the optimal control rules for different
agents given a particular system configuration.
7. Instructional Objective enables the extraction and study of evolved system
rules so that the underlying behavioral logic evolved is better understood. The
evolved rules may serve as example strategies for other potential applications.
3
1.2 Problem Scenario: AGVs in a Manufacturing Cell
At this point, further discussion of the method would benefit from the following example
of a multi-agent system. The problem scenario of multiple AGVs in a manufacturing cell
involves a number of autonomous AGVs tasked with the goal of removing a series of
parts from a part bench and transferring them to a dump cell. The AGVs in this particular
system are capable of taking or giving parts, either from the part bench or from a
neighboring AGV. The AGVs are equipped with sensors to determine the presence of
parts. These parts may be resident to themselves, being held by neighboring agents or
waiting on the bench. The AGVs are also able to move one space at a time within the
corridor in front of the part bench providing there are no obstacles. On-board sensors are
also employed for part, neighbor and wall detection for use in obstacle avoidance. AGVs
may be equipped with different functionality in its passing or moving capabilities. They
may also be governed by different or common controller logic, depending on how
controllers are allocated to the AGVs. This AGV navigation problem is scalable in
complexity given the number of system parameters involved. The problem parameters
include the number of different AGVs, the number of parts and part types, the number
and location of deposit points, the stacking limit, the grid dimensions and shape, the
range and functionality of AGV sensors, and the means of communication (if any)
between AGVs.
4
Figure 1.1: AGVs in a Manufacturing Cell Problem
A simpler version of the AGV problem involves just two AGVs with no
communication, one type of part, one deposit cell, and a short corridor in which AGVs
pass in front of the part bench. For this scaled-down version of the problem, the effective
behavioral rules, which constitute the intelligent controller for the system, can be easily
realized through conventional methods of inspection. Alternatively, the problem can be
scaled up in complexity to be representative of a class of complex, collaborative multi-
agent systems for which derivation of the intelligent control mechanism is extremely
difficult if not impossible through conventional means. The complex interaction between
system agents cannot be predetermined simply by studying the system. The new method
developed as part of this research seeks to evolve intelligent controllers for these types of
complex systems.
The simpler AGV problem will be used to demonstrate the details of the method
as well as serve as a validation of the method. Because of the limited scope of the simpler
5
AGV navigation problem, an intelligent controller solution can be obtained through more
conventional means. This solution derived beforehand can be compared to the solution
subsequently generated by the application of the method to the problem. If the method
produces an intelligent controller that elicits system behavior comparable in performance
to the predeterminable system behavior, then the method will be validated. Though the
method will be validated through application to a small problem, the scalable nature of
the problem will point to the potential value of the method in its application to more
complex, collaborative systems.
1.3 Research Background
An agent is software or a system operating autonomously within an environment towards
a specific objective (Wooldridge 1995). Intelligent controllers for agents are often
modeled by finite state automata machines (FSA) where states are defined by the values
of system conditions and available agent actions can transition an agent to a new state
within the model. Categories of autonomous agents were first described, in descending
order of dependence on rules and environment awareness, and increasing order on self-
reliance, as (1) deterministic, (2) stochastic, and (3) adaptive (Russell 1995).
Deterministic automata carry out a pre-specified set of rules designed and developed
from the outset by programmers knowledgeable of the required actions. Such automata
are extremely reliant on external stimuli and signals. They are also dependent on the pre-
described rules and have no flexibility to adapt to unforeseen events. Stochastic automata
are based on a set of training rules derived from off-line observations and stochastically
optimized (Bellman 1961). Adaptive automata are the least dependent on environmental
6
awareness, dynamically establish their own training rules while in operation, and are the
most able to adapt to unforeseen changes and tasks.
Because of their ability to formulate new rules of behavior and functions without
external programming, and because they can grow in experience over the course of their
deployment, adaptive automata are best suited for the distributed collaborative multi-
agent applications that have grown increasingly complex in recent years. This trend will
assuredly continue into the future. Often, agent systems must operate in harsh or remote
environments, where the desired behaviors and actions of the agents cannot be known
prior to deployment. Additionally, there are dynamic environments, which present
unexpected situations that require autonomous agents to change their existing behaviors
or adopt new behaviors. Also, as the complexity of tasks relegated to agents increases, it
becomes advantageous to use multiple collaborating agents to mutually solve a common
problem or to accomplish a common task.
Multiple agents must collaborate to solve problems, often autonomously. In multi-
agent applications, the complexity of interactions among agents and between agents, and
the environment, is too great for an expert to foresee. Creating a deterministic
collaborative agent architecture is all but impossible except for the most elementary of
systems (Douglas 2013). For such complex systems, methods must be employed that
allow agents to autonomously develop their own behaviors and actions towards
completion of the collaborative goal. The agent architecture that dictates the actions of
the individual agents and the potential communications between agents must be flexible
enough to allow new behaviors to be acquired in the course of agent operations.
7
Numerous applications demand more flexible agent architecture. The increasingly
popular SWARM technology involves the use of many roving autonomous agents to
engage in collaborative problem solving often in challenging environments (Genovese et
al, 1992). NASA and other research institutions are developing teams of autonomous
rovers for planetary survey operations (Agah 1994, Miller 1990, Reid et al, 2013). The
Office of Naval Research has coordinated underwater vehicles of different academic
institutions towards complex task efforts such as autonomous mapping of the ocean
bottom (Curtin 1997). AGV work forces will be deployed to autonomously clean up
hazardous waste in environments unsafe for humans (Arkin 1989). The proliferation of
internet applications also necessitates smarter means of producing modifiable agents.
The complexity of collaborative systems brings on a whole new set of problems.
Firstly, it is not always possible to construct fully functional agent architecture from the
outset due to the complex and often indeterminate nature of agent interactions. Secondly,
a group of agents collaborating to solve a problem is collectively, a complex adaptive
system. Within the larger system, each agent is itself a complex system of functions. Just
as with agents of biological adaptive systems, complex software agents must interact,
both synergistically and competitively, within the greater environment, of which they are
actually a part. Additionally, they must interact with other components of the
environment such as other agents, time, and space. Therefore, the fitness of any given
agent toward the contribution to a desired task is highly dependent on the rest of the
system (Nowak 2006). In an optimized system, with each component residing on a local
optimization peak of a fitness landscape representing the entire system, a slight
perturbation may result in drastic system-wide changes in fitness. In collaborative
8
systems, it is system fitness, not individual fitness that determines success, yet individual
fitness is essential. However, without individual fitness, individual agents would not
survive. Various components of a system, whether sub-functions within an agent, or
agents within a system, may be in competition with each other. This is because they may
become different and mutually exclusive or competitive solutions to the same problem
with possibly equal fitness. In such cases, advancement of one agent results in a loss to
the other. They may stalemate each other (Weise 2011). Autonomous agents must be
endowed with the ability to cope with such changes, and to acquire new functions as the
need presented by a dynamic environment occurs. Since collaborative autonomous agents
have the dynamics of complex systems, they must abide by the rules governing complex
systems. Their most difficult challenge is that of co-evolution (Maes 1990).
The key to collaborative task performance is that both the individuals and the
group are subject to a fitness test, because the individuals operate as a part of a group
upon which their individual fitness is dependent. Intelligent controller architectures for
collaborative agents are often modeled by a hierarchy of interconnected finite state
automata. Each finite state automaton dictates the agent actions that should be made
under various system conditions. Some genetic algorithms successfully evolve
collaborative agent behaviors, but this evolution involves the sequencing of pre-defined
functions to constitute different simple behaviors (Maskell et al 1996). More complex
behaviors are difficult to evolve using this method. Employing fixed pre-defined
functions limits an agent’s ability to modify these elemental behaviors. Such methods are
only able to optimize behaviors composed of the given immutable functions.
9
1.4 Research Motivation
The development of intelligent controllers for collaborative autonomous agents is the
main objective of this research. As already pointed out, developing intelligent controllers
through customary means can be difficult because of the increasing complexity of multi-
agent system applications. Creating automata models for these complex collaborative
behaviors simply by inspection is often impossible. Neural networks can be trained to
produce the desired output from the given input conditions, but they do not allow
recombination of subsystem solutions which is necessary for the learning of multi-agent
behaviors. Neural networks are also limited in the ability to optimize because of the
internal competition of co-evolving solutions within its network layers to the same
problem (Iba 1996). Once neural networks are trained they are slow or impossible to
retrain (Gowda and Mayya 2014). Genetic algorithms allow for optimization by
recombination, but they lack the reinforcement training features of neural networks
(Michalewicz 1992). GAs are more reactive to new conditions and genetic operators are
able to move instruction strings from one local optimum to another without having to
transgress valleys in the fitness curve. Intelligent agent controllers must be adaptable to
new situations once the agents are deployed in a real environment. These facts drive this
research towards development of new hybrid approach drawing on the strengths of GAs
with reinforcement learning aspects.
The new algorithm will be developed to evolve a controller for problems with
complex collaborative behaviors in which pre-defined functions are too difficult to
determine from the outset. This algorithm will achieve evolution of system behavior by
employing both group and individual selection methods, and by scoring the probabilistic
10
intelligent controller solutions. Only atomic system conditions and actions will be
employed in the new method, so that complex system behavior can be evolved in a
simulation without relying on fixed pre-defined functions. It is also desired that the
method be developed with an eye towards being adaptive, allowing for the possibility of
continued modification of collaborative behavior once the agents are potentially deployed
in a real environment. Often a group of autonomous collaborative agents must
continually adapt their behaviors in the field to deal with unexpected circumstances and
dynamic environments since all such scenarios are not foreseeable in the training
simulation. The method should also be applicable to more than just networks of identical
agents. Many systems decompose the global task among a number of heteregeneous
agents. Thus, the method should be able to evolve different control schemes for non-
identical agents, which together engage in collaborative behavior. The method should
allow for evolution of behaviors from an initially untrained controller. The method
should also be able to build more complex behaviors from initial encoded intelligence
(Quinn 2000). In contrast to other methods that use fixed functions, the method must be
able to continually evolve the initial strategies instead of having them remain immutable.
This approach to adding layers of complexity to a pre-existing agent controller is critical
to the object-oriented approach and the modular construction of agents. Such an
evolutionary method could potentially allow independently formulated agents with
completely different control schemes to develop their means of interaction. This desired
feature of seeding agent behaviors prior to the simulation is already a move towards
enabling continued behavioral adaptation after the simulation when the controller is
deployed within the real environment. Ideally, the evolutionary method used within the
11
simulated environment will continue to exist in some capacity during the real-world
operation of the agents. This is the most difficult challenge since, in the real application
environment, it is much more difficult to measure individual and global performance of
agents towards continual evolution of the group strategies without the centralized means
of doing this, as is possible during the simulation training. However, limited
communication among agents and/or periodic regrouping may still allow for this
continual adjustment of strategies in the field if the controller is in a form that allows for
such adaptation (Jennings 1993). For example, an application environment, such as with
an underwater scenario, may inhibit full communication between controllers due to the
limited SONAR range. But planned rendezvous of agents may allow for information
exchange to occur now and again. As previously stated, a new evolutionary method is
required for highly complex applications where development of control schemes by
inspection is too difficult. It stands to reason that, once effective control schemes are
evolved using this method, that it would be valuable for researchers to be able to study
the evolved rules to gain insight into the complex strategies evolved for the problem.
Thus, ideally, the new method should allow the evolved control schemes to be
reconstituted into a presentable form which is intelligible to researchers for subsequent
study of complex agent behavior. Understanding the evolved strategy for a particular
agent behavior offers researchers the potential to endow this complex behavior in agents
in other collaborative task applications. The new method to be developed features some
additional challenges as well. The implementation of the method must be
computationally efficient both within the simulation training and in the subsequent
operational phase of the agent network. The method must be scalable to the size and
12
complexity of practical applications. The generalizability and scalability of the method to
application probems will be discussed in later chapters.
1.5 Discussion of the Research Problem
Problem: To develop a method which will evolve an intelligent controller which
facilitates collaborative behavior between autonomous agents in complex scenarios, with
limited communication and supervision.
Sub-problem 1: Decompose the system into component actions and conditions to
facilitate initial representation of agent controller schemes. This representation must also
allow for initial seeding of behaviors within agent controllers.
Sub-problem 2: Develop a recombination process that will yield an improved pool of
controller solutions with every new generation. This process must be flexible enough to
allow multiple effective strategies to proceed in parallel within the solution pool. Create
the simulation environment necessary to measure the performance of each potential
solution. The simulation must appropriately model the interactions of agents within the
real environment. The evolutionary process and the simulation within must be
programmed.
Sub-problem 3: Devise the means by which controller solutions are modified during the
simulation testing to reflect negative and positive reinforcement learning. This objective
includes deriving the appropriate goal performance measure functions to achieve
increasingly complex layers of behaviors within the pool of controller solutions.
Experiment with the performance measure functions as well as the numerous parameters
of the simulation and evolutionary processes in order to achieve optimal method results
13
Sub-problem 4: Apply the method to a small problem for the purposes of method
validation.
Sub-problem 5: Apply the method to a larger more realistic problem.
Sub-problem 6: Perform experiments on evolving controllers under different
circumstances such as introduction of sensor faults or changes in agent functionality or
use of alternative controller allocation approaches.
Sub-problem 7: Explore how complex strategies can be gleaned from the controller
solutions generated by this evolutionary method. The ability to extract sub-behavior
strategies from solutions will benefit study of similarly complex autonomous agent
systems.
This dissertation describes the development of the method for evolution of
collaborative autonomous agent behaviors to meet the challenges addressed above. The
method improves upon current neural network and simple genetic algorithm approaches
that fail to produce modifiable control mechanisms for complex, collaborative networks
of agents (Gowda and Mayya 2011, Weise 2011). The problem scenario of AGVs in a
manufacturing cell will be used to describe in detail each step of the devised method. The
method will be applied to a small version of this problem for which a researcher could
develop the control rules simply by inspection. This comparison will serve as a validation
of the developed method so it can be further applied to a larger problem. Once validated,
the method will be applied to a more complex problem for which derivation of the
control schemes could not have been possible through initial inspection. The resultant
control schemes could be used to operate the agents within the real environment. The
control scheme solutions of the method can also be transformed back into a more
14
conventional form allowing the evolved complex collaborative strategies to be studied.
These evolved control schemes will be in a form that could possibly allow for continued
adaptation of behaviors once deployed in a real environment.
1.6 Overview of Proposed Solution Methodology
The development of the method was motivated by the aforementioned shortcomings of
current methods in deriving intelligent controllers for complex, collaborative multi-agent
systems. The seven objectives towards developing the solution methodology are listed
below.
• Representation
• Control
• Effectiveness
• Validation
• Implementation
• Experimentation
• Instructional
These objectives will be described in terms of the AGV navigation example where
AGVs will be representative of agents in the general case. In this section, a general
description of the research methodology is undertaken. In chapter four, a detailed
explanation and mathematical formulation is given using the AGV problem as an
example.
The hierarchically structured interconnected automata customarily used to model the
intelligent controllers within complex multi-agent systems must be reconstituted in a
form that allows for evolutionary learning. Therefore, the Representation Objective is
to decompose the agent problem into component conditions and actions. For example,
15
with respect to the AGV navigation problem, this will be achieved by establishing every
possible external condition determinable by AGV or environmental sensors as well as
internal conditions that describe the internal status of the AGVs. The full range of
variables to describe AGV actuators must also be determined. Once these conditions and
actions are known, they can be used to describe a unique state within a new single
automaton to control all the behaviors for an AGV in the system. The enumeration of
states within the automata is accomplished through bitwise representation of the
conditions and actions. By absorbing the conditions and actions into the state definition,
the state to state transitions within this new automaton become conditionless and changes
in action variables that occur between successive state definitions dictate the associated
actions implemented. Because the automata arcs are conditionless, an automatic
transition will occur between states based on the implemented action. By allowing these
transitions to occur with every simulation time tick, enacting of the automata controller
within a discrete event simulation is facilitated. External or internal condition changes
can often cause a jump between states as well as the action changes of other AGVs. Thus,
collaboration between AGVs can occur through their mutual effects on the environment
or directly as a result of their actions. Augmenting the state definitions to include the
conditions and actions allows for conditionless transitions, but also vastly increases the
number of states in the automata. Few state-defining combinations of conditions and
actions actually occur; thus, the method need only deal with those states encountered.
Creating a new single automaton in this fashion allows for a probabilistic transitional arc
to be placed between every two states. This allows the method to use an altered form of a
stochastic finite state automaton as the representational data structure to facilitate
16
evolutionary learning. This is a unique approach to represent the probability values on the
transitional arcs, which allows for recombination optimization to occur. This will be
discussed in greater detail in the methodology section.
The Control Objective involves how a pool of controller solutions undergoes the
evolutionary learning process. A pool of untrained AGV controller automata is created as
the first generation of solutions. Each first-generation solution will be constructed by
choosing a random state with an equally probable chance of transitioning to every other
state. Although the method may advance with initially untrained solutions, it does allow
the possibility of initializing a pool of solution schemes with pre-existing behavioral
rules. This can be accomplished by pre-setting the automata arc probabilities to ensure
that state transitions always occur a certain way. However they may be initialized, each
of these solutions in the generational pool is evaluated by a simulation run. Within each
simulation step, an agent relies on its controller logic solution to inform its next action.
The method uses probabilities to determine the next state to visit, thereby adding this new
state to the particular solution’s controller representation. Goal performance functions are
used to assess the extent to which the transitions made using a particular solution’s
controller have resulted in successful collaborative behavior. This measure of
performance is used in both the learning process and the genetic process. In the learning
process, performance measure for a solution determines whether the path probabilities
within the automata solution should be negatively or positively reinforced. This
performance measure score is also used to determine the solution’s likelihood of mating
and passing on its rule logic to the subsequent generation of solutions. In the genetic
process, the most successful solutions in the pool are allowed to reproduce to create the
17
next generation of solutions. These solutions use various genetic operators to achieve
recombination of sub-behaviors learned by different agent automata solutions in an
attempt to build a new agent with the successful sub-behaviors of each parent solution.
Simulation is used to assess the performance of each solution within a generation. The
genetic process continues to produce generations of solutions until the best controller
solution exemplifies successful collaborative AGV behavior.
After the construction of the method’s evolutionary and simulation aspects, the
Effectiveness Objective required that significant testing must be done to determine the
desired settings for their parameters. Experimental run results are used to fine-tune the
performance measure functions used within the simulation as well as the reinforcement
learning. Further testing is used to refine the evolutionary method parameter settings
which aim to move the system towards optimal behavior.
Validation Objective can be achieved by applying the method to the simpler
form of the AGV problem for which a successful controller can be derived from the
outset by inspection. By comparing the performance of the evolved controller mechanism
with the performance of the conventionally derived controller, the effectiveness of the
method can be determined. One of the additional features of the method is that behaviors
can be modified in response to changes in the dynamic environment. This is an important
feature in that it allows for autonomous AGVs to adapt to new situations. The method can
be shown to effectively accomplish this task by altering the conditions within the
simulated environment or by altering the goal performance functions. The adaptive
method will continue to adjust towards these new conditioned or objectives.
18
The Implementation Objective involves applying the method to a multi-agent
system such as the AGVs in a Manufacturing cell. This will serve to develop intelligent
controllers for this complex, collaborative scenario. During the development of the
method, the AGV problem will be used to experiment with method parameters. It will be
shown in which ways the method is scalable and generalizable to other problems.
As part of the Experimentation Objective, once the method is developed and the
parameters are fine-tuned towards optimal performance, experiments can be conducted
on the AGV Manufacturing Cell problem. Different allocation of intelligent controller
types to the AGVs can impact collaborative performance of the system. Other
experiments may be run to explore impact of loss of agent functionality and potential
adaptability.
The Instructional Objective is to extract the evolved behavior encoded in the
controller so researchers may gain insight into the complex behavior evolved by the
method. This can be accomplished by applying some logical reduction and data mining to
the evolved state transition rules within the controller automata. This allows researchers
to implement the evolved complex strategies in other systems. For the small AGV
validation problem, nothing is to be learned by extracting evolved behavior rules since
the successful behavioral controller rules were determinable beforehand. However, for
augmented versions of the AGV problem or for more complex systems, the instructional
objective would be important and applicable. It is important to point out that the method
offers the ability to extract rule information whereas other approaches such as Neural
Nets do not because their solutions are distributed amorphously across a network.
19
1.7 Contributions
The new method to be developed will evolve more efficient and modifiable intelligent
controllers for autonomous agents in complex collaborative scenarios. This method may
be used in different application problems. It may be used to coordinate behaviors of
automated guided vehicles, autonomous underwater vehicles, swarm AGVs, or AGV
subsystems provided the method can be scaled up appropriately. Though the method will
be developed using simple atomic actions, replacing these atomic actions with procedure
calls shows how the method may be scalable and may be useable for systems with higher
level hierarchical behaviors.
The method is unique in its representation and implementation. It applies to
networks of heterogeneous agents, allows for evolution of behaviors from an initially
untrained controller and builds more complex behaviors from initial encoded intelligence.
It also offers the potential to continually evolve initial strategies instead of having them
remain immutable and potentially enables continued behavioral adaptation after
simulation training when the controller is deployed in the real environment. It also allows
evolved control schemes to be reconstituted into a intelligible form providing instruction
for researchers. It is computationally efficient within simulation training and within the
subsequent operational phase of the agent network, and is potentially scalable to size and
complexity for practical applications. The proposed method improves upon current
Neural Network and Genetic Algorithm approaches which both fail to address the
preceding desired features of an intelligent controller for complex, collaborative multi-
agent systems.
20
There are many different approaches to evolutionary learning in multi-agent
systems as will be shown in the literature survey within this dissertation. They can differ
greatly in the types of problems being solved with regards to communication level
between agents, homogeneity vs. heterogeneity, task decomposition, genetic operators
and other features. It will be shown that the developed method is unique in a number of
ways. The method is novel in the way it encodes probabilistic finite state automata in the
rules format allowing for reinforcement learning.
Furthermore, the method will only add state transition rules as they are
encountered in the simulation thus guaranteeing a very compact and tractable final
intelligent controller logic. The intelligent controller solution format is probabilistic and
uses reinforcement learning during the simulation. This approach is done with an eye
towards keeping the rules flexible so that they may facilitate adaptability if ever deployed
in realistic remote and autonomous scenarios which pose the very hard problem of
requiring agents to synthesize new behaviors to deal with unexpected circumstances. This
method will also employ more genetic processes than most similar research in an effort to
keep the gene pool open to newly evolved tactics and also to avoid local optima. This
research will also provide application of the method to demonstrate how it can be used to
determine how to effectively allocate different controller logic within a heterogeneous
agent scenario.
1.8 Organization of the Thesis
Chapter One of this proposal states that the main objective of the research is to create an
evolutionary learning method to develop modifiable intelligent controllers for complex,
21
collaborative multi-agent systems. An AGV navigation system is the sample problem to
which the method will be applied. The general problem area of intelligent control of
multi-agent systems is discussed. The motivations for development of a new method are
presented and an overview of the proposed methodology is given.
Chapter Two provides background literature on research relevant to the method
developed in this thesis. This chapter will provide the information necessary to
understand the details of the project methodology.
Chapter Three presents the methodology used to accomplish the research objectives.
The example problem is used to demonstrate the workings of the method. The difficulties
and problems encountered during development of the method discussed, as is the
evolution of the method development. Method validation is achieved in this chapter as
well.
Chapter Four presents the results of method as applied to the AGV navigation problem.
There is also discussion of the controller allocation experiments performed.
Chapter Five contains a discussion of generalizability and scalability of the method for
application problems.
Chapter Six reflects on the uniqueness and contributions of the research.
Chapter Seven discusses future work that could be done using the developed solution
methodology.
22
Chapter Two: Background Literature
This section of the proposal offers background literature on many areas relevant to the
research and the development of the method.
2.1 Collaborative Multi-Agent Systems
Agents are often characterized as a computer system autonomously interacting within an
environment to meet certain objectives. Agents endowed with the appropriate technology
can make use of sensor information to make decisions about its actions. The decision-
making capability of an agent determines the conditions under which the agent can
influence its environment through action output. The term “agent” can be used to
describe any kind of control system. In the context of this research, agents can be thought
of as the software controllers for autonomous vehicles. Agent architectures are software
architectures to facilitate the decision-making process of agents. These agent
architectures must deal with the complexity of agent operations. A number of
environmental properties add to this complexity (Russell et al 1995). Accessibility allows
an agent full knowledge of its environment. Unfortunately, most agent environments are
inaccessible and the agent must operate with partial information. Deterministic
environments are those in which agent actions have a known and predictable effect.
Agent systems are prone to failure due to the non-deterministic nature of most
environments. In an episodic environment, the behavior of agents at one time is
independent of future behavior. Most environments are non-episodic, creating complexity
for agent decision-making. A static environment experiences changes by agent actions
23
alone. Most application environments, however, are dynamic, presenting a challenge to
agent control. Discrete environments can be thought of as events occurring in steps. Most
environments are continuous, which is a more challenging scenario for agents.
Intelligence in agents is defined by the ability to engage in flexible autonomous
decision-making to deal with operations in challenging environments (Wooldridge et al,
1995). Intelligent agents are reactive, in that they timely respond to environmental
percepts. Intelligent agents are also driven by pro-active behavior in pursuit of their
goals. Another characteristic of agents is their ability to interact with other agents in order
to meet their goals. These characteristics of intelligent agents are not easily realized. A
great deal of effort is often needed for agent to achieve reactivity, pro-activeness and
social cooperation and negotiation.
Agent control architectures are used to dictate what actions to perform under
certain system conditions. Architectures are often determined by the type of agents
involved. Logical deduction software is used for simpler logic-based agents. Reactive
agents call for a controller that prescribes actions for every particular situation. Some
BDI agents employ belief, desire and intention data structures to arrive at decisions. For
more complex scenarios, layered control architectures are used. Layered architectures
involve a hierarchy of software levels each making decisions at different levels of
abstraction (Brooks 1986).
Multi-agent systems contain cooperating agents that interact or avoid each other
in the process of performing tasks. Agents may be logic-based with pre-determined sets
of rules and contingency plans for changing conditions. More sophisticated agents may
have learning ability, allowing them to develop their own rules in response to changes.
24
They may be “rational”, conducting a task based on a perceived sense acquired from
accumulated data, to choose the betters solution among several options (Russell &
Norvig 2003). Some agents employ belief, desire, and intention (BDI) for decision
making. Agent control architectures are used to dictate what actions to perform under
certain conditions. The architecture is often determined by the number of agents
involved.
Reactive architectures, as shown below in Figure 2.1, emerged to deal with agent
problems where the symbolic representation of logic-based architectures failed. Reactive
architectures introduced the ideas that an agent is not separable from its environment and
that intelligent behavior must emerge from simpler behaviors. The most popular reactive
architecture proposed by Brooks achieves decision-making through a mapping of
situations to appropriate simple task behaviors in response (Brooks 1986). This
subsumption architecture arranges decision-making capability in layers with multiple
behaviors potentially enacted simultaneously. Higher layers represent low priority but
highly abstract behaviors. Lower layers involve simpler but more important preemptive
behaviors. A reactive controller for an agent can be derived by analyzing a system, and
determining which situations call for certain actions as well as the priority for execution
of these associative rules. Reactive architectures may be computationally efficient and
robust but they have some shortcomings. Reactive architectures use only information
about their local surroundings to make decisions because they do not employ a model of
the whole environment. This partial information limits their ability to make long-term
decision planning. The reactive architecture primarily involves fixed associative rules and
does not allow for experiential learning (Schoppers 1987). Finally, the design of a
25
reactive architecture can be difficult since the desired behaviors emerge through
interaction with the environment and these interactions are often too complex to be
divined during the controller design phase. Exhaustive experimentation with simulations
must often be employed to successfully design a reactive controller.
Figure 2.1: Reactive Subsumption Agent Control Architecture (Jennings 1996)
Autonomous agents operate in an environment without real-time guidance. They
may be rule-based which requires complex rules and anticipation of contingencies.
Alternatively, they may be learning-based, their rules determined by positive and
negative feedback to neural networks. They may also be evolution-based, developing a
set of complex rules by mimicking genetic processes to select the best rules of action.
26
Autonomous, collaborating multi-agent systems may be explicitly logic-based, use a
neural network or be evolutionary in nature. Neural networks reinforce nodes that
promote favorable actions and suppress unfavorable actions. Logic-based multi-agent
systems must be supplied with extensive instructions to avoid unforeseen events and
requirements. They must be endowed with extensive and complex instructions to avoid
unforeseen events and requirements. They must react to contingencies not easily
anticipated by a programmer. They must also be able to deal with the unique problems of
multi-agent systems, competition and convergence on a task. As the number of agents
increases, the interactions increase and optimizing such a system becomes very difficult
(Weise et al 2011).
Neural networks and stochastic systems develop their own rules through feedback by
reinforcing or repressing network nodes in response to feedback. Automata with develop
stochastic rules based on inputs. Neural networks are effective in slowly changing
environments because they tend to be locked in peaks of adaptive landscapes, after long-
term training. They become slow to adapt once trained (Gowda and Mayya 2014).
Evolutionary agents develop their own rules by genetic processes, which are rules of
self-organizing complexities. They are inherently self-optimizing. They can change
rapidly inresponse to changes in the environment. They are adept, when implemented
robustly, to solve conflicts, and to prevent system oscillation and stalemating between
agents. They are scalable and limited only by computer power requirements. Robustness
is dependendent on the customary mutation, crossover recombination, back-crossing, out-
crossing, epistasis (maintaining unused solutions for potential future use) and
chromosome elongation (ability to add genes as needed).
27
Compared to some areas of agent research, there are fewer reports of successful
multi-agent, collaborative, autonomous agents. Many of the agents begin with
preordained strings or decision trees, or they are used to improve the connections
between neural networks and the environment. The research in this dissertation focuses
on a method to develop a set of rules without prior biasing. There are fewer reports of
success in this area. One research paper in the literature survey used evolutionary
algorithms to develop multi-robot teams (Quinn 2000). It addressed the problem of
overlapping and convergent solutions. They used a clonal model with two teams,
consisting of homogeneous robots to decrease the internal interagent competition. It
worked better than a non-clonal model. Their use of genetic operators was limited to
mutation, crossover and elitism (maintenance of fittest solutions), in the next generation
gene pool. They biased the evolutionary process by beginning with a best estimate
solution.
Creating a society of agents features a significant increase in the complexity of
the system and the architecture required to control each agent. Multi-agent systems
require communication protocols to facilitate message exchange and processing for an
agent. Interaction protocols formalize the message exchange events that occur between
agents. A distributed system of computational agents with decentralized decision-making
is a natural approach to solving many problems which feature a distributed, dynamic
information environment. This distributed artificial intelligence approach is effective to
creating intelligent and distributed agent modules (DAI) applied to agent control
architecture allows for cooperation to occur when solving problems in a decentralized
multi-agent environment (Jennings 1996).
28
Agents engage in communication towards achieving coordination of joint activity
within the common environment. Coordination can involve cooperation of non-
antagonistic agents or negotiation between competing agents. For complex multi-agent
tasks, each agent ideally has a model of the environment as well as a model of every
other agent in the system. However, difficult environments impose decentralized
decision-making on the agents. It is unlikely that agents will be able to obtain complete
information about the status of other agents. The partial observability of the system that
each agent has further complicates social interaction and decision-making towards a
collaborative goal. There are numerous communication protocols used to facilitate
communication between agent societies such Knowledge Query and Manipulation
Language (KQML) (Finin et al 1994).
Distributed problem solving and planning involves coherence and competence.
Coherence is the idea that agents have as part of their individual goals the desire to work
with other agents. Competence is the idea that agents need to know how to work
effectively together. Most application problems require distributed problem solving.
Distributed problem solving is favored because it introduced parallelism as a way to
reduce the amount of computational time to solve the problem (Lane and McFadzean
1994). Distributed sensor technology also points to the future of decentralized control
technology. Multi-agent problem-solving involves a number of task sharing strategies.
Supervisory agents should decompose the task into a series of subtasks for other agents.
Subtasks should be assigned to capable and available agents. Subtask decomposition
should continue recursively until an agent can do the task individually. The fourth
29
strategy is the synthesization of the subproblem solutions into a problem solution by the
initial supervisory agent.
As the complexity of multi-agent system environments increase, agents are
required to intelligently learn and adapt to dynamic conditions. Centralized learning
involves agents learning in isolation, whereas decentralized learning involves several
agents involved in the learning process. The goal of this research is to devise an
evolutionary method for decentralized learning. One characteristic of decentralized
learning is the degree of decentralization. The use of genetic operations in the proposed
method provides a distributed and parallel nature to the learning. Another characteristic
of the learning is the exact nature of the interaction that facilitates learning. Interaction
can range from observation, simple message passing or more complicated means such as
dialogue exchange and negotiation. This is an important consideration when devising the
control and learning scheme for a multi-agent system. The rate of learning is limited by
the means and frequency of interaction between agents. For the method devised in this
research, problems are addressed which require little or no communication between
agents. The agents achieve collaborative behavior through sensing the effects on the
environment of other agents in the system. However, the method is not incapable of
addressing systems with more communicative abilities. Another characteristic of agent
learning is that agents must improve on both their individual goal performance as well as
the behavior that leads to group goal achievement. There are a number of learning
methods customarily used by agents. The method in this research primarily uses a form
of learning from examples or by practice. New behavior can be learned by the
30
presentation of negative and positive examples or through practical experience in the real
or simulated environment.
In addition to evolutionary learning, the method developed in this research also
uses a variation of reinforcement learning. Reinforcement learning allows a reactive
agent to select the next action to take from a set of potential actions. Once an action is
taken, a performance measure is provided as feedback to negatively or positively
reinforce the action taken. This learning can be modeled by a discrete time, finite state
Markov decision processes as shown below in Figure 2.2 (Kaelbing et al 1996).
Figure 2.2: Markov Decision Process (Kaelbing et al 1996)
The use of the Markov decision process is an attempt to train a series of agent
state transitions to realize goal behavior. There are various forms of reinforcement
strategies of this type such as Q-Learning shown below in Figure 2.3. Note that both
Markov Decision Process
(S,A,P,r) fully describes the agent environment at any given time
S, a set of states
A, a set of actions
P, a function which provides the probability of making a state transition from a state
s1 in S to a state s2 in S via an action a1 in A
R, a scalar reward function mapping from a state s1 and taken action a1 to a real-
valued reward
P: S x S x A [0,1]
r: S x A R
H, is an agent policy which maps from a current state s to desired action(s)
RH,s,t, is a random variable associated with an agent’s reward after using policy H for
t time steps after originating from state s
VH,y, is the expect value of the discounted sum of future rewards from starting at state
s to t time steps later
y is a discount rate 0<= y <1
VH,y = E{ ytrH,s,t}
31
Markov decision process and Q-learning require prior determination of state
decomposition in the agent architecture. Both also require prior policy functions to be
conceived based on state knowledge. The method in this research does not rely on
preconceived state definitions, but operates on the level of simple conditions and actions.
However, the principal of reinforcing transitional probabilities to encourage repeated use
of successful pathways is common to these methods and the subject of this research.
Figure 2.3: Q-Learning (Watkins 1989)
Classifier systems use environmental feedback to adjust rule strengths and often
use genetic algorithms to synthesize new rules. Similar to the Q-learning method, a
simplified classifier system attempts to train associative rules where a particular
condition implies a particular action. Each time step of an interaction cycle within the
environment results in feedback reinforcement of the classifier rule that had been selected
during that step. Multiple cycles constitute a trial of the system. The Bucket Brigade
Q-Learning
Finds a policy H* to maximize VH*,y(s) as defined in figure 2.2 above
Q, is a decision policy which estimates long-term discounted rewards for each state-
action pair
Q: S x A R
QH,y(s,a) = Va,H,y(s) defines the Q values such that a and H denote choosing an
action a at the current state followed by choices dictated by policy H
Action a is chosen to maximize reward VH*,y(s) = MAX QH*,y(s,a) for all s in S
a in A
If an action a in state s makes a transition to state s’ resulting in a reinforcement of R
then the associated Q value is updated by the following equation:
Q(s,a) (1-B)*Q(s,a) + B*(R + y*MAX Q(s’,a’))
a in A
B is a small constant learning rate
32
algorithm is a classifier system which links the reinforcement between time cycles. The
notation and classifier equations are given in Figure 2.4 below.
Figure 2.4: Learning Classifier Systems and BBA Algorithm (Dorigo 1994)
These types of reinforcement techniques are useful in systems in which agents
have limited expertise and limited information about individual or collaborative goals.
Coordination of behavior among agents is difficult under these circumstances, but
reinforcement techniques are a step towards developing control schemes. One of the
central questions in agent technology is: how useful, secure, necessary and complicating
are communications between agents? Communications can be prone to failure or errors.
In some applications, such as military ones, communications may be disfavored for
security reasons. Computational complexity may also arise due to an overabundance of
communication information to process. Similarly, it may be desired to reduce the
Learning Classifier Systems
(ci,ai) is a classifier where ci is a classifier condition and ai is a classifier action
St(ci,ai) is the strength of the classifier i at time step t
Bucket Brigade Algorithm
If classifier i fires a time step t and classifier j fires at time step t+1
and R is the external feedback from classifier i firing
and f is the fractional strength removed from classifier i then
St+1(ci,ai) = (1-f) * St(ci,ai) + f * (R + St+1(cj,aj)
BBA updates the strength of the last fired classifier i by removing a fraction of its
previous strength and replacing it by the complementary factor of the reinforced
strength of currently fired classifier j
33
complexity of an agent architecture by removing the need for modeling of other agents.
Ideally, an agent can determine the status of other agents and engage in collaborative
behavior simply through interaction with the environment. A key question is: what kind
of reinforcement techniques can achieve concurrent learning for multiple agents in a
complex environment without communications? This research proposes a new method
that will attempt to solve this problem.
Concurrent Isolated Reinforcement Learning (CIRL) can be described by a
number of characteristics. Tight and loose coupling refer to the different interrelatedness
of learning between multiple agents. Any two agents in a multi-agent system may have
different types of mutualism. Relationships can be cooperative, indifferent or adversarial.
The rate of feedback learning is another important feature in CIRL. There are resource
allocation issues that arise as well, such as the optimum number of agents required to
efficiently solve a task.
A number of test domains such as block pushing, resource sharing and robot
navigation have achieved CIRL learning among both cooperative and competitive agents.
CIRL has limitations under conditions of strongly coupled systems, delayed feedback and
a reduced number of optimal behaviors to develop. More work is required in the area of
CIRL. For instance, some global behaviors may be achieved by a group of identical
autonomous agents. Other situations may benefit from agents developing different but
complimentary problem-solving abilities (Balch 1997). The method proposed in this
research will allow for both of these approaches to evolve.
A great deal of work remains to be done in the area of multi-agent learning. Much
work is left to be done to address the differences in learning between systems with
34
varying levels of communications. This research will focus more on the area of
Concurrent Isolated Reinforcement Learning. The vast number of complex real-world
environments call for more exploration of evolutionary learning techniques. This research
project will employ genetic algorithms, various evolutionary techniques and variations on
the aforementioned reinforcement learning techniques in a method to facilitate
development of intelligent and modifiable multi-agent controllers.
2.2 Genetic Algorithms
Genetic algorithms are optimization strategies basd on genetic operators found in life.
They mimic evolution in that they result in a solution to problems that are often
unpredictable and optimized. For this reason, they are ideally suited to developing rules
for agents in complex environments or performing complex tasks. A pool of
informational string structures is created and a new generation of solutions is created by
mimicking mating between the strings. This achieves a new set of solutions constructed
of parts of the parent strings from the original generation. At every generation, a fitness
selection, as judged by system and individual fitness, is used to determine which
offspring solutions will prevail to repeat the process and reproduce to make the next
generation. A degree of randomization via mutation is introduced during the mating of
strings in an attempt to generate new substrings that may be of value. The use of GA was
motivated by the desire to make use of the effectiveness of natural adaptive processes and
to design AI systems software, which maintains these natural evolutionary mechanisms
(Holland 1975).
35
Intelligent controller solutions may occupy local optima within the landscape.
Optimization requires that the controllers’ solutions move from the less optimal local
peaks to higher or even global optima. The simplest genetic operator, mutation,
introduces random changes into a pool of controller solutions. When the level of fitness is
low, mutation and selection of the most fit can result in improved fitness of controller
solutions. However, as the adaptive landscape develops, and agents become more fit,
random changes results in decreased fitness, not more (Pigliucci 2008, Wright 1932).
Collaborating multi-agent systems present a problem to genetic algorithms. They
must work towards a common goal, despite having individual requirements within a
system. They may enter into a conflict where individual fitness towards a local task and
collaborative fitness oppose each other. In such cases, a stalemate occurs. It is proposed
that both individual and group selection apply through multi-level selection (Wilson and
Sober 1994, Traulsen and Nowak 2006).
Mutation and selection are adequate in poorly evolved systems but as
sophistication increases, mutations decrease.
To achieve multi-level selection, algorithms mimicking more advanced genetic
operators than mutation alone, must be employed. More advanced genetic operators
employ the use of recombination in a number of ways. Recombination allows parts of
solutions to combine with parts of other solutions to make new and different combination
solutions. Some of these new solutions may occupy a new local optimum by jumping
from one peak to another in an adaptive landscape.
Most optimization methods employ gradient search techniques which can
sometimes result in a method getting trapped in a local optimum, unable to seek out the
36
desired global optimum. Genetic algorithms can avoid this hill-climbing problem by
introducing an element of randomization that allows a search to jump out of local
optimum without descending to a minimum first. This feature is accomplished by genetic
recombination procedures such as mating and crossover between chromosomes. GA is
valuable in that it offers a robust technique to address complex search spaces. Because
these algorithms use multiple trial solutions, there is a parallel nature to the searching.
Unlike more traditional algorithms, GAs use probabilistic transition rules instead of non-
deterministic ones. GAs are relatively easy to initialize as well given that they emphasize
coding of parameter representation instead of the parameters themselves. These
algorithms can solve complicated optimization problems without excessive information
about the rationale of an effective solution. They simply engage in a highly effective
parallel search process for the right parameter values which will result in the optimal
solution. In this sense, there is a blindness to genetic algorithms (Goldberg 1989).
The application of GAs to solve an optimization problem is a very simple process.
The parameters of the function to be optimized are represented together as a finite length
binary string. Even complex parameters can be applied because these are easily mappable
to a binary representation. A pool of random solutions is created. Successive populations
are achieved through the use of genetic operators such as crossover recomibination,
mutation, elitism, linkage and epistasis (Griffith et al 1999).
Creating the next generation pool of intelligent controller solutions requires a
devised fitness function to test each solution string in the pool. Natural selection occurs in
the next step, as the most fit solutions are allowed to procreate with higher frequency,
thereby increasing the chance that better sub-solutions are passed on to the next
37
generation. There are different heuristics used to determine which parent strings will
mate and with what frequency. One such method sums the fitness measures of the entire
pool and determines the fraction that each string contributes to the group fitness. This
number is then used as the probability that the associated string reproduces. There are
different heuristics used to determine which parent strings will mate and with what
frequency. All such heuristics favor the fitter solutions.
When crossover is employed, after two string solutions are mated, a number of
crossover points are randomly chosen. These points along the length of the strings
determine which segment of which string is carried over to the offspring solution. Note
that different offspring solutions are possible from two parents depending on which
segments are chosen during crossover. An increase in the number of crossover points can
further increase the variability among offspring strings from the same set of parents. The
next generation of solution strings can contain more offspring strings than the parent pool
contained. The fitness function can be applied again to summarily eliminate all but the
best strings in order to maintain a consistent pool size.
This process as described is limited in that solutions that can be generated are
always restricted to be a combination of the original random first-generation parents. A
higher degree of randomness is required to facilitate the emergence of new trial solutions
into the pool. This can be accomplished by the genetic operator of mutation. Mutation
can occur after crossover occurs to allow random bits of a solution string to change their
value. This operation may introduce more effective solution approaches into the pool,
which proliferate on subsequent generations. This operator is a secondary genetic
operator and is effective when used with limited frequency.
38
Ensuring that good strings can proliferate in subsequent generations can be
accomplished in a number of ways. The solutions with highest fitness can reproduce with
a greater frequency than other solutions, as shown in the example below in Figure 2.5.
Another way is to make duplicate copies of the offspring of successful parents. The
frequency of the offspring solution in the pool in comparison to other offspring is relative
to the success of the parents.
One technique that doesn’t occur in nature that is often used in genetic algorithms
is that of elitism. Elitism allows the most successful solution of a generation to live on in
the next generation along with its offspring and other offspring solutions. This technique
ensures that each generation’s best solution is at least as good as the solution of the
preceding generation. Thus, GA with elitism maintains the best solution found each
generation throughout the search process.
39
Figure 2.5: Genetic Algorithms Example
Genetic Algorithm Example
Optimize the fitness function F = 2*x – y + 3 * z
-5<=x<2, 2<y<=6, 0<=z<8, z=2*k, 0=<k<4 x,y,z,k are Integer
Therefore x=-5,-4,-3,-2,-1,0,1 y=3,4,5,6 z=0,2,4,6
Let bi = ith binary value in solution string and map the parameters to binary representation
b0 b1 b2 x value b3 b4 y value b5 b6 z value
0 0 0 -5 0 0 3 0 0 0
0 0 1 -4 0 1 4 0 1 2
0 1 0 -3 1 0 5 1 0 4
0 1 1 -2 1 1 6 1 1 6
1 0 0 -1
1 0 1 0
1 1 0 1
1 1 1 2
Solution string is of the form “b0,b1,b2,b3,b4,b5,b6”. There are 27 = 128 possible solution
strings.
Select Pool Size = 4
Random 1st generation solutions: S1=(0010100), S2=(1111001), S3=(1011000),
S4=(0101110)
Fitness evaluations are made using the function: F1=-12, F2=5, F3=-5, F4=0
Select the most fit solution to reproduce twice, with the 2nd most fit and the 3rd most fit
Select two crossover points randomly denoted by “X”
S2= 1 1 1 1 0 0 1
X X Bit mutation made: 0 to 1
S4= 0 1 0 1 1 1 0
Two potential solutions result from this crossover as shown below:
S5= 1 1 0 1 0 0 1 yields a fitness F5= 3
S6= 0 1 1 1 1 1 0 yields a fitness F6= 2
Potential solutions from mating S2 and S3 with random crossover points are as follows:
S7= 1 1 1 1 1 0 0 yields a fitness F7=-2
S8= 1 0 1 1 0 0 1 yields a fitness F8= 1
The new generation has a sum fitness of 4, an improvement over the first generations sum of –
12
Repeated generations will yield optimal solution of S*=(1110011) or (x=2,y=3,z=6,k=3) with
F*=19
40
There are many more genetic operators in nature than have been applied to GAs.
The future improvement of Genetic algorithms lies in striving to model the process as
closely to nature as possible to make use of these important additional genetic operators.
Chromosomes are complex carriers of genetic information. Each chromosome in an
organism contains many genes. Each gene codes for a specific function in the organism.
One such genetic concept that has not been implemented in standard GAs is linkage.
Closely linked functions in an organism are encoded by closely positioned genes on a
chromosome. This makes sense after review of the crossover phase of mating. As
represented by bits in the GA strings, genes during crossover are less likely to be
separated if they are next to each other. Ideally, bits coding for closely associated
primitive functions in a solution should reside near each other. In genetics, there exist
evolutionary mechanisms for experimenting with the placement of genes on a
chromosome as well as their values. This is an important feature that needs to be
incorporated into the future of genetic algorithms (Michalewicz 1992).
2.3 Evolutionary Strategies
The simplest of evolutionary strategies is mutation followed by selection. In this strategy
a pool of randomly altered agents is subjected to selection. The fittest among them
become the pool for the next round of mutation and selection. This strategy is somewhat
effective in the beginning of a selection scheme, but not at the end when the pool consists
of a high frequency of fit agents. When the frequency of fit agents is high, random
mutation are more likely to destroy fitness rather than enhance it. A more effective
41
strategy is to recombine parts of different solutions into new and different combinations
through mating and recombination. This strategy makes use of a pool of already
somewhat fit partial solutions. The added benefit of this solution is that it allows agents to
cross from one peak on a fitness curve to another without descending into a valley as they
would with mutation and selection (Wright 1932). These concepts are illustrated in
Figure 2.6 below where the X and Y axes represent the encoding of the genotype and the
height represents its fitness.
Figure 2.6: Fitness Curve
Often after repeated selection, the pool of solutions decreases in variability and
therefore no further progress can be made as a result of selection. This dilemma can be
resolved by the application of mutation but more successfully by back-crossing to a
parental generation or outcrossing to a pool never exposed to selection. In many cases
solution strings may not be valuable towards fitness in a given situation but they might
have use in future selection schemes. The phenomenon of epistasis which can silence
genes allows non-used sequences to persist in future generations without expression and
42
still be available for the application of genetic processes to solve new problems. This
research will apply mutation/selection, mating/recombination, outcrossing and back-
crossing and epistasis.
2.4 Related Research Literature Survey
A survey was undertaken of research in the area of Evolutionary Learning of Multi-
Robot/Agent Systems. Though these research projects can vary greatly in the details,
there are some prevalent attributes that merit scrutiny. The numerous attributes examined
are shown in Table 2.1 below. The contrasting and comparing of how these attributes
differ with respect to the research done in this dissertation will support the ways in which
this method is unique. Most research in the area of evolutionary learning of multi-robot
or multi-agent systems adheres to conventional string structures to encode the intelligent
control mechanism that guides the agent. This sometimes can take the form of a decision
tree which is mapped onto a string. The method developed in this dissertation uses a
different structure which attempts to capture the more complex conditional state and
action transitions of a probabilistic finite state automata. Only two other research papers
showed a similar preference on encoding the behavioral rules of the system in this way.
Furthermore, the method in this dissertation is unique in that it only stores transition rules
as they are encountered by an agent within the simulation. Thus, one uniqueness of this
research is that a very compact form of solution data structure will result. This is valuable
because as the complexity and size of the system increases, the number of rules and the
solution structure size can remain compact and thereby keep the method tractable.
44
Few methods reviewed employ the kind of reinforcement learning that this dissertation
method utilizes. The reinforcement learning in this method takes place both during and
after the simulation runs. The probabilistic solution vectors are updated to reflect the
positive or negative individual behavior of the agents within the simulation runs. But they
are also revised at the end of each run to reflect positive or negative collaborative
behavior. This method is also unique in the number of genetic techniques employed.
Most research papers in the survey engage in selection, crossover recombination and
mutation and sometimes elitism as well. But few if any engage in back-crossing,
outcrossing or epistasis (which is the maintenance of dormant genes for future potential
use). This reflects this dissertation method’s emphasis on fuzzy and disruptive techniques
designed to keep the intelligent control mechanism as fluid as possible during the
evolutionary learning process so that it may ensure it does not get caught in local optima.
This approach was also done with an eye to building a mechanism that could continually
adapt away from well-learned behaviors towards new ones once transferred from the
simulation to a remote and dynamic environment. The use of fuzzy probabilistic rules is
another means by which this goal is achieved which few others in the survey have
employed. The method developed in this dissertation also offers a novel way of encoding
the state transition rules of a finite state automata. This approach allows for compact and
tractable building of the intelligent controllers. This method is one of the few to attempt
to evolve a set of intelligent controllers for heterogeneous agents. It also uses no tactical
coordinator or communication between agents. Instead, agents in the system rely on
sensor information to make decisions and achieve a form of collaboration. This approach
45
is a more challenging form within the problem area. The unique aspects of this method
will be further discussed in subsequent chapters of this dissertation.
46
Chapter Three: Methodology
This methodology section will present in detail how the method achieves each of the five
design objectives discussed in Section 1.5. Each of the problems associated with
developing the methodology will be addressed first with respect to the AGV navigation
problem and then in generalized terms.
3.1 AGVs in a Manufacturing Cell
A small problem will be described that will be used to illustrate the theory of the method
previously discussed. The demonstration problem involves AGVs operating within a row
grid as previously discussed in Section 1.2. The simple collaborative task for this
problem is to have the AGVs clear the manufacturing cell of parts without colliding with
each other or a wall and to do so in minimal time. This problem was selected to facilitate
discussion of the method. Despite its simplicity, one can imagine that the problem is a
simplified, scaled-down version of the more practical problem of a group of autonomous
AGVs on a reconnaissance or survey mission.
47
Figure 3.1: AGV Problem and System Characteristics
3.1.1 AGV Problem Representation Objective
The first step is to represent the problem in a form that can be introduced to the method.
The problem must be decomposed into external and internal conditions and actions. In
this case, as in many problems, the actions are themselves changes in internal conditions.
For example, a change in the current status of the AGV direction is the effect of an AGV
rotate action coupled with environment information contained within the simulation
program. The conditions for this problem can be described as shown below in Figure 3.2.
Figure 3.2: AGV Problem Condition & Action Values
CONDITIONS:
Sh=Holding part, Sn=No part, Bh=Bench has part, Bn=Bench empty
Lh=Left is AGV with part, Ln=Left is AGV empty, Lv=Left is void, Lw=Left is wall,
Rh=Right is AGV with part, Rn=Right is AGV empty, Rv=Right is void, Rw=Right is wall
ACTIONS:
Ml=Move Left, Mr=Move Right, Dn=Do Nothing, Tb=Take from Bench, Gb=Give to Bench,
Tl=Take from Left AGV with part, Tr=Take from Right AGV with part,
Gl=Give to Left AGV, Gr=Give to Right AGV
48
When a state transition entails certain condition value changes, then the
simulation makes the appropriate actions within the environment. The effect of this
associated action is simulated on the environment. Similarly, changes enacted by other
agents or by a dynamic environment may cause sudden condition changes. These changes
result in immediate state changes within the agent’s evolving automaton.
Figure 3.3: Initial Unbiased Automaton for AGV Grid Problem
3.1.2 AGV Problem Control & Effectiveness Objectives
As discussed above, the initial controller is unbiased with an equally likely chance of any
condition value being chosen as the next value for that condition. The decision is made
by first introducing a small degree of randomization to each probability value. This
allows a choice to be chosen sometimes that is not the value with the highest probability.
This is important in allowing the automaton to explore different pathways. A condition
value is chosen in this manner for each of the system conditions. These new condition
values dictate the next state in the automaton since the state definition is determined by
n = 4, where n is the number of system conditions
M0=3 M1=4 M2=3 M3=4 M4=4 where Mc is the # value choices for condition c
A first generation automaton is initialized with one random state represented
by random condition value choices: (V0,V1,V2,V3,V4) = (0,1,2,0,0)
This state maps to a unique state index z
z = V0+M0*V1+M1*M0*V2+(M2*M1*M0)*V3 +(M3*M2*M1*M0)*V4
=0 + 3*1 + 4*3*2 + 3*4*3*0 + 3*4*3*4*0= 27
The total number of unique states for this system is s = M0*M1*M2*M3*M4 = 576
For this state, an unbiased probability vector is stored for each condition c in the system:
(0.33,0.33,0.33) for condition 0 (0.25,0.25,0.25,0.25) for condition 1
(0.33,0.33,0.33) for condition 2 (0.25,0.25,0.25,0.25) for condition 3
(0.25,0.25,0.25,0.25) for condition 4
49
the condition value settings. When a new state is encountered, a new unbiased entry is
stored in the data structure for this state. As many path transitions are made during the
simulation run, numerous states may be acquired. At the end of the simulation run-time
period, the data structure for a first-generation solution stores the probability sets for all
states visited during the run. This data is the sum knowledge of the automaton solution
thus far in the method. Paths chosen during a run are reinforced by adding to the
probabilities corresponding to values that were chosen and subtracting from probabilities
corresponding to condition values not chosen. The amount by which the pathway
transitions are negatively or positively reinforced is a dynamic parameter within the
method known as the “Reinforcement Margin”. The rate of change of this margin is to be
determined through further experimentation with the method.
For the purpose of demonstration, a trivial pool size of three is chosen. Thus, for
the first generation of solutions, two initialized automatons will be created. The first
automaton is defined as shown in the previously shown Figure 3.1. The second
automaton is randomly initialized in a similar way with condition values and condition
value probabilities defined for a single start state as shown in the next Figure 3.4.
50
Figure 3.4: Three initial automaton solutions each with one start state
Once the generation of solutions is initialized, each trial automaton can be
introduced into the simulation for a pre-specified number of simulation ticks. Solution
zero as described above in Figure 3.4 will begin the simulation in indexed state 27 in
which the condition values are (0,1,2,0,0). This represents an AGV which is sensing a
wall nearby, and is located on the grid in square 2 from Figure 3.1 and undergoing an
action of left movement. The next state of this agent in the simulation is determined by
using the probability vectors associated with the current state. In the first generation, in
the first step of the simulation, the probabilities for the condition values are all equal
across one condition. If the maximum probability were chosen, the automaton would
simply have to choose one of the equiprobable options at random. But at this point in the
Solution 0 has just one state which serves as the start state in the first simulation run:
Solution 0 start state is randomly defined as (V0,V1,V2,V3,V4) = (0,1,2,0,0) or z=27
With unbiased probability vectors:
(0.33,0.33,0.33) for condition 0 (0.25,0.25,0.25,0.25) for condition 1
(0.33,0.33,0.33) for condition 2 (0.25,0.25,0.25,0.25) for condition 3
(0.25,0.25,0.25,0.25) for condition 4
Solution 1 is similarly defined:
Solution 1 start state is randomly defined as (V0,V1,V2,V3,V4) = (2,3,1,0,0) or z=23
With unbiased probability vectors:
(0.33,0.33,0.33) for condition 0 (0.25,0.25,0.25,0.25) for condition 1
(0.33,0.33,0.33) for condition 2 (0.25,0.25,0.25,0.25) for condition 3
(0.25,0.25,0.25,0.25) for condition 4
Solution 2 is similarly defined:
Solution 2 start state is randomly defined as (V0,V1,V2,V3,V4) = (1,0,0,1,0) or z=37
With unbiased probability vectors:
(0.33,0.33,0.33) for condition 0 (0.25,0.25,0.25,0.25) for condition 1
(0.33,0.33,0.33) for condition 2 (0.25,0.25,0.25,0.25) for condition 3
(0.25,0.25,0.25,0.25) for condition 4
51
method a certain amount of randomness in introduced into each probability. Throughout
repetition of the method, this randomization will decrease to allow a particular solution to
‘settle into’ successful behaviors. The function by which this randomization decreases is
an issue for further experiment. But initially, the degree of randomization should be large
to allow new attempted pathways.
Figure 3.5: Solution zero for AGV Grid problem executes a state transition
As shown above in Figure 3.5, a random effect introduced to the probability
vectors influences the selection of the next condition value for each condition. These
selected condition values define the next state to visit within the automaton. Once a new
state is visited, the data structure expands and stores that state definition along with new
Solution 0
Solution 0 start state is randomly defined as (V0,V1,V2,V3,V4) = (0,1,2,0,0) or z=27
With unbiased probability vectors before randomization effect is introduced:
(0.33,0.33,0.33) for condition 0 (0.25,0.25,0.25,0.25) for condition 1
(0.33,0.33,0.33) for condition 2 (0.25,0.25,0.25,0.25) for condition 3
(0.25,0.25,0.25,0.25) for condition 4
At the beginning of the method, a randomization effect between –0.5 and 0.5 is introduced.
Probability vectors after the randomization effect is added:
(0.33-0.2,0.33+0.07,0.33-0.5) (0.13,0.40,-0.17)
(0.25-0.25,0.25+0.13,0.25+0.5,0.25+0) (0.0,0.38,0.75,0.25)
(0.33-0.4,0.33+0.23,0.33+0.14) (-0.07,0.56,0.47)
(0.25+0,0.25+0.45,0.25+0.13,0.25+0.24) (0.25,0.70,0.38,0.49)
(0.25+0.12,0.25-0.4,0.25+0.35,0.25-0.12) (0.37,-0.15,0.50,0.13)
Value 1 has the greatest revised probability for condition 0 so condition 0 will next be set to “1”
Value 2 has the greatest revised probability for condition 1 so condition 1 will next be set to “2”
Value 1 has the greatest revised probability for condition 2 so condition 2 will next be set to “1”
Value 1 has the greatest revised probability for condition 3 so condition 3 will next be set to “1”
Value 2 has the greatest revised probability for condition 3 so condition 3 will next be set to “2”
Therefore, the next state to be visited by this automaton is (1,2,1,1,2) or z=343
A state transition is made to this new state, with associated condition changes shown below:
Sensing Wall Sensing an AGV
Facing North Facing West
On Square #2 On Square #4
Last Action : Stay New Action: Move Ahead
52
unbiased probability vectors. Note again that only visited states need be stored by the
method thereby reducing computational storage. After the transition has occurred in the
simulation, from the start state to the new state, the probability vectors are updated for the
start state. Since this automata solution is encoding potential agent behavior, the pathway
taken during the simulation must be reinforced. Thus, the probability condition value
chosen for each condition must be increased. The probabilities for the remaining
complimentary choices must be uniformly decreased so that all probabilities still sum to
one. Note that the randomized probabilities were only temporary and were used solely to
improve the selection mechanism. It is the original probabilities to which reinforcement
learning is applied. The rate of learning increases as the number of generations increases
during the method. Thus, repeatedly reinforced pathway solutions are not overthrown by
one or two successful alternative paths that may occur. However, the recombinatory
process will ensure that highly reinforced solutions that are no longer successful will
reproduce less frequently, eventually eliminating those newly disfavored behaviors from
the gene pool. This is key to the method’s ability to adapt to new situations. The learning
parameter is another process parameter that will require further experimentation.
There are some conditions that simply cannot be changed by the agent controller.
For simplification, the previous example did not illustrate this fact. But in reality, sensor
conditions are not under the control of the automaton. The simulated environment alters
these particular condition values. A sudden change in a sensor condition can cause a
condition value change to occur on the next time tick. Thus, probability vectors really
only encode for controllable conditions (actions). In fact, in the grid problem, AGV
location is another uncontrollable condition that is determined by the simulation program.
53
The AGV performs a move action by changing the value for the last condition. Since this
is a controllable condition (an action), the simulation program must implement the effect
of the action. The effect in this problem is to move the AGV to a new square, which is
reflected by an immediate change in the location conditions. Even though some external
conditions are not controllable, these condition values are still used to define the state.
Thus, they still have an effect on the state to state transitions in the automaton. Though
the automata may begin untrained, the effects of agent actions must be properly
implemented within the simulated environment by the simulator. The emphasis of the
controller development is to evolve only the decision-making logic through which agent
behavior is accomplished.
After a number of simulation ticks have elapsed, the automata will cease to
operate within the simulated environment. At this point, for each state visited during the
run or during the runs of previous generations, a set of condition value probabilities is
stored. For those states visited during the current generation simulation run, the
probabilities have recently been reinforced. The performance of the agent behavior
during the simulation run yields individual and group performance measures. These
valuations are determined by goal performance functions. Goal performance functions
must be altered during successive generations within the method to allow training of
elemental behaviors to yield to learning of more complex behaviors. The manner in
which goal performance functions will be altered during an application of the method is
another subject of further study and experimentation.
After performance measures are determined for the first generation of solutions,
the solutions are ranked. The best solution is maintained in the subsequent generation
54
using the concept of elitism, which ensures that the best solution of each generation
always is as good as or better than the last. The other members of the next generation are
created through mating between the best performing automata of the previous generation.
The better an automaton, the better the chance of it reproducing and passing successful
sub-behaviors into the next gene pool. The manner for selection of parents and the
frequency that each is allowed to reproduce is a parameter which requires further study. It
is also possible to introduce other genetic operators such as mutation to model effective
genetic crossing of solutions. The mutation rate is another parameter to be studied. The
method allows for recombination by randomly selecting crossover points on each of the
parent solutions. For the purposes of demonstration, two trivial first-generation solutions
are shown below in Figure 3.6. Solution zero has just two states encoded; state 27 and
state 343. Note that probabilities for each have been reinforced during the learning phase
after the simulation run. Solution one has only one state stored. This sole state happens to
be state 27. This example will be used to show how two automata solutions of different
“string” lengths can be merged during mating.
Figure 3.6: Two automata solutions after simulation training of visited states
Solution 0, State 27
(V0,V1,V2,V3,V4) = (0,1,2,0,0) or z=27 With probability vectors:
(0.30,0.30,0.40) for condition 0 (0.25,0.25,0.0,0.50) for condition 1
(0.52,0.24,0.24) for condition 2 (0.07,0.07,0.07,0.79) for condition 3
(0.02,0.04,0.02,0.92) for condition 4
Solution 0, State 343
(V0,V1,V2,V3,V4) = (1,2,1,1,2) or z=343 With probability vectors:
(0.44,0.22,0.34) for condition 0 (0.12,0.12,0.23,0.53) for condition 1
(0.6,0.10,0.3) for condition 2 (0.35,0.35,0.20,0.10) for condition 3
(0.23,0.23,0.23,0.31) for condition 4
----------------------------------------------------------------------------------------------------------------
Solution 1, State 27
(V0,V1,V2,V3,V4) = (0,1,2,0,0) or z=27 With probability vectors:
(0.50,0.25,0.25) for condition 0 (0.2,0.2,0.2,0.4) for condition 1
(0.10,0.10,0.80) for condition 2 (0.3,0.3,0.26,0.14) for condition 3
(0.4,0.4,0.1,0.1) for condition 4
55
Once the parent coupling is determined, the crossover points for recombination
must be randomly chosen. Crossover allows subsystem solutions for particular actions to
from one parent to be merged with subsystem solutions from another parent automata.
Figure 3.7: Crossover point selection applied to the AGV Grid problem
Note that the condition probabilities above in Figure 3.7 show each gene as
distributed across all states as previously formalized in Figure 3.3. A method must be
used to merge the probability values for separate conditions back under the individual
states. This technique is shown below in Figure 3.8. It allows automata solutions
featuring dissimilar state sets to still merge during mating. This is achieved by filling the
missing condition probabilities of one parent with a new unbiased set of probabilities.
Crossover points randomly selected
Solution 0 Solution 0 Solution 0 Solution 0 Solution 0
Condition 0 Condition 1 Condition 2 Condition 3 Condition 4
Solution 1 Solution 1 Solution 1 Solution 1 Solution 1
Condition 0 Condition 1 Condition 2 Condition 3 Condition 4
One of the offspring solutions that could be determined from the above crossover is as follows:
Solution 0 Solution 1 Solution 1 Solution 0 Solution 0
Condition 0 Condition 1 Condition 2 Condition 3 Condition 4
56
Figure 3.8: Hybridization of 1st generation automata forms a new offspring solution
For states each parent solution have in common, such as state 27 in the example
above in Figure 3.8, the technique merges the condition value probabilities of solution
zero and solution one, dividing up the inheritance of probability vectors between the two
parents via the selected crossover points. For states that occur in only one automata
solution, the missing condition probability vectors are set as unbiased, as shown above in
Figure 3.8 for state 343. The recombination allows for individual action control strategies
to be hybridized from both parents.
Mating among the first generation of solutions will yield many more offspring
solutions than the original pool size. The number of offspring is a parameter of the
genetic process, which is subject to further experiment. Each offspring solution must be
The new child solution must merge the condition probability sets for each state from solutions 0 and 1
According to the crossover point selection, whenever possible, probabilities for conditions 0 and 4 are
inherited from solution 0 and probabilities for conditions 1,2 and 3 are inherited from solution 1
New Solution, State 27
(V0,V1,V2,V3,V4) = (0,1,2,0,0) or z=27
With probability vectors:
Inherited from solution 0:
(0.30,0.30,0.40) for condition 0 (0.02,0.04,0.02,0.92) for condition 4
Inherited from solution 1:
(0.12,0.12,0.23,0.53) for condition 1 (0.6,0.10,0.3) for condition 2
(0.35,0.35,0.20,0.10) for condition 3
New Solution, State 343
(V0,V1,V2,V3,V4) = (1,2,1,1,2) or z=343
With probability vectors:
Inherited from solution 0:
(0.44,0.22,0.34) for condition 0 (0.23,0.23,0.23,0.31) for condition 4
State does not exist in solution 1, so unbiased probabilities must be used:
(0.25,0.25,0.25,0.25) for condition 1 (0.33,0.33,0.33) for condition 2
(0.25,0.25,0.25,0.25) for condition 3
57
applied to the simulation in order to determine a performance measure for that agent
controller. The second generation of solutions is comprised of the g most successful
automata, where g is the size of the original solution pool. At this point the process
repeats with the new generation of solutions introduced into the simulation to engage in
pathway selection and probability reinforcement.
In standard genetic algorithm fashion, the genetic process continues until a pre-
specified goal is met. This criterion may be the optimization of goal performance
functions or the proliferation of a successful solution throughout the gene pool.
A benefit to this method is the ability to seed initial behaviors in the automata
solutions. This can be achieved by initializing a series of states in the automata solution
and specifying probabilities for condition changes which effectively hardwire state
transitions in the controller.
Another benefit of this method is that the use of reinforcement learning and
recombination allows automata controllers to evolve towards new successful behavior
under changing environmental conditions. What was once a well-trained solution can
easily be negatively reinforced back towards unbiased transition probabilities after
repeated failure of the controller under the new system circumstances. The genetic
process assists by eliminating poor solutions quickly through selective mating. Therefore,
this method could prove useful to collaborative agents that engage in periodic centralized
reevaluation of their respective controllers. They can learn from their respective
experiences in the real or simulated environment, then rendezvous or engage in
communication. Once in contact, the agents can apply the method to their current
controller automata. The method will produce a better controller based on the collective
58
experiences of the agents. This best automaton solution can be implemented in each agent
before they conduct another mission run. The method provides an adaptability of the
controller, which is an essential feature to remote, autonomous agents developing new
behaviors to deal with unforeseen situations.
3.1.3 AGV Problem Validation Objective
The AGV problem will be used during the method development process. A small version
of this problem will ultimately be solved by the method to demonstrate that it is capable
of evolving collaborative agent behavior.
Figure 3.9: Small AGV Problem for Validation
The method was applied to a simple two agent AGV manufacturing cell problem
where each agent is fully capable of its operations and the sensors are all working. The
agents used a common controller type so only one rule-set was evolved during the
application of the method. The set of evolved state transition rules is shown below.
59
Note that these are a minimal compact set of rules that evolved to achieve optimal
collaborative behavior in the two-agent system. These rules effectively allow the agent to
cooperate with each other and remove all parts from the bench to the dump cell. The
number of state transition rules in this rule-set is far fewer than the number of possible
states in the model of the system.
If the method is to be validated, it needs to be shown that working out the solution
by an exhaustive method of inspection yields the same set of rules. A table was made
with every possible state configuration within the finite state automata model for the
control of the agent. These state configurations are defined by the condition values as
known to the agent at any given time. Even for a small problem there are many rows in
the table representing all the states in the system. For each of these states, the correct
action was determined through inspection using knowledge of the expected logical
workings of the system behavior. The subsequent new state transition as a result of taking
that action was also determined. This exhaustive analysis was made and recorded in the
Table 3.1 below.
60
Table 3.1: AGV Validation Problem: State Transition Rules Determined by Inspection
A close comparison between the table and the method’s evolved rule-set shows
that the rules that are evolved are indeed a subset of the rules as determined by
inspection. The functionality of the evolved intelligent control rules will therefore match
the behavior dictated by the rules derived by inspection. This accomplishes validation of
the method. Note that for scaled up versions of this application or for any other larger
problem, the derivation of rules by inspection quickly becomes intractable and time-
consuming. This further illustrates the usefulness of the method.
61
3.1.4 AGV Problem Implementation Objective
As previously discussed, the method will be applied to the AGV Manufacturing Cell
Problem under various circumstances. This will be done to confirm its scalability and to
further experiment with process parameters. Much of this will be discussed in the results
section.
3.1.5 AGV Problem Experimentation Objective
Subsequent testing will involve modification of the AGV environment to confirm the
adaptive capabilities of the method. For example, if a sensor fault is introduced, will the
AGVs learn to accommodate it? What if one of the AGVs loses its ability to transfer a
part? It will be shown that the method can evolve around such problems. There will also
be experiments performed with different allocations of controller types for heterogeneous
agent situations. The results of these experiments can be found in the results section.
3.1.6 AGV Problem Instructional Objective
Behavioral rules can be extracted from the intelligent controller rules that were evolved
during application of the method to the AGV Navigation problem. There is little to learn
regarding the behavioral rules for the smaller AGV validation problem given that the
controller solution was already determined from the outset for purposes of method
validation. However, the extraction process may be used on this problem to demonstrate
the potential of acquiring evolved rules for use in other systems. Looking closer at
evolved rule-sets illuminates the strategies that evolved sometimes unexpectedly between
interacting agents towards completion of their collaborative goals.
62
3.2 Generalized Methodology
The steps necessary to successfully apply the method to a problem will be discussed.
Representation, Control, Effectiveness, Validation and Implementation research
objectives will be addressed in this section. A mathematical description of the method
heuristic will be given.
3.2.1 Representation Objective
The first objective is to reformulate a problem into a form to which the method can be
applied. As previously stated, this involves an understanding of all of the internal and
external conditions of the system as well as the actions available to the system. The range
of values possible for each variable must be finite and mappable to an integral scale. For
ease in modeling, the actions can be thought of as conditions that are controllable to the
agent. Thus, when decomposing the problem, all external, internal and action conditions
can be grouped together to be used in the augmented state definition.
Let ne = number of external conditions detectable by agent sensors
Let ni = number of internal conditions that define an agent’s current status
Let na = number of actions that an agent can implement
n = ne + ni + na = sum total number of ‘conditions’ in the system
The objective is to make use of all conditions when making any agent decisions.
The evolutionary learning process will eventually train the corresponding probabilistic
transition values to reflect those conditions which ultimately bear no impact on certain
state transitions. Since the method aims to evolve without prior embedded intelligence,
63
all conditions must be considered for every decision at the beginning of training. Each
condition must take on an integral and finite number of values. These values need not be
the actual condition values. In fact, the problem is modeled more easily if the actual
condition values are mapped to an integer scale from 0 to the maximum number of
condition values minus one.
Let Mc = maximum number of condition values for system condition c
0,1..Mc-1 is the integer range of condition values that system condition c can take on
The current state of the system, from the point of view of one agent, can be
described by a vector comprised of the current values of the system conditions.
Let Vc = the current value of system condition c
(V0,V1…Vc…Vn-1) represents the current state of the system
s = M0*M1*..*Mn-1 such that s is the total number of unique system states
If (V0,V1,…Vc,…Vn-1) represents the current state of the system then the corresponding
index, z, of this unique state can be expressed as:
z = V0+M0*V1+M1*M0*V2+..(Mc-1*Mc-2*..*M0)*Vc +…(Mn-2*Mn-3*..*M0)*Vn-1
These s unique system states defined by the values of the system conditions can
be used as the states within a new automaton for the system. This new automaton has
many states, but since each state definition is augmented by the inclusion of condition
values, the transitions between states no longer need be qualified by conditions. The
conditionless arcs in this new automaton allow for immediate transitions to occur
between states. This configuration lends itself nicely to a discrete event simulation during
which state transitions occur with every time tick. Based on the condition values
embedded in the state definition, with the next time tick, a transition is made to another
state in the system. The change in state reflects a change in condition values. Some
64
condition values changed constitute a change in a controllable agent action, other
condition changes may be imposed by other agents or by the environment, that will occur
during interactive behavior. A non-deterministic finite state automaton with probabilistic
arc values can be derived from the configuration thus far described. But instead of a
probability on the transition arcs between a state and every other state, a two-dimensional
probability vector is employed which imposes a probability on each condition value
change. Normally in an adaptive automaton, the transition taken to the next state would
be determined by applying a function to all the possible transition arc probabilities and
then choosing one arc to follow. To simply take the best arc choice thus far, the
maximum probability among the choices would be chosen. In the automaton of this
method, there are no probabilities associated with arcs. Instead there is a set of
probability vectors associated with each state. These probabilities denote confidences in
choosing the next value for each system condition. Because the states in this automaton
are defined by the system condition values, selection of the next condition values based
on the associated probabilities dictates the next state of the system. These probability
vectors are the data structures that allow for both evolutionary learning and
recombination of automata solutions.
65
Figure 3.10: Method to determine the next state in the automaton
As discussed above, the control scheme for a multi-agent system may be
expressed as single stochastic finite state automaton with many states each defined by the
values of system conditions. The transition function relies on probabilities associated
with each state for every condition value. The next state is determined by applying a
function to each probability vector to obtain the chosen next condition value. The
condition value with the maximum probability for a condition value is not necessarily the
chosen one. Annealing and randomization are applied to the probabilities to generate new
trial pathways in the automata. The probabilities for each condition value for a given
state represent the confidence the automaton solution has in choosing that value as the
next value for that condition. The next value for each condition is then used to determine
66
the next state in the automaton as shown above in Figure 3.10. The probabilities for each
potential condition value for a single condition must always sum to one. In a given state,
when a particular condition should avoid a specific new condition value then the
associated probability value for that state’s condition value is set to zero. The method
ensures that a condition value with a zero probability cannot be chosen nor can it evolve
from zero. If a probability value is zero for a state’s condition value then the other
condition value probabilities must still sum to one. Similarly, a condition value
probability set to one ensures that condition value will be chosen over any other. If a
condition value probability is one, then the other probability condition values for that
condition must sum to zero. Initialization of the method demands that condition value
probability values be made equiprobable. That is, each condition value must have an
equally likely chance of being chosen as the value for each condition. As potential
automata solutions are run within a simulation, these probability values are negatively or
positively reinforced depending on the success of the coded pathways towards
independent and global success. But unless they are intentionally set to zero or one to
reflect seeded behavior, the condition probability values always remain greater than zero
or less than one. This allows for solutions to potentially adapt out of highly reinforced
transitions if the system conditions suddenly change. This is a key feature of the
method’s ability to modify itself in response to dynamic conditions. The possibility of
making any state transition is maintained even if the associated probabilities have been
previously negatively reinforced down to near-zero values.
67
After the multi-agent system problem is decomposed into conditions and actions
and the range of values for each condition is established, the evolutionary method must
initialize the first generation of automata solutions. Though defining the states to include
every system condition greatly increases the number of states, the method itself does not
become too computationally intractable because only the states visited in the course of a
simulation run need be saved. In fact, an automaton solution can be encoded as a series of
visited state strings each containing the fixed condition values V0,V1..Vn-1 that define that
particular state (or the state index z associated with these condition values) as well as the
condition value probability vectors used to determine the next state. Unlike most genetic
algorithms, this method does not encode the entire automaton solution as a fixed length
string. The automata solution strings within one generation of the evolutionary process
may each contain a different number of visited states and therefore a different length.
These length differences need only be accommodated during the mating process. Thus,
the form of automaton solutions is as a variable length of data strings representing the
states and each probabilistic engine used to determine the subsequent state.
3.2.2 Control & Effectiveness Objectives
The evolutionary method creates a pool of ‘organisms’ where each organism is a
potential automata solution to the multi-agent system. All first-generation solutions are
randomly initialized as simply a random start state along with an unbiased set of
probability vectors to determine the next state. The form of one initial solution is shown
in the next Figure 3.11.
68
Figure 3.11: Automaton representation using start state and unbiased probabilities
Note that the sole random start state is determined by randomized values of each
condition because each state is defined by its condition values. The associated probability
vectors for the state are initially unbiased. This is reflected in the equal probability values
for each of the Mi values possible for each condition i. If there are two potential condition
values then each the initial probability vector for that condition value would be (0.5,0.5).
These probability vectors will be used to determine the next state visited. Several
parameters are used to introduce annealing and thresholding in the condition probability
selection. This technique allows new pathways to be explored within the automata. There
are g solutions created for the first-generation pool. Any genetic method must determine
the fitness of its pool of solutions. This method determines fitness measure by
introducing each automata solution into a simulation. One automaton serves to control
the behavior of a certain number of pre-specified agents within the simulation
environment. This is the strategy when attempting to evolve intelligent controllers for
identical agents. For networks of non-identical agents, multiple sets of solution automata
are incorporated into the method instead. Within the simulation, the automata solution is
used to dictate those state transitions that ultimately reflect agent behavior. As new states
Solution j: Start State Definition: (Vj,0, Vj,1, …Vj,n-1)
Probability Vectors: ((1/M0,1/M0,…1/M0), for condition 0
(1/M1,1/M1,…1/M1), for condition 1
:
(1/Mc,1/Mc,…1/Mc), for condition c
:
(1/Mn-1,1/Mn-1,…1/Mn-1)), for condition n-1
69
are visited, these entries are added to the solution ‘string’ along with a set of unbiased
probability vectors. Performance-measuring functions are used to determine the
individual and global fitness in the agent system. For the state transitions made during the
course of the simulation, the corresponding chosen condition value probabilities are
negatively or positively reinforced based on performance measures. Thus, good state
transitions are rewarded through reinforcement of the probabilities that led to those path
choices. Several parameters are used to control the rate of reinforcement. After all
automaton solutions are tested within the simulation, their respective performance
measures are compared. Genetic operators are used to mate the best solutions produced
thus far. The more successful the solution, the more likely it is to reproduce and have its
learned behavior passed on to the next generation of solutions. The parent pool size, the
mating probability and the level of random mutation are some of the genetic parameters
used to control the mating process. Elitism is another technique that is used to maintain
the best solution of the previous generation in the next pool. The principal motivation for
this method of encoding the automata solutions, rather than as a single neural network, is
that they are in a form that allows for recombinatory genetics to take place. Different
agent automaton within the pool may have successfully generated strategies to solving
different subproblems in the simulated mission. The data structure devised to encode the
automata allows for these strategies to be recombined in an attempt to develop an
offspring solution that is endowed with the best behaviors of both its parents.
70
Figure 3.12: General form of probability value and related variables
Figure 3.13: General form of method’s automaton solution
An automaton solution j:
1st state stored is defined by (Vj,0,0, Vj,0,1, …Vj,0,n-1), w/ probability vectors
((Pj,0,0,0, Pj,0,0,1…Pj,0,0,M0), for condition 0
(Pj,0,1,0, Pj,0,1,1…Pj,0,1,M1), for condition 1
:
(Pj,0,n-1,0, Pj,0,n-1,1…Pj,0,n-1,Mn-1)) for condition n-1
2nd state stored is defined by (Vj,1,0, Vj,1,1, …Vj,1,n-1), w/ probability vectors
((Pj,1,0,0, Pj,1,0,1…Pj,1,0,M0), for condition 0
(Pj,1,1,0, Pj,1,1,1…Pj,1,1,M1), for condition 1
:
(Pj,1,n-1,0, Pj,1,n-1,1…Pj,1,n-1,Mn-1)) for condition n-1
:
rth state stored is defined by (Vj,r,0, Vj,r,1, …Vj,r,n-1), w/ probability vectors
((Pj,r,0,0, Pj,r,0,1…Pj,r,0,M0), for condition 0
(Pj,r,1,0, Pj,r,1,1…Pj,r,1,M1), for condition 1
:
(Pj,r,n-1,0, Pj,r,n-1,1…Pj,r,n-1,Mn-1)) for condition n-1
:
sjth state stored is defined by (Vj,sj,0, Vj,sj,1, …Vj,sj,n-1), w/ probability vectors
((Pj,sj,0,0, Pj,sj,0,1…Pj,sj,0,M0), for condition 0
(Pj,sj,1,0, Pj,sj,1,1…Pj,sj,1,M1), for condition 1
:
(Pj,sj,n-1,0, Pj,sj,n-1,1…Pj,sj,n-1,Mn-1)) for condition n-1
A different automaton solution k:
rth state stored is defined by (Vk,r,0, Vk,r,1, …Vk,r,n-1), w/ probability vectors
((Pk,r,0,0, Pk,r,0,1…Pk,r,0,M0), for condition 0
(Pk,r,1,0, Pk,r,1,1…Pk,r,1,M1), for condition 1
:
(Pk,r,n-1,0, Pk,r,n-1,1…Pk,r,n-1,Mn-1)) for condition n-1
General form of a probability value is: Pj,x,c,i where j is the index of the automaton solution, j=1..g
where r is the index of the state storage for the jth automaton, r= 1..sj
where c is the index of the system condition, c=1..n
where i is the index of the value choice for condition c, i=1..Mc
and g is the population size of a generation
and sj is the maximum number of visited states stored for automaton j
and n is the number of system conditions
and Mc is the number of values that condition c can take on
71
During mating, the two parent automaton solutions are not likely to have visited
the exact same states during current and past simulation runs. They may not even have
the same number of states visited. When mating these two solutions, crossover occurs by
the order of conditions. That is to say, some condition probabilities are to be taken from
the first parent’s solution while others are to be taken from the second parent’s solution.
But the assortment of condition value probabilities from each parent only occurs for
common states. When a partial set of state probabilities is inherited from one parent’s
solution for a particular state that is absent from the other parent’s solution, the missing
condition value probabilities are set as unbiased. A technique is used to randomly
selected the crossover point, which determines which condition logic will be inherited
from which parent. The best use of this technique is a subject for further experimentation.
72
Figure 3.14: Recombination technique applied to automaton structure
Note that recombination on condition probabilities presumes that agent subsystem
control may be influenced by only a subset of all conditions. The method will evolve the
causal relationships between conditions and subsystem control. Recombination also
allows introduction of the concept of linkage where related conditions are closer to each
other on the solution string, thus promoting a greater chance that these two associated
condition value probability sets will be inherited together. These closely linked condition
genes reflect that an automaton has determined through experience that these conditions
are highly associated for the desired agent goals. The condition probability values in one
Condition 0
Probability
Values
Condition 1
Probability
Values
Condition 2
Probability
Values
Condition 3
Probability
Values
Condition 4
Probability
Values
Condition c
Probability
Values
Parent 1
Solution j
Condition 0
Probability
Values
Condition 1
Probability
Values
Condition 2
Probability
Values
Condition 3
Probability
Values
Condition 4
Probability
Values
Parent 2
Solution k
Randomly Selected Crossover Points
Condition 0
Probability
Values
(Parent 1)
Condition 1
Probability
Values
(Parent 2)
Condition 2
Probability
Values
(Parent 2)
Condition 3
Probability
Values
(Parent 2)
Condition 4
Probability
Values
(Parent 1)
Potential Child Solution
A “gene” exists for all n conditions in the system. A
“gene” in parent solution j contains a probability
vector for a given condition c for every one of the sj
states encountered by the parent. Let r= 0..sj visited
states for solution j, then each block for condition c
below contains the set of probabilities shown at right:
(Pj,0,c,0, Pj,0,c,1…Pj,0,c,Mc),
(Pj,1,c,0, Pj,1,c,1…Pj,1,c,Mc),
:
(Pj,sj,c,0, Pj,sj,c,1…Pj,sj,c,Mc) vectors for condition c from all visited states
Condition c
Probability
Values
73
block of a parent solution in the diagram above in Figure 3.14 represent all the
probability vectors for a particular condition across all visited states in that automata
solution. These sets of probability vectors essentially act as a gene. The path learning
steps in the method model the intragene operations and the genetic recombination steps
of the method model the intergenic operations. Together they enable the method to
engage in effective evolutionary learning.
There is a fair amount of experimentation required to determine effective values
for the annealing, reinforcement, thresholding and genetic parameters used in the method.
Determining effective goal performance functions can be difficult as well, since learning
must often occur in stages. The performance functions may need to change over time.
Initial performance measuring techniques encourage agents to learn simple individual
behaviors within the simulated environment. As these elemental behaviors are
successfully acquired, the performance measures must reward more complex
collaborative system behaviors. This approach will allow agents to successively build
more complex behaviors on top of previously learned simple ones. Goal performance
functions must also maintain the old behaviors as new ones are learned.
After the first generation of automata solutions yield corresponding performance
measures, the best solutions are allowed to reproduce via recombination and other genetic
operators as shown above in Figure 3.14. The offspring solution pool may contain child
solutions that either improve upon parent solutions or deconstruct previous behaviors
learned. The worth of each offspring solution must be determined by running each within
a simulation run. The best offspring solutions are maintained along with the best parent
solution. The mating process then repeats.
74
Within each simulation run, automata paths chosen by the agent are negatively or
positively reinforced according to the success of the agent. This learning is accomplished
by altering the condition value probabilities to favor or disfavor transitional condition
value choices previously made during the simulation run. Over several generations of the
method, pathways may be reinforced to the point where the probability of choosing one
particular binary condition value is 0.99 and the probability of choosing the alternative is
0.01. Though evolution back from these extremes is not impossible, these probabilities
reflect that this particular condition value choice in the given state is almost always going
to occur. Through the evolutionary adaptation of these successful automata state
transitions, effective agent behavior can be learned. The flexibility of the probability
vectors allows for modifiability of agent control. If the environment is dynamic or the
goal functions are altered, the probabilities will readjust for success under these new
circumstances. This method offers the potential for continued adaptation once the agents
are initially trained and deployed in the real environment.
Though much of the discussion above has centered on initially untrained automata
solutions, it is possible to seed the method with some elemental behaviors. Instead of
initializing all of the probability vectors with equiprobable values, definite state
transitions can be hardwired into each solution by setting the probability of a particular
condition choice to 1.0 and all other choices to 0.0. Thus, in a particular state, the next
value of that condition is predetermined. Entire state transitions and even pathways
within the automata can be initially fixed with this approach. Unlike some other genetic
methods used to evolve agent behaviors, this seeded information need not be immutable.
If the aforementioned probabilities are instead set to 0.99 and 0.01 then the same intended
75
behavior will occur, but with the possibility of negatively reinforcing the behavior back
towards equiprobability, in the case that the seeded behavior is antagonistic to the
individual and/or collaborative goals.
Implementing the method on a small AGV problem will be used during the
method development phase to perfect the use of process parameters and goal performance
functions.
3.2.3 Validation Objective
The devised method must finally be validated. This can be accomplished by applying the
problem to a small problem for which an intelligent controller is already available or
easily created through inspection. If the method evolves a behavioral automaton that
successfully matches or improves upon the performance of the pre-existing controller,
then the method will have shown its effectiveness at evolving collaborative performance.
As demonstrated in Section 3.13, successful validation of this method was performed
using a small version of the “AGVs in a Manufacturing Cell” problem.
3.2.4 Implementation Objective
The method will then be applied to the AGV manufacturing cell problem.
For each application of the method to a problem described above, suitable goal
performance functions must be developed. The evolutionary and simulation process
parameters may also require adjustment. Initial seeding of behaviors will be introduced
into several problems. Modifiability of trained behaviors in response to new situations
will also be explored.
76
The method and the simulation are currently both written in the Visual Basic
programming language. This was done because of the need to experiment with a platform
that offers an evolutionary method wrapped around the simulation process. Standard
software packages for MAS simulation do not offer integration with outside evolutionary
learning software. The evolutionary method and simulator were both programmed
together to allow for transfer of information between these two stages. It points to a need
for a complex evolutionary learning software that can wrap around existing simulation
packages such as Net Logo. Ideally, the method and simulation should be run so that
centralized performance measures can be applied during the training process. To
demonstrate legitimate decentralized autonomous operation, it may be necessary to
distribute the software components, especially when testing autonomous adaptive
capabilities.
The heuristics developed for the method will be included in the final dissertation
document. An effort will be made to show that the method is scalable and
computationally tractable for practical applications. The motivation for this research is to
demonstrate the potential for this method as a means of developing intelligent controllers
for complex collaborative agent networks.
3.2.5 Experimentation Objective
There are a number of experiments that can be run using the method. The method can be
applied to a number of different scenarios where controller types are allocated in varying
ways to the agents in a heterogeneous system. These experiments can yield results such
as the size of the rule base evolved or the time taken to achieve optimality. Comparing
77
these results can serve as the basis for choosing one allocation approach over another.
Further experimentation can be done to modify learned behaviors in response to
unexpected changes in the goals and/or the environment. Sensor faults or agent
functionality can be altered and experiments can be run to see how the method adapts a
different solution to overcome these deficits. Modification of behavior within the
simulation is representative of the ability of agents to use this evolutionary mechanism
for adaptability in the real-world application. The only restriction is that the performance
measures occur in a manner repeatable in the real world. That is to say, a decentralized
performance measure would likely be required. Agents deployed in real application
environments may continue to evolve without decentralized performance measure if they
are allowed to periodically communicate or rendezvous to reevaluate and modify their
respective behaviors.
3.2.6 Instructional Objective
Another objective is the ability to extract the learned behavior rules from the evolved
control automaton. The probabilities stored for each state encode these learned behavior
rules. Datamining and logic reduction techniques can be used to determine the minimal
subset of conditions that impact certain system actions. These techniques can be used to
reduce the amount of non-essential genetic material required. The effect is to discern
individual automata for subsystem controls whenever possible. By studying these
evolved strategies, researchers can gain insight into how collaborative goals were
achieved. These developed strategies may be further introduced into other collaborative
agent systems.
78
Chapter Four: Results & Experiments
4.1 Method Development Results
This section will address the completion status of each subtask for each major objective
of the research. The means of decomposing a system into component actions and
conditions is well known. The subsequent initialization of a pool of potential controller
solutions has also been accomplished. Initial seeding of behaviors can be accommodated
by the current representation but additional work is needed to easily encode abstract
behavioral rules into the solution vector representations. The evolutionary method has
been well developed including the determination of the various process parameters
involved. The reinforcement learning technique during the simulation has been
determined. The means by which the simulation is integrated with the evolutionary
process is also well known. However, further experimentation with the simulation and
evolutionary process parameters is required. In particular, the use of modifiable goal
performance functions to achieve layers of complexity in system behavior must be further
explored. Applying datamining techniques to extract evolved strategies from the
controller solutions has yet to be accomplished. The developed method will be applied to
a small AGV manufacturing cell scenario to facilitate experimentation with process
parameters. To further refine the heuristics involved and demonstrate deployability of the
adaptive method, attempts will be made to apply it to more complex manufacturing cell
problems.
As is typically the case in studies of multi-agent systems with respect to
evolutionary learning, a small simple case study will be made to demonstrate the
79
effectiveness of the methodology. The problem that will be studied in this case is that of a
small manufacturing cell of sorts. It is comprised of an AGV corridor in which a series of
AGV's are allowed to move laterally from one cell to another without passing each other.
In front of the AGV's is a part or palette bench. The AGV’s unstack a part from this
bench and hold it in its gripper assembly. In this particular problem, the AGV's are
allowed to hold only one part at a time. The objective is to have these AGV’s
collaboratively transfer all parts in the system to the farthest bench cell to the right which
is referred to as the ‘dump cell’. Note that since AGV’s may not pass each other they
must rely on a strategic series of movements and part passing in order to accomplish this
global goal. Figure 4.1 depicts a generalized description of the aforementioned problem
with four cells and three agents.
Figure 4.1: Generalized Representation of Collaborative Multi-Agent Problem
This system scenario will also be depicted by the Figure 4.2 below. The numbers
in the top row signify the cell number. The second row signifies the number of parts in
80
each bench cell. The third row denotes the agents situated in their current cell position
(sometimes agents are also referred to with consecutive numerals instead of letters). The
bottom row represents the number of parts being carried by each agent in AGV corridor.
Figure 4.2: Alternate Representation of Problem
Each AGV will be drawing from an intelligent controller mechanism which is
essentially a set of rules which prescribe an action for a given conditional state of the
agent. If the agents are to be classified into separate groups with separate functionalities
then each identical agent within a group will be controlled by the same rule-set. Thus, the
evolutionary approach seeks to evolve multiple intelligent controllers to govern the
actions of numerous identical and non-identical agents within the system. The available
actions within this sample system are shown below as excerpted from the code:
Action(1).Enabled= True: Action(1).Name= "Ml= Move to the left cell"
Action(2).Enabled= True: Action(2).Name= "Mr= Move to the right cell"
Action(3).Enabled= True: Action(3).Name= "Tb= Take part from the bench"
Action(4).Enabled= True: Action(4).Name= "Gb= Give part to the bench"
Action(5).Enabled= True: Action(5).Name= "Dn= Do nothing"
Action(6).Enabled= True: Action(6).Name= "Tl= Take part from left cell carrier"
Action(7).Enabled= True: Action(7).Name= "Tr= Take part from right cell carrier"
Action(8).Enabled= True: Action(8).Name= "Gl= Give part left cell loiterer"
Action(9).Enabled= True: Action(9).Name= "Gr= Give part right cell loiterer"
There are nine actions available to any agent providing these are all made functional
to that agent’s group type. It is assumed that each agent in the system will be making
81
consecutive, orderly ‘moves’ within the system. Thus, within a simulation of the system,
with every clock tick the ability to make a move cycles through all the agents in a system
with only one agent at a time drawing from its intelligent controller to decide an action.
An action decision begins with having an agent assess its current conditional state within
its environment. This is accomplished by providing the agent with localized sensor
capability. In this scenario, each agent can sense if there is a part or not on the bench in
front of it, if there is a neighboring loiterer (non-carrying agent), neighboring carrier
(part-carrying agent), wall or void to the immediate left or right of it, or if the agent itself
is currently carrying a part or not. These sensor conditions are further described below
within the code:
Condition(1).Name = "Self Sensor": Condition(1).ChoiceCount = 2
Condition(1).ChoiceName(1) = "holding a part"
Condition(1).ChoiceName(2) = "not holding a part"
Condition(2).Name = "Bench Sensor": Condition(2).ChoiceCount = 2
Condition(2).ChoiceName(1) = "holding a part"
Condition(2).ChoiceName(2) = "not holding a part"
Condition(3).Name = "Left Sensor": Condition(3).ChoiceCount = 4
Condition(3).ChoiceName(1) = "holding a part"
Condition(3).ChoiceName(2) = "not holding a part"
Condition(3).ChoiceName(3) = "void"
Condition(3).ChoiceName(4) = "wall"
Condition(4).Name = "Right Sensor": Condition(4).ChoiceCount = 4
Condition(4).ChoiceName(1) = "holding a part"
Condition(4).ChoiceName(2) = "not holding a part"
Condition(4).ChoiceName(3) = "void"
Condition(4).ChoiceName(4) = "wall"
As shown above, the conditional state of an agent in the system can described at
any given time by the value of four conditions: Self Sensor, Bench Sensor, Left Sensor,
and Right Sensor. Given that the number of possible settings for each condition is 2, 2, 4
and 4 respectively, there are 2*2*4*4=64 total number of possible conditional states for
an agent in the system. Note that the number of configurations for the entire system is
much larger than this since a conditional state merely expresses the localized information
82
for just one single specific agent in a system comprised of many agents. The conditional
state describing the entire system would be an amalgam of all the individual controller
states. For each conditional state of a single agent, one of the aforementioned nine actions
will be prescribed. Thus, the maximum number of rules in an intelligent controller is 64
for this problem. But since any of these nine actions may be prescribed, there are 9^64
possible intelligent controllers for an agent in the system. Not all of these controllers may
lead to collaborative goal behavior when implemented with the other controllers for the
agents in the system. It is the interaction of these controllers by which the collaborative
behavior is expressed. In many multi-agent systems, it is this interaction which is too
complex to infer from human inspection of the system. This is the motivation of this
research: to devise a method which uses evolutionary learning and simulation to evolve
these collaborative controllers.
A sample evolved intelligent control mechanism for the system is shown below.
The two rule-sets (contained within brackets) are for a system with four agents and two
agent-type groups. There are two agents within each group. Thus, the first set of rules
governs the behavior of agents of the first type and the second set of bracketed rules
governs the behavior of the agents of the second type within the system. In this case,
there are 47 rules within each rule-set, though in practice the number of rules may differ.
This is less than the number of rules to cover all 64 possible conditional states for an
agent. The reason for this reduced set is that not all agents will encounter all 64
conditional states within the system during the simulations and thus not all rules are
applicable.
83
[ShBnLvRn-Gr SnBhLhRn-Tb ShBhLwRv-Mr SnBnLvRh-Ml SnBhLvRh-Tb SnBhLvRn-Tb ShBhLnRn-Gr
ShBnLnRv-Mr SnBhLwRn-Tb ShBnLvRh-Gb SnBhLwRv-Tb SnBnLvRn-Ml SnBnLhRv-Mr ShBnLhRv-Tl
SnBhLvRv-Ml SnBhLnRv-Tb SnBnLnRv-Mr SnBnLhRn-Tl ShBnLhRn-Gr SnBnLvRv-Mr SnBhLwRh-Tb
SnBnLwRv-Mr SnBnLwRn-Dn ShBnLnRn-Gr ShBhLvRn-Gr ShBnLvRv-Mr ShBnLwRv-Mr ShBnLwRn-Gr
SnBnLnRn-Dn ShBhLwRn-Gr SnBhLnRh-Tb SnBnLnRh-Dn SnBnLhRh-Tr ShBhLnRv-Mr SnBhLhRh-Tl
ShBnLnRh-Gl ShBhLwRh-Tr ShBhLhRn-Gr SnBhLnRn-Tb ShBhLnRh-Dn ShBnLwRh-Dn ShBhLvRv-Mr
SnBhLhRv-Tb ShBhLhRv-Gb SnBnLwRh-Dn ShBhLvRh-Dn ShBnLhRh-Gl ]
[SnBhLvRn-Ml SnBhLnRv-Tb ShBnLvRw-Dn SnBhLnRh-Dn SnBhLhRn-Tb SnBhLhRv-Tl SnBhLvRw-Ml
SnBhLvRh-Tb ShBhLnRv-Mr SnBhLhRh-Tl SnBhLhRw-Tl ShBhLvRn-Gr ShBhLnRw-Gb ShBhLvRv-Mr
ShBhLnRh-Gl ShBnLhRw-Gb ShBhLvRh-Dn ShBnLhRv-Mr ShBhLvRw-Gb ShBnLnRv-Mr SnBnLvRh-Ml
SnBnLnRh-Dn SnBnLhRv-Tl SnBnLnRv-Dn ShBhLnRn-Gr ShBhLhRw-Gb ShBnLnRw-Gb SnBnLhRh-Tl
SnBnLvRn-Ml ShBnLnRh-Dn ShBnLnRn-Gr SnBhLnRn-Tb SnBhLvRv-Ml ShBnLvRn-Ml ShBnLvRv-Ml
SnBnLhRn-Tl ShBnLhRh-Dn ShBhLhRn-Gr SnBnLvRv-Dn SnBhLnRw-Dn ShBhLhRh-Gb ShBhLhRv-Mr
SnBnLnRn-Dn ShBnLhRn-Gr ShBnLvRh-Gb SnBnLhRw-Dn SnBnLvRw-Ml ]
The rule “ShBnLvRn-Gr” signifies that when the conditions are such that, Sh (the
agent itself is holding a part) and Bn (the bench in front of it is empty) and Lv (there is an
empty void cell to the left of the agent) and Rn (there is a non-carrying agent to the right),
then the agent should implement the action Gr (Give the part to the agent on the right).
This is a sound rule given that the objective is to transfer all parts in the system to the
dump cell on the right. By giving the part to the agent on its right this action frees itself to
move left in search of more parts to transfer right. Meanwhile, the newly part-acquired
agent on the right can query its controller with its new conditional state and determine
what action it should now take. Cycling through the agents in this manner, allowing each
to take a single consecutive action, is how the collaborative goal of transferring all parts
to the dump cell can be achieved.
Note that although we are dealing with a simple system with elemental atomic
actions, each simple action could in theory be replaced with a call to a procedure which
could enact a more complicated form of behavior. In this sense, the approach is scalable
to larger more complicated problems. Although this simple problem has 64 conditional
states (and therefore maximally 64 rules in a rule-set), it is easy to see how an increase in
84
the number of sensor conditions as well as an increase in the range of possibilities for
each condition would explode the number of rules that could exist in the system thereby
making this approach intractable for larger problems. However, the evolutionary
approach devised and shown below alleviates this problem by only evolving the rules
necessary to govern the individual agent behavior in the system. Additionally, the number
of rules necessary to govern behavior is a smaller subset of the number of all possible
rules.
The method devised must also be robust with respect to changes in the initial
system configuration and also with respect to overcoming sensor failures. The program
written accommodates both eventualities. It is also possible to seed the agent controllers
with certain rules and allow a new controller to adapt from these starting rules. This is a
useful technique towards layering complexity on top of an already evolved system when
a new function or goal is introduced.
As discussed above, a rule consists of a conditional state for an agent as well as a
prescribed action. In the example above, there are 64 possible rules per controller. How is
one to evolve the multiple collaborative controllers that govern the behavior in a system?
How are these rules to be encoded in such a way that an evolutionary process may
operate on them? How can this method maintain scalability and tractability?
Approach I
The first approach considered was to use conventional genetic algorithms where a string
encodes all 64 rules of each controller in the system. The rules would be ordinally
arranged within each rule-set string so that the function of the rule and its position within
85
the genetic string would always be correlated. This in theory would allow for
conventional genetic algorithms to operate on the string. The fitness measure would be
determined by implementing these rules within a system simulation for a certain number
of time ticks and finding some measure of fitness. The best solution strings would
reproduce and form a new generation of solution strings. This approach would in theory
work, but as previously mentioned, the string size vastly expands with larger systems and
the number of generations required to accomplish evolution would be computationally
intractable.
Approach II
An alternate approach attempted was a decision tree model but this too had similar
problems. In the decision tree approach, a single condition such as the Bench-sensor
condition was placed at the root of the tree. A ‘holding’ value for this condition sent the
decision-making process down the left branch of the sub-tree while a ‘non-holding’ value
of this condition sent the decision-making process down the right-hand side of the sub-
tree. Similar simple conditions existed at other branches of the tree. Ideally, by the time a
leaf node was reached the system had processed all the simple condition testing necessary
to decide on the execution of a particular action stored at the leaf node. The drawback to
this approach was that number of branches could grow immeasurably without restriction
and conditions were often unnecessarily repeated along a branch. The number of
generations necessary to evolve a tree which contained the minimal number of necessary
conditional state tests proved to be equally difficult as the first approach.
86
Approach III: Best/Selected
It was decided that a controller data structure would be used which would store rules
associated with only those conditional states which were encountered by the agent within
the simulation run. There was no need to learn and store rules for states that the agent
would never or could never reach throughout the course of its operation. Thus, a learning
string structure was devised that expands as is necessary to control the agent’s operations.
This approach is well-suited for larger problems which, due to the increased number of
conditions, may have an exceedingly high number of possible conditional states but never
actually experience the majority of them during operations.
The program posed many challenges such as the development of the data structure
for the controller, the numerous genetic parameters, the simulation, the fitness functions,
the accommodation of sensor failure, of controller seeding, etc.
The method for evolving controllers for each of the agents in the system is as
follows. Create an initial genepool with many solutions (“organisms”), where each
solution is a set of blank rule-sets (“chromosomes”), one for each agent type. Each
solution in the gene pool must be tested within the simulation to obtain a fitness measure.
The first time tick of the simulation prompts the first agent to evaluate its conditional
sensor state within the system. A corresponding rule is associated with this determined
conditional state. It then queries its associated controller string for the prescribed action
to this rule. If this rule is present within the rule-set then the associated action is taken. If
this rule is not present in the string then a random action is taken and the new rule is
87
stored within the controller string. The simulation then enacts the agent’s action and the
effects of the action on the simulation agents and environment are realized. The
simulation then prompts the next agent to make its move in a similar manner. The
simulation cycles through all the agents in this manner and then repeats the process for a
pre-specified number of cycles within the simulation. This process slowly builds each
controller string as each of the agents in the system associated with the controller is
exposed to more and more conditional states. Not all implemented actions will lead to
acceptable behavior within the system. Most random actions lead to a failure, such as
taking a part from the bench when it isn’t there, or moving left into a wall, or carrying
more than one part, etc. The program is able to detect failure states and the rules leading
to system failures are excised from the controller strings as they occur. Throughout the
simulation process, failed moves do not stop the system but rather the effects are undone,
the failed action is counted as a non-move and the agent loses its chance to make a
successful action at that step in the simulation. This approach allows the simulation phase
to keep a count of the number of failed moves during a run for each solution string-tuple.
After a simulation run, the fitness test is measured by a combination of three factors: the
number of legal steps taken, the value of a scoring function which weighs the part-flow in
the system, and a measure of how quickly the goal state was reached. These three
objectives provide a composite fitness measure for each prospective solution in the gene
pool. This value is a measure of how well the evolved controllers representing a single
solution work together towards achieving the collaborative goal. Once a fitness measure
is obtained for each solution in the genepool, it is used during the genetic recombination
phase of the method to produce the next generation of solutions. Genetic operators such
88
as mutation, inter-chromosome mating and intra-chromosome mating are utilized. These
operators had to be tailored to fit the unusual format of the solution strings given that
substring position and substring function were no longer correlated as they are in
standard genetic algorithms.
The number of actions available to an agent-type group can be adjusted:
ActionCount = 9
Each action can be enabled or disabled thus showing how the method evolves for
different functionalities:
Action(i).Enabled = True
The initial system configuration is specified as follows:
1. standard problem:
InitBenchString = "302110"
InitAgentString = "012340"
InitCarryString = "010010"
2. harder problem:
InitBenchString = "0211002100"
InitAgentString = "1020340567"
InitCarryString = "0010000010"
The program uses the above initial strings to determine the cell count, agent
count, part count, agent positions and agent carry status.
The assignment of agents into agent-type groups dictates the number of
controllers to evolve. The bulk of the experiments run so far demonstrate the differences
in rule-sets and rule-set sizes that arise from different agent group designations. Four
specific controller designations were studied for the above problem: ‘Universal’,
‘Divided’, ‘Bookend’, and ‘Individual’. The ‘Universal plan’ has all agents in the system
89
being designated as from the same agent group. Thus, each agent is governed by the same
controller and in turn, this controller evolves from the experiences of every agent in the
system. Therefore, a universal controller is likely to increase in the number of rules
during the learning phase faster than the other approaches since it is exposed to the
conditional states of all agents within the system simulation. The ‘Divided plan’ splits the
example AGV system in half with agents A and B governed by one controller and agents
C and D governed by a second rule-set. Thus, there are really only two controllers
interacting within the simulation, each governing two agents. The ‘Bookend plan’ has
three controllers including a unique controller for each side agent as well as a single
controller for all AGV agents in the middle. The bookend approach would seem to work
well for this example four-agent problem because unlike agents A and D, agents B and C
never need to encounter a wall thus all rules including wall-sensing are unnecessary for
these controllers. It makes sense to convolve the control schemes for agents B and C into
the same controller since there functionality within the system is identical. The
‘Individual plan’ provides a separate controller assigned to each agent in the system. In
this scenario, an agent cannot benefit from the learning experienced by the other agents in
the system because their respective rule-sets evolve based only on their own experiences
in the simulation.
The number of rules and the nature of the rules evolved by this evolutionary
method for each of the above controller designations are of principal interest in this
research project. The results of the simulations for different controller plans could be
useful in dictating the ratio of agent type designations to implement within a system.
90
Specific sensor equipment failure may be implemented to see how the
evolutionary process circumvents it:
AgentOneSenseRightFaulty = False
In this case, the right cell sensor for agent A is made faulty. Thus, during the
simulation runs, it cannot reliably return the proper conditional assessment of what is to
the right of agent A. This ability to implement failures allows for the study of how the
process evolves different rule-sets to circumvent failures.
Simulation parameters:
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
Genetic parameters:
GenerationCount = 500
SolutionCount = 500 '1000
Fitness parameters:
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0 'BenchScoreBase * CellCount
InitConfigScore = 0
For i = 1 To CellCount
InitConfigScore = InitConfigScore + Mid(InitBenchString, i, 1) * BenchScoreBase ^ i
InitConfigScore = InitConfigScore + Mid(InitCarryString, i, 1) * CarryScoreBase ^ i
Next i
InitConfigScore = InitConfigScore + Right(InitBenchString, 1) ^DumpScoreCoeff
MaxConfigScore = MaxDumpCount * (BenchScoreBase ^ CellCount + DumpScoreCoeff)
Reproduction Parameters:
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossCount = 2 * Int(RouletteCrossPercentage * SolutionCount / 2)
OutCrossCount = 2 * Int(OutCrossPercentage * SolutionCount / 2)
RandomCrossCount = 2 * Int(RandomCrossPercentage * SolutionCount / 2)
EliteChoiceCount = Int(EliteChoicePercentage * SolutionCount)
91
WorstChoiceCount = Int(WorstChoicePercentage * SolutionCount)
RandomChoiceCount = ToolMax(SolutionCount – EliteChoiceCount
WorstChoiceCount - RandomCrossCount - RouletteCrossCount
OutCrossCount - RandomEliteChoiceCount - RandomWorstChoiceCount, 0)
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1
RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
4.2 Overview of Experiments
The first set of experiments are homogeneous in nature with respect to sensing capability
and available actions. They have all nine actions enabled with four different controller
designation plans implemented. These experiments will illustrate the effect of assigning
different controller designations on overall efficiency of the agent system.
The second set of experiments are also homogeneous but have differing number of the
nine actions enabled. These experiments will demonstrate how the controllers evolve
different schemes when their atomic actions are altered and how this ultimately affects
system efficiency. This could, perhaps, be used to show the minimal subset of atomic
actions necessary for a multi-agent system to successfully accomplish goal behavior.
The third set of experiments are heterogeneous in nature.
Each experimental section is divided into a number of sections. A diagram of the
same standard AGV corridor problem is cited with its initial configuration reflected. A
settings section follows which include the various value settings for the method for that
experiment. The next section shows the ‘generational process’ of the method application.
92
Each line (example: 1 S= 800 D= 4 PGS= 800 LS= 679 CFG= 3681 SIM= 4360 LG)
shows the fitness attributes of the top solution within the genepool for that generation.
The variables are as follows:
S=simulation steps,
PGS=steps taken before goal reached,
LS=legal steps out of the 800 maximum,
CFG=weighted fitness measure reflecting part transfer progress,
SIM=CFG+LS+(S-PGS)= overall fitness measure to be maximized.
The last variable, SIM, represents the results of the last generation of the method
and the final fitness it produced.
The next section shows the simulation output for the final optimal controller that
was evolved. Simulation output is reflected in the status of the bench, the AGV corridor
and the AGV carry status at each time tick in the simulation as demonstrated below. The
trace also shows the agent number and the last agent action performed at any given time
tick. For example, the fourth block represents the state of the system after the 2nd agent
(or agent B) finished performing a “Gr” action in which it passed its part to neighboring
agent #3. This trace output continues for all steps in the simulation until the rightmost cell
of the bench is filled with all system parts which signifies goal completion.
TRACE: ORIG 1Gr 2Gr 3Gb 4Mr 1Ml 2Tb 3Dn …
BENCH: 302110 302110 302110 302210 302210 302210 301210 301210 …
AGENT: 012340 012340 012340 012340 012304 102304 102304 102304 …
CARRY: 010010 001010 000110 000010 000001 000001 001001 001001 …
93
The subsequent section discusses these results and details the controller rule-sets
that were evolved. Each rule-set is in the form:
[SnBnLvRn-Ml SnBhLvRn-Tb SnBhLwRv-Tb ShBnLvRn-Gr ShBnLvRh-Gb …………].
Within the graph analysis section of these results there will be three figures. The
first figure will reflect the fitness scores of every fifth solution within an ordered
genepool for every generation up until the last generation. The second figure will reflect
only the fitness of the top solution in every genepool. This is also known as the
generational fitness. The third figure will show the fitness function components and
reflects how fitness is being achieved simultaneously with respect to legality, quickness
and part-transfer.
Following the sections detailing the experiments, a section for discussion of the
experimental results is included.
4.3 Experiment 1: Midsize / Nine-Action / Individually-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has all 9 actions enabled. Additionally, this experiment has each
agent relying on its own set of controller rules. Thus, each agent’s rule-set is evolved
pursuant to the particular agent’s experiences within the simulation training. This is the
‘individual’ controller designation plan.
94
Figure 4.3: Initial Configuration of System for Experiment 1
Experiment 1: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = True: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = True: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = True: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = True: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = "Individual"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
95
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 1: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 4 PGS= 800 LS= 679 CFG= 3681 SIM= 4360 --
2 S= 800 D= 5 PGS= 800 LS= 794 CFG= 3897 SIM= 4691 --
3 S= 800 D= 5 PGS= 800 LS= 798 CFG= 3897 SIM= 4695 --
4 S= 800 D= 6 PGS= 800 LS= 762 CFG= 4485 SIM= 5247 --
5 S= 800 D= 6 PGS= 800 LS= 784 CFG= 5187 SIM= 5971 --
6 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3897 SIM= 4697 L-
7 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3897 SIM= 4697 L-
8 S= 800 D= 7 PGS= 800 LS= 793 CFG= 5355 SIM= 6148 --
9 S= 800 D= 7 PGS= 800 LS= 769 CFG= 5139 SIM= 5908 --
10 S= 800 D= 8 PGS= 800 LS= 782 CFG= 6075 SIM= 6857 --
11 S= 800 D= 9 PGS= 799 LS= 795 CFG= 6561 SIM= 7357 --
12 S= 800 D= 8 PGS= 800 LS= 791 CFG= 6561 SIM= 7352 --
13 S= 800 D= 9 PGS= 799 LS= 800 CFG= 6561 SIM= 7362 LG
14 S= 800 D= 9 PGS= 799 LS= 800 CFG= 6561 SIM= 7362 LG
15 S= 800 D= 9 PGS= 799 LS= 800 CFG= 6561 SIM= 7362 LG
16 S= 800 D= 9 PGS= 799 LS= 800 CFG= 6561 SIM= 7362 LG
17 S= 800 D= 9 PGS= 131 LS= 791 CFG= 6561 SIM= 8021 --
18 S= 800 D= 9 PGS= 131 LS= 793 CFG= 6561 SIM= 8023 --
19 S= 800 D= 9 PGS= 131 LS= 793 CFG= 6561 SIM= 8023 --
20 S= 800 D= 9 PGS= 107 LS= 799 CFG= 6561 SIM= 8053 --
21 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
22 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
23 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
24 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
25 S= 800 D= 9 PGS= 91 LS= 799 CFG= 6561 SIM= 8069 --
26 S= 800 D= 9 PGS= 87 LS= 800 CFG= 6561 SIM= 8074 LG
96
27 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
28 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
29 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
30 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
31 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
32 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
33 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
34 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
35 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
36 S= 800 D= 9 PGS= 75 LS= 797 CFG= 6561 SIM= 8083 --
37 S= 800 D= 9 PGS= 75 LS= 799 CFG= 6561 SIM= 8085 --
38 S= 800 D= 9 PGS= 75 LS= 799 CFG= 6561 SIM= 8085 --
39 S= 800 D= 9 PGS= 71 LS= 799 CFG= 6561 SIM= 8089 --
40 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
41 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
42 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
43 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
44 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
45 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
46 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
47 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
48 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
49 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
50 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
51 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
52 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
53 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
54 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
55 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
56 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
57 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
58 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
59 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
60 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
61 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
62 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
63 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
64 S= 800 D= 9 PGS= 55 LS= 800 CFG= 6561 SIM= 8106 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 8106 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 55 legal steps within the simulation using the final evolved rule-sets
shown below. 55 steps is one step shy of 14 cycles within the simulation. This solution
was found in the 64th generation. The four agents each take a consecutive step to
complete one cycle. Note how the fitness measure allows for multi-criteria evolution to
97
occur. At times the evolutionary process will lean towards transferring more parts to the
dump cell even if it uses more illegal steps to accomplish this. Other times the
evolutionary process will seek to make all steps legal at the expense of goal progress.
Over time, the effect is to get better at each objective and finally to settle down into an
optimal, legal solution.
Experiment 1: Final Results G: 64 SIMSCORE= 8106 CFGSCORE= 6561 GOALS= 9
LEGALSTEPS= 800 PostGoalSTEPS= 745 STEPS= 800
An output listing below shows the trace for each of the 55 steps. It shows the step
action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Gr 2Gr 3Gb 4Mr 1Ml 2Tb 3Dn 4Gb 1Tb 2Gr 3Mr 4Tl 1Mr 2Tl 3Ml
4Gb 1Ml 2Gr 3Mr 4Tl 1Tb 2Tb 3Ml 4Gb 1Mr 2Gr 3Mr 4Tl 1Gr 2Mr 3Tl 4Gb 1Ml
2Tb 3Gr 4Gb 1Tb 2Gr 3Gr 4Gb 1Mr 2Tb 3Tl 4Tl 1Mr 2Dn 3Tb 4Gb 1Gr 2Gl 3Gr
4Gb 1Gr 2Gr 3Gr 4Gb 1Ml 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml
2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn
4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr
2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn
4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml
2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
98
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn
4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn
1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn
3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn
1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn 3Dn 4Dn 1Mr 2Dn 3Dn 4Dn 1Ml 2Dn
3Dn 4Dn
BENCH: 302110 302110 302110 302210 302210 302210 301210 301210 301211 201211 201211 201211 201211
201211 201211 201211 201212 201212 201212 201212 201212 101212 100212 100212 100213 100213 100213
100213 100213 100213 100213 100213 100214 100214 100114 100114 100115 000115 000115 000115 000116
000116 000016 000016 000016 000016 000016 000006 000007 000007 000007 000007 000008 000008 000008
000008 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
99
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009
AGENT: 012340 012340 012340 012340 012304 102304 102304 102304 102304 102304 102304 102034 102034
012034 012034 012304 012304 102304 102304 102034 102034 102034 102034 102304 102304 012304 012304
012034 012034 012034 010234 010234 010234 100234 100234 100234 100234 100234 100234 100234 100234
010234 010234 010234 010234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100
100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234
100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234 010234 010234
010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234 100234 100234
010234 010234 010234 010234 100234 100234 100234 100234 010234 010234 010234 010234 100234 100234
100234 100234
CARRY: 010010 001010 000110 000010 000001 000001 001001 001001 001000 101000 100100 100010 100001
010001 001001 001001 001000 001000 000100 000010 000001 100001 101001 101001 101000 011000 010100
010010 010001 001001 000101 000011 000010 000010 000110 000101 000100 100100 100010 100001 100000
010000 010100 010010 010001 001001 001001 001011 001010 000110 001010 001001 001000 000100 000010
000001 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
101
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
Experiment 1: Evolved Rule-Sets
Below are shown the evolved rule-sets for the system. Since the individual controller plan
was used, a distinct rule-set for each agent was evolved based on the experiences of that
agent in the simulations. Each rule-set below is preceded by a number reflecting the
number of rules that were evolved within that rule-set. Each rule is of the format
‘C1C2C3C4-Action’ where a series of condition settings have an associated subscribed
action. Note that the total number of possible rules is equal to the total number of
possible condition states which in this problem is 64. The evolution of a reduced number
102
of rules is a significant improvement over trying to pre-determine all 64 rules for each
agent outside of an evolutionary learning process. Note that Agent A’s rule-set never has
a rule with a “Rw: wall to the right” condition since its leftmost position in the corridor
prevents it from ever encountering the right wall during the course of the simulation. This
is due to agents being unable to pass each other in the corridor. Each agent is therefore
limited in its scope of experience and this in turn influences which rules evolve for it. It
will be shown that in subsequent experiments in which an alternative controller plan is
used, the experiences of multiple agents sourced by a common controller are shared and
are used towards the evolutionary shaping of that rule-set. Note also that the disabling of
side-to-side taking and giving actions will force agents to rely on the more awkward and
laborious bench passing and cell shifting in order to accomplish part transfer in the
system. The rule-sets below are a reduced set of rules necessary to elicit optimal
collaborative performance within the simulation. Operating the agents individually by
these rules does not result in optimal system performance. It is the necessary inter-
dependence that is captured by these evolved rule-sets which leads to collaboration.
The four controllers were evolved in 64 generations. These controllers
operating together took 55 steps in the simulation to reach the collaborative goal.
The number of rules evolved across the four controllers 120.
# 24 [SnBnLvRn-Ml SnBhLvRn-Tb SnBhLwRv-Tb ShBnLvRn-Gr ShBnLvRh-Gb SnBhLwRh-Tr
SnBnLvRv-Ml SnBhLvRv-Tb ShBhLvRn-Mr ShBhLvRv-Mr ShBnLwRv-Mr ShBnLwRn-Gr SnBnLwRn-
Dn ShBnLwRh-Dn ShBnLvRv-Mr SnBhLwRn-Dn ShBhLwRn-Gb SnBnLvRh-Ml ShBhLwRv-Mr
SnBnLwRv-Mr ShBhLvRh-Tl SnBhLvRh-Tb ShBhLwRh-Dn SnBnLwRh-Dn ]
# 36 [SnBhLhRh-Tl SnBhLvRh-Tb SnBhLhRn-Tb ShBnLhRv-Mr SnBhLnRh-Gr ShBhLvRn-Gr
SnBnLvRh-Ml ShBnLvRn-Dn SnBhLnRn-Tb SnBhLvRv-Tb SnBnLhRn-Dn SnBnLvRn-Dn ShBhLvRh-
Dn ShBnLnRn-Gr SnBnLnRn-Dn SnBnLnRv-Dn ShBhLnRh-Gb SnBnLnRh-Tr SnBnLhRv-Mr
SnBhLvRn-Tb SnBnLvRv-Mr ShBhLvRv-Mr ShBhLhRn-Dn ShBhLnRn-Gr SnBnLhRh-Dn ShBnLhRn-
Gr ShBhLnRv-Dn SnBhLnRv-Tl ShBnLnRh-Gl SnBhLhRv-Tl ShBnLvRv-Ml ShBhLhRv-Gb ShBnLvRh-
Gb ShBnLhRh-Gb ShBhLhRh-Gb ShBnLnRv-Mr ]
103
# 36 [SnBhLhRn-Tl SnBhLhRh-Tl SnBhLhRv-Dn ShBhLvRh-Ml SnBhLnRv-Tb ShBhLnRh-Gb
ShBhLnRv-Mr ShBhLnRn-Gr SnBhLnRn-Tb SnBnLnRv-Mr ShBnLnRv-Dn SnBnLvRn-Ml ShBhLhRv-
Mr SnBnLhRh-Tl ShBnLhRv-Dn SnBnLvRh-Dn SnBhLvRh-Ml ShBnLvRn-Gb ShBnLnRn-Gr
SnBnLhRn-Tl SnBnLnRh-Dn SnBhLvRv-Tb SnBnLhRv-Ml ShBhLvRv-Gb ShBnLnRh-Gb ShBnLvRv-
Dn ShBnLhRn-Gr SnBnLvRv-Ml SnBhLnRh-Tb ShBhLvRn-Ml ShBnLvRh-Dn SnBnLnRn-Dn
SnBhLvRn-Tb ShBhLhRn-Gr ShBnLhRh-Dn ShBhLhRh-Dn ]
# 24 [ShBnLvRw-Gb SnBhLhRv-Tb SnBhLvRw-Ml ShBhLnRv-Mr ShBhLhRw-Gb ShBhLvRw-Gb
SnBnLhRv-Tl SnBhLnRw-Dn ShBnLhRv-Mr ShBnLnRv-Mr SnBhLvRv-Ml SnBnLnRv-Dn SnBnLvRw-
Ml ShBhLvRv-Tr SnBnLvRv-Tb ShBhLnRw-Gb SnBhLhRw-Tl SnBnLhRw-Tl ShBhLhRv-Mr
ShBnLhRw-Gb ShBnLvRv-Gb ShBnLnRw-Tr SnBhLnRv-Tb SnBnLnRw-Gr ]
Note that this is the result of just one application of the method. No two runs are
alike. Subsequent runs would evolve slightly different solutions to the problem although
the main strategy would be the same. Efficiency and size of the rulesets would also be
approximately the same providing all initial conditions remain the same. These evolved
rulesets depend greatly on the giving and taking of parts between agents as signified by
the presence of many “Gr”, “Gl”, “Tl” and “Tr” actions in the rulesets. In the 5-action
experiments detailed later, these agent-passing actions are disabled which forces the
system to evolve a different means of achieving the collaborative goal behavior.
Experiment 1: Graph Analysis
Figure 4.4 below shows the fitness score of every fifth solution ranked low to high within
the 500-count solution gene pool in every generation leading up to the final 64th
generation. This graph reflects the changing nature of the gene pool throughout the
evolutionary process.
104
Figure 4.4: Evolving Fitness Scores for Experiment 1 (Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.5: Generational Fitness for Experiment 1
(Y-axis: Fitness Measure, X-axis: Generation)
1 7
13
19
25
31
37
43
49
55
61
S1
S19
S37
S55
S73
S91
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64
105
Figure 4.6 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state with all parts transferred to the dump
cell. The blue line denotes the maximum number of steps in the simulation (800) minus
the pre-goal steps. It is desired that this quantity be maximized. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a failure
(i.e. are legal). The third component is the configscore (cfg) which for this problem is
maximally 6561, a weighted value which reflects all parts in the system having been
transferred to the dump cell. This value is denoted by the yellow line. These three values
are divided by their maximum values and the ratios are plotted below. Note that not all
solutions leading to a goal are achieved through legal steps (yellow optimal but pink
suboptimal). Note also that in early generations, a solution can be comprised entirely of
legal steps and yet not achieve goal behavior (pink optimal but yellow suboptimal). Note
that it isn’t until generation 15 that the process is able to achieve goal behavior (blue line
goes non-zero). Note also that after a solution is found which is both legal and goal-
reaching (pink and yellow optimal), that the evolutionary method continues to evolve
solutions that achieve this goal in fewer and fewer steps (the blue line subtly increases).
As the method attempts to adjust its collaborative behavior towards reaching the goal in
fewer steps, note that it sometimes results in a solution that lapses into illegality (roughly
generation #35 below where pink goes suboptimal). This lack of fitness in illegality is
made up for temporarily by the forming of new rules which reduce the number of steps
needed to accomplish the system goal. Note that subsequent to this generation, the
106
process goes back to restoring legality while maintaining the improved rules towards
fewer steps to the goal. The method successfully and autonomously negotiates these three
fitness measure components so that eventually a legal, optimal solution finds the goal in a
minimal number of steps. Note that every solution from generation ~18 onwards (except
for generation 35) has a non-zero blue line and optimal pink and yellow lines. These
solutions are all acceptable solutions to the problem. They merely implement a different
set of rules perhaps in a different order in order to achieve the collaborative goal
behavior. Allowing the process to continue results in a more effective rule-set that finds
the solution more quickly.
Figure 4.6: Scores of Three Components of Fitness for Experiment 1 (Y-axis: Coefficient of Optimality, X-axis: Generation Index)
0
0.25
0.5
0.75
1
1 21 41 61
(max-pgs)/max (ls/max) (cfg/max)
107
4.4 Experiment 2: Midsize / Nine-Action / Bookend-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the experiment settings
section below. This experiment has all 9 actions enabled.
The agents in this experiment are not all governed by their own individual
controller as they were in the previous experiment. In this ‘bookend’ approach, the end
agents A and D each get their own controller. The middle agents B and C will be
sourcing a common controller. This is a reasonable approach given that B and C are
exposed to similar conditional states whereas A and D experience conditional states
unique to each other as well as to the central agents. Thus, there are three controllers to
be evolved in this system. The second controller draws from the experiences of both
agent B and C. The ability of the method to specify the sourcing controller for each agent
in the system is useful for systems in which collaboration between two or more distinct
agent groups is desired.
Figure 4.7: Initial Configuration of System for Experiment 2
108
Experiment 2: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = True: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = True: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = True: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = True: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = “Bookend"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1
RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
109
Experiment 2: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 6 PGS= 800 LS= 733 CFG= 4383 SIM= 5116 --
2 S= 800 D= 4 PGS= 800 LS= 771 CFG= 3417 SIM= 4188 --
3 S= 800 D= 5 PGS= 800 LS= 787 CFG= 3735 SIM= 4522 --
4 S= 800 D= 5 PGS= 800 LS= 778 CFG= 4413 SIM= 5191 --
5 S= 800 D= 6 PGS= 800 LS= 791 CFG= 4419 SIM= 5210 --
6 S= 800 D= 6 PGS= 800 LS= 767 CFG= 4455 SIM= 5222 --
7 S= 800 D= 9 PGS= 227 LS= 774 CFG= 6561 SIM= 7908 --
8 S= 800 D= 9 PGS= 135 LS= 796 CFG= 6561 SIM= 8022 --
9 S= 800 D= 9 PGS= 135 LS= 796 CFG= 6561 SIM= 8022 --
10 S= 800 D= 9 PGS= 135 LS= 797 CFG= 6561 SIM= 8023 --
11 S= 800 D= 9 PGS= 135 LS= 798 CFG= 6561 SIM= 8024 --
12 S= 800 D= 9 PGS= 119 LS= 783 CFG= 6561 SIM= 8025 --
13 S= 800 D= 9 PGS= 175 LS= 783 CFG= 6561 SIM= 7969 --
14 S= 800 D= 9 PGS= 95 LS= 794 CFG= 6561 SIM= 8060 --
15 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
16 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
17 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
18 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
19 S= 800 D= 9 PGS= 83 LS= 796 CFG= 6561 SIM= 8074 --
20 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
21 S= 800 D= 9 PGS= 79 LS= 800 CFG= 6561 SIM= 8082 LG
22 S= 800 D= 9 PGS= 75 LS= 797 CFG= 6561 SIM= 8083 --
23 S= 800 D= 9 PGS= 75 LS= 797 CFG= 6561 SIM= 8083 --
24 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
25 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
26 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
27 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
28 S= 800 D= 9 PGS= 71 LS= 798 CFG= 6561 SIM= 8088 --
29 S= 800 D= 9 PGS= 71 LS= 799 CFG= 6561 SIM= 8089 --
30 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
31 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
32 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
33 S= 800 D= 9 PGS= 63 LS= 793 CFG= 6561 SIM= 8091 --
34 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
35 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
36 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
37 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
38 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
39 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
40 S= 800 D= 9 PGS= 59 LS= 799 CFG= 6561 SIM= 8101 --
110
41 S= 800 D= 9 PGS= 59 LS= 799 CFG= 6561 SIM= 8101 --
42 S= 800 D= 9 PGS= 63 LS= 800 CFG= 6561 SIM= 8098 LG
43 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
44 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
45 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
46 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
47 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
48 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
49 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
50 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
51 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
52 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
53 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
54 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
55 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
56 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
57 S= 800 D= 9 PGS= 55 LS= 799 CFG= 6561 SIM= 8105 --
58 S= 800 D= 9 PGS= 55 LS= 799 CFG= 6561 SIM= 8105 --
59 S= 800 D= 9 PGS= 55 LS= 800 CFG= 6561 SIM= 8106 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 8106 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 55 legal steps within the simulation using the final evolved rule-sets
shown below. 55 steps is one step shy of 14 cycles within the simulation. The four agents
each take a consecutive step to complete one cycle. Note how the fitness measure allows
for multi-criteria evolution to occur. At times the evolutionary process will lean towards
transferring more parts to the dump cell even if it uses more illegal steps to accomplish
this. Other times the evolutionary process will seek to make all steps legal at the expense
of goal progress. Over time, the effect is to get better at each objective and finally to
settle down into the optimal, legal solution.
Experiment 2: Final Results
G: 67 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 55 POSTGOALSTEPS= 745
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 8106 LG
111
The output below shows the trace for each of the 55 steps. It shows the step
action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Gr 2Gr 3Gb 4Mr 1Dn 2Tb 3Dn 4Gb 1Ml 2Gr 3Mr 4Tl 1Tb 2Ml 3Tb
4Gb 1Gr 2Mr 3Gr 4Gb 1Tb 2Dn 3Ml 4Ml 1Mr 2Gr 3Gr 4Mr 1Gr 2Gr 3Mr 4Gb 1Dn
2Tb 3Gr 4Gb 1Ml 2Mr 3Tl 4Tl 1Tb 2Tb 3Tl 4Gb 1Mr 2Tb 3Gr 4Gb 1Mr 2Gr 3Gr
4Gb 1Gr 2Gr 3Gr 4Gb 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn
112
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
BENCH: 302110 302110 302110 302210 302210 302210 301210 301210 301211 301211 301211 301211 301211
201211 201211 201201 201202 201202 201202 201202 201203 101203 101203 101203 101203 101203 101203
101203 101203 101203 101203 101203 101204 101204 100204 100204 100205 100205 100205 100205 100205
000205 000105 000105 000106 000106 000006 000006 000007 000007 000007 000007 000008 000008 000008
000008 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
113
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 012304 012304 012304 012304 102304 102304 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 102034 102304 102340 012340 012340
012340 012304 012304 012304 012034 012034 012034 012034 012034 012034 102034 100234 100234 100234
100234 100234 100234 100234 010234 010234 010234 010234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
114
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 001234 001234
CARRY: 010010 001010 000110 000010 000001 000001 001001 001001 001000 001000 000100 000010 000001
100001 100001 100011 100010 010010 001010 001001 001000 101000 101000 101000 101000 011000 010100
010010 010001 001001 000101 000011 000010 000010 001010 001001 001000 001000 000100 000010 000001
100001 100101 100011 100010 010010 010110 010101 010100 001100 001010 001001 001000 000100 000010
000001 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
115
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
Experiment 2: Evolved Rule-Sets
The three controllers were evolved in only 59 generations. These controllers operating
together took 55 steps in the simulation to reach the collaborative goal. The number of
rules evolved for all controllers is 84. Note that the agents central B and C are governed
by the single middle controller. The rules in the second controller are sufficient for the
control of actions of both B and C agents within the simulation.
# 24 [ShBhLwRv-Mr SnBnLvRh-Ml SnBhLwRv-Tb SnBhLvRn-Tb ShBnLvRv-Mr SnBhLvRh-Ml
SnBhLwRn-Tb ShBnLvRn-Gr SnBnLwRn-Dn SnBnLwRv-Mr SnBnLvRv-Ml ShBnLwRn-Dn
SnBhLvRv-Dn SnBhLwRh-Tb ShBhLvRn-Gr ShBnLwRv-Mr ShBnLvRh-Dn ShBhLvRh-Ml ShBhLwRh-
Dn ShBhLvRv-Dn ShBnLwRh-Gb SnBnLwRh-Dn ShBhLwRn-Gr SnBnLvRn-Dn ]
# 36 [ShBhLnRn-Gr SnBhLhRh-Tb SnBhLhRn-Tl SnBhLvRn-Tb SnBnLhRn-Tl ShBhLnRh-Gb
ShBnLhRv-Mr ShBnLvRn-Gr ShBhLhRn-Gr ShBnLnRn-Gr SnBnLnRv-Mr SnBnLnRn-Dn SnBhLvRv-
Ml SnBhLnRn-Tb SnBnLvRh-Dn ShBnLvRh-Dn ShBhLvRv-Dn SnBnLvRn-Ml SnBnLvRv-Ml
ShBnLvRv-Mr ShBhLnRv-Mr SnBhLhRv-Dn SnBnLhRh-Tl ShBnLnRh-Dn SnBhLnRv-Tb ShBnLhRn-
Gr SnBnLhRv-Dn ShBnLhRh-Gb ShBhLvRn-Gr SnBnLnRh-Dn SnBhLnRh-Dn SnBhLvRh-Tb
ShBnLnRv-Mr ShBhLvRh-Ml ShBhLhRv-Mr ShBhLhRh-Dn ]
# 24 [ShBhLnRv-Mr ShBnLvRw-Gb SnBhLhRv-Tb SnBhLhRw-Tl ShBhLhRw-Gb ShBhLnRw-Gb
ShBhLvRv-Gb ShBnLhRv-Mr SnBnLhRv-Tl ShBhLvRw-Gb SnBnLnRv-Mr SnBnLvRv-Mr ShBnLvRv-
Mr ShBnLnRv-Mr SnBhLnRv-Mr ShBnLhRw-Gb ShBnLnRw-Gb SnBnLhRw-Tl SnBhLvRw-Ml
SnBnLvRw-Dn SnBhLvRv-Tb SnBnLnRw-Dn SnBhLnRw-Dn ShBhLhRv-Mr ]
116
Experiment 2: Graph Analysis
Figure 4.8 shows the fitness score of every fifth solution ranked low to high within the
gene pool in every generation leading up to the final 59th generation. This graph reflects
the changing nature of the gene pool throughout the evolutionary process.
Figure 4.8: Evolving Fitness Scores of Experiment 2
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.9 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 59. Note that although the system is able to transfer
all parts to the dump cell in earlier generations, this solution may include illegal and/or
superfluous steps. It is not until generation 59 that the evolutionary process stabilizes to
an optimal solution achieved in 55 legal steps.
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
S1
S17
S33
0
1000
2000
3000
4000
5000
6000
7000
8000
117
Figure 4.9: Generational Fitness for Experiment 2
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.10 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
maximum values and the ratios are plotted below in Figure 4.10. Note that not all
solutions leading to a goal are achieved through legal steps (yellow optimal but pink
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
118
suboptimal). Note also that in early generations, a solution can be comprised entirely of
legal steps and yet not achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.10: Scores of Three Components of Fitness for Experiment 2
(Y-axis: Coefficient of Optimality, X-axis: Generation)
4.5 Experiment 3: Midsize / Nine-Action / Universal-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
progress and more steps will be required in the simulation to move all 9 parts to the dump
cell.
0
0.25
0.5
0.75
1
1 21 41
(max-pgs)/max (ls/max) (cfg/max)
119
The agents in this experiment are not all governed by their own individual
controller, nor is this a ‘bookend’ approach. In this ‘universal’ approach, all agents are
governed by the same controller. Thus, there is only one controller to be evolved in this
system and it will draw from the experiences of all agents within the system during the
evolutionary process.
Figure 4.11: Initial Configuration of System for Experiment 3
Experiment 3: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = True: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = True: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = True: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = True: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = “Universal"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
120
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 3: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 3 PGS= 800 LS= 743 CFG= 2763 SIM= 3506 --
2 S= 800 D= 2 PGS= 800 LS= 749 CFG= 2727 SIM= 3476 --
3 S= 800 D= 5 PGS= 800 LS= 742 CFG= 3735 SIM= 4477 --
4 S= 800 D= 8 PGS= 800 LS= 760 CFG= 5859 SIM= 6619 --
5 S= 800 D= 5 PGS= 800 LS= 795 CFG= 4431 SIM= 5226 --
6 S= 800 D= 9 PGS= 123 LS= 798 CFG= 6561 SIM= 8036 --
7 S= 800 D= 9 PGS= 123 LS= 798 CFG= 6561 SIM= 8036 --
8 S= 800 D= 9 PGS= 123 LS= 798 CFG= 6561 SIM= 8036 --
9 S= 800 D= 9 PGS= 107 LS= 799 CFG= 6561 SIM= 8053 --
10 S= 800 D= 9 PGS= 107 LS= 799 CFG= 6561 SIM= 8053 --
11 S= 800 D= 9 PGS= 107 LS= 799 CFG= 6561 SIM= 8053 --
12 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
121
13 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
14 S= 800 D= 9 PGS= 107 LS= 800 CFG= 6561 SIM= 8054 LG
15 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
16 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
17 S= 800 D= 9 PGS= 95 LS= 800 CFG= 6561 SIM= 8066 LG
18 S= 800 D= 9 PGS= 83 LS= 799 CFG= 6561 SIM= 8077 --
19 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
20 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
21 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
22 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
23 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
24 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
25 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
26 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
27 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
28 S= 800 D= 9 PGS= 83 LS= 800 CFG= 6561 SIM= 8078 LG
29 S= 800 D= 9 PGS= 79 LS= 799 CFG= 6561 SIM= 8081 --
30 S= 800 D= 9 PGS= 79 LS= 800 CFG= 6561 SIM= 8082 LG
31 S= 800 D= 9 PGS= 75 LS= 799 CFG= 6561 SIM= 8085 --
32 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
33 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
34 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
35 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
36 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
37 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
38 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
39 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
40 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
41 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
42 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
43 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
44 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
45 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
46 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
47 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
48 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
49 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
50 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
51 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
52 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
53 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
54 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
55 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
56 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
57 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
58 S= 800 D= 9 PGS= 63 LS= 799 CFG= 6561 SIM= 8097 --
59 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
60 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
61 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
62 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
63 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
64 S= 800 D= 9 PGS= 63 LS= 799 CFG= 6561 SIM= 8097 --
65 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
66 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
67 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
68 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
122
69 S= 800 D= 9 PGS= 59 LS= 799 CFG= 6561 SIM= 8101 --
70 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
71 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
72 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
73 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 8102 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 59 legal steps within the simulation using the final evolved rule-sets
shown below. 59 steps is one step shy of 15 cycles within the simulation. The four agents
each take a consecutive step to complete one cycle. Note how the fitness measure allows
for multi-criteria evolution to occur. At times the evolutionary process will lean towards
transferring more parts to the dump cell even if it uses more illegal steps to accomplish
this. Other times the evolutionary process will seek to make all steps legal at the expense
of goal progress. Over time, the effect is to get better at each objective and finally to
settle down into the optimal, legal solution.
Experiment 3: Final Results
G: 73 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 59 POSTGOALSTEPS= 741
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 8102 LG
An output listing below shows the trace for each of the 59 steps. It shows the step
action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
123
TRACE: ORIG 1Gr 2Dn 3Tl 4Mr 1Ml 2Ml 3Mr 4Gb 1Tb 2Tl 3Gr 4Gb 1Dn 2Mr 3Tb 4Tl
1Tb 2Mr 3Dn 4Gb 1Mr 2Gr 3Gr 4Gb 1Mr 2Tb 3Tl 4Tl 1Gr 2Gr 3Gl 4Gb 1Ml 2Gr
3Gr 4Gb 1Dn 2Ml 3Ml 4Ml 1Ml 2Tb 3Tl 4Tl 1Tb 2Tb 3Dn 4Mr 1Mr 2Gr 3Mr 4Gb
1Gr 2Mr 3Gr 4Gb 1Dn 2Gr 3Gr 4Gb 1Dn 2Ml 3Ml 4Ml 1Ml 2Ml 3Ml 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
BENCH: 302110 302110 302110 302110 302110 302110 302110 302110 302111 202111 202111 202111 202112
202112 202112 202102 202102 102102 102102 102102 102103 102103 102103 102103 102104 102104 102004
102004 102004 102004 102004 102004 102005 102005 102005 102005 102006 102006 102006 102006 102006
102006 101006 101006 101006 001006 000006 000006 000006 000006 000006 000006 000007 000007 000007
000007 000008 000008 000008 000008 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
124
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 102304 120304 120034 120034 120034 120034 120034 120034
120034 102034 102034 102034 102034 100234 100234 100234 010234 010234 010234 010234 001234 001234
001234 001234 001234 001234 001234 001234 010234 010234 010234 010234 010234 012034 012304 012340
102340 102340 102340 102340 102340 102340 102340 102304 012304 012304 012034 012034 012034 010234
010234 010234 010234 010234 010234 010234 010234 012034 012304 012340 102340 120340 123040 123040
125
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
CARRY: 010010 001010 001010 000110 000101 000101 000101 000011 000010 100010 010010 010001 010000
010000 001000 001010 001001 101001 100101 100101 100100 010100 010010 010001 010000 001000 001100
001010 001001 000101 000011 000101 000100 000100 000010 000001 000000 000000 000000 000000 000000
000000 001000 000100 000010 100010 101010 101010 101001 011001 010101 010011 010010 001010 000110
000101 000100 000100 000010 000001 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
126
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
127
Experiment 3: Evolved Rule-Sets
The single controller was evolved in 73 generations. This controller took 59 steps in the
simulation to reach the collaborative goal. The number of rules evolved for all controllers
is 57 out of a possible 64. Thus, some states were never and could never be visited.
# 57 [ShBnLvRn-Gr SnBhLvRn-Tb SnBhLwRn-Tb ShBhLnRv-Gl ShBnLvRw-Gb SnBhLvRh-Ml SnBhLnRv-
Tb SnBhLvRv-Dn ShBhLvRv-Mr ShBhLvRn-Gr SnBhLwRv-Tb ShBhLwRv-Mr ShBnLhRv-Mr SnBhLhRh-Tl
ShBhLnRh-Dn SnBnLvRv-Dn ShBnLnRv-Mr SnBhLnRn-Dn ShBhLhRv-Mr ShBhLnRn-Dn ShBnLnRh-Gl
ShBnLvRv-Mr ShBhLvRh-Dn SnBhLvRw-Ml ShBnLnRn-Gr SnBnLhRn-Tl SnBhLhRv-Tl SnBhLhRn-Tb
SnBnLvRh-Ml SnBnLvRn-Ml SnBnLhRv-Tl ShBhLwRn-Dn SnBnLnRv-Dn ShBnLhRw-Gb SnBhLhRw-Tl
ShBnLhRh-Dn SnBhLwRh-Dn ShBnLvRh-Ml ShBhLvRw-Gb ShBhLhRw-Gb SnBnLwRv-Mr SnBnLnRn-Dn
ShBhLnRw-Gb SnBnLhRh-Dn ShBnLhRn-Gr ShBhLhRn-Gr ShBhLhRh-Dn ShBnLwRn-Gr SnBnLhRw-Tl
SnBhLnRw-Dn ShBnLwRv-Mr ShBnLnRw-Gb SnBnLwRh-Dn SnBnLwRn-Dn SnBnLnRh-Dn SnBhLnRh-Tb
ShBhLwRh-Dn ]
Experiment 3: Graph Analysis
Figure 4.12 below shows the fitness score of every fifth solution ranked low to high
within the gene pool in every generation leading up to the final 73rd generation. This
graph reflects the changing nature of the gene pool throughout the evolutionary process.
128
Figure 4.12: Evolving Fitness Scores of Experiment 3
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.13 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 27.
1 9
17
25
33
41
49
57
65
73
81
89
97
S1
S21
S41
S610
1000
2000
3000
4000
5000
6000
7000
8000
9000
129
Figure 4.13: Generational Fitness for Experiment 3
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.14 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
maximum values and the ratios are plotted below in Figure 4.14. Note that not all
solutions leading to a goal are achieved through legal steps (yellow optimal but pink
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73
130
suboptimal). Note also that in early generations, a solution can be comprised entirely of
legal steps and yet not achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.14: Scores of Three Components of Fitness for Experiment 3.
(Y-axis: Coefficient of Optimality, X-axis: Generation)
0
0.25
0.5
0.75
1
1 21 41 61
(max-pgs)/max (ls/max) (cfg/max)
131
4.6 Experiment 4: Midsize / Nine-Action / Divided-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
progress and more steps will be required in the simulation to move all 9 parts to the dump
cell. The agents in this experiment are not all governed by their own individual controller,
nor is this a ‘bookend’ approach. In this ‘Divided’ approach, the first two agents are
governed by the one controller while the last two agents in the system are governed by a
second controller.
Figure 4.15: Initial Configuration of System for Experiment 4
Experiment 4: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = True: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = True: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = True: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = True: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
132
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = “Divided"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 4: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
133
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 7 PGS= 800 LS= 693 CFG= 5859 SIM= 6552 --
2 S= 800 D= 5 PGS= 800 LS= 770 CFG= 4383 SIM= 5153 --
3 S= 800 D= 5 PGS= 800 LS= 745 CFG= 4383 SIM= 5128 --
4 S= 800 D= 5 PGS= 800 LS= 757 CFG= 3735 SIM= 4492 --
5 S= 800 D= 6 PGS= 800 LS= 733 CFG= 4383 SIM= 5116 --
6 S= 800 D= 7 PGS= 800 LS= 792 CFG= 5115 SIM= 5907 --
7 S= 800 D= 7 PGS= 800 LS= 764 CFG= 5157 SIM= 5921 --
8 S= 800 D= 7 PGS= 800 LS= 797 CFG= 5157 SIM= 5954 --
9 S= 800 D= 7 PGS= 800 LS= 789 CFG= 5913 SIM= 6702 --
10 S= 800 D= 7 PGS= 800 LS= 763 CFG= 5835 SIM= 6598 --
11 S= 800 D= 8 PGS= 800 LS= 762 CFG= 5841 SIM= 6603 --
12 S= 800 D= 6 PGS= 800 LS= 796 CFG= 5373 SIM= 6169 --
13 S= 800 D= 9 PGS= 223 LS= 750 CFG= 6561 SIM= 7888 --
14 S= 800 D= 9 PGS= 143 LS= 794 CFG= 6561 SIM= 8012 --
15 S= 800 D= 9 PGS= 131 LS= 799 CFG= 6561 SIM= 8029 --
16 S= 800 D= 9 PGS= 131 LS= 799 CFG= 6561 SIM= 8029 --
17 S= 800 D= 9 PGS= 107 LS= 794 CFG= 6561 SIM= 8048 --
18 S= 800 D= 9 PGS= 115 LS= 790 CFG= 6561 SIM= 8036 --
19 S= 800 D= 9 PGS= 115 LS= 800 CFG= 6561 SIM= 8046 LG
20 S= 800 D= 9 PGS= 103 LS= 797 CFG= 6561 SIM= 8055 --
21 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
22 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
23 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
24 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
25 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
26 S= 800 D= 9 PGS= 103 LS= 800 CFG= 6561 SIM= 8058 LG
27 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
28 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
29 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
30 S= 800 D= 9 PGS= 75 LS= 800 CFG= 6561 SIM= 8086 LG
31 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
32 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
33 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
34 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
35 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
36 S= 800 D= 9 PGS= 71 LS= 800 CFG= 6561 SIM= 8090 LG
37 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
38 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
39 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
40 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
41 S= 800 D= 9 PGS= 67 LS= 800 CFG= 6561 SIM= 8094 LG
42 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
43 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
44 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
45 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
46 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
47 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
48 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
49 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
50 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
51 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
52 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
53 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
54 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
134
55 S= 800 D= 9 PGS= 59 LS= 800 CFG= 6561 SIM= 8102 LG
56 S= 800 D= 9 PGS= 55 LS= 800 CFG= 6561 SIM= 8106 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 8106 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 55 legal steps within the simulation using the final evolved rule-sets
shown below. 55 steps is one step shy of 14 cycles within the simulation. The four agents
each take a consecutive step to complete one cycle. Note how the fitness measure allows
for multi-criteria evolution to occur. At times the evolutionary process will lean towards
transferring more parts to the dump cell even if it uses more illegal steps to accomplish
this. Other times the evolutionary process will seek to make all steps legal at the expense
of goal progress. Over time, the effect is to get better at each objective and finally to
settle down into the optimal, legal solution.
Experiment 4: Final Results G: 56 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 55 POSTGOALSTEPS= 745
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 8106 LG
An output listing below shows the trace for each of the 55 steps. It shows the step
action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Gr 2Gr 3Gl 4Mr 1Ml 2Gr 3Mr 4Gb 1Tb 2Ml 3Gr 4Gb 1Gr 2Mr 3Ml
4Ml 1Tb 2Gr 3Gr 4Mr 1Mr 2Tb 3Tl 4Gb 1Gr 2Dn 3Mr 4Tl 1Ml 2Mr 3Tl 4Gb 1Tb
2Tb 3Gr 4Gb 1Mr 2Gr 3Gr 4Gb 1Mr 2Tl 3Tb 4Tl 1Tb 2Gr 3Dn 4Gb 1Gr 2Gl 3Gr
4Gb 1Gr 2Gr 3Gr 4Gb 1Ml 2Ml 3Ml 4Ml 1Ml 2Ml 3Ml 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn
135
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
BENCH: 302110 302110 302110 302110 302110 302110 302110 302110 302111 202111 202111 202111 202112
202112 202112 202112 202112 102112 102112 102112 102112 102112 101112 101112 101113 101113 101113
101113 101113 101113 101113 101113 101114 001114 001014 001014 001015 001015 001015 001015 001016
001016 001016 001006 001006 000006 000006 000006 000007 000007 000007 000007 000008 000008 000008
000008 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
136
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 102304 102304 102034 102034 102034 120034 120034 120034
120034 102034 102304 102340 102340 102340 102340 102304 012304 012304 012304 012304 012304 012304
012034 012034 102034 100234 100234 100234 100234 100234 100234 100234 010234 010234 010234 010234
001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234 001234
001234 001234 010234 012034 012304 012340 102340 120340 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
137
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040 123040
123040 123040
CARRY: 010010 001010 000110 001010 001001 001001 000101 000011 000010 100010 100010 100001 100000
010000 001000 001000 001000 101000 100100 100010 100001 010001 011001 010101 010100 001100 001100
001010 001001 001001 000101 000011 000010 100010 100110 100101 100100 010100 010010 010001 010000
001000 000100 000110 000101 001101 001011 001011 001010 000110 001010 001001 001000 000100 000010
000001 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
138
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
139
Experiment 4: Evolved Rule-Sets
Single controller was evolved in 56 generations. This controller took 55 steps in the
simulation to reach the collaborative goal. The number of rules evolved for each
controller is 47 and 47 respectively for the two controllers out of a possible 64. Thus,
some states were never and could never be visited. Note that the rule-sets are not the
same.
# 47 [ShBnLvRn-Gr SnBhLhRn-Tb ShBhLwRv-Mr SnBnLvRh-Ml SnBhLvRh-Tb SnBhLvRn-Tb
ShBhLnRn-Gr ShBnLnRv-Mr SnBhLwRn-Tb ShBnLvRh-Gb SnBhLwRv-Tb SnBnLvRn-Ml SnBnLhRv-
Mr ShBnLhRv-Tl SnBhLvRv-Ml SnBhLnRv-Tb SnBnLnRv-Mr SnBnLhRn-Tl ShBnLhRn-Gr SnBnLvRv-
Mr SnBhLwRh-Tb SnBnLwRv-Mr SnBnLwRn-Dn ShBnLnRn-Gr ShBhLvRn-Gr ShBnLvRv-Mr
ShBnLwRv-Mr ShBnLwRn-Gr SnBnLnRn-Dn ShBhLwRn-Gr SnBhLnRh-Tb SnBnLnRh-Dn SnBnLhRh-
Tr ShBhLnRv-Mr SnBhLhRh-Tl ShBnLnRh-Gl ShBhLwRh-Tr ShBhLhRn-Gr SnBhLnRn-Tb ShBhLnRh-
Dn ShBnLwRh-Dn ShBhLvRv-Mr SnBhLhRv-Tb ShBhLhRv-Gb SnBnLwRh-Dn ShBhLvRh-Dn
ShBnLhRh-Gl ]
# 47 [SnBhLvRn-Ml SnBhLnRv-Tb ShBnLvRw-Dn SnBhLnRh-Dn SnBhLhRn-Tb SnBhLhRv-Tl
SnBhLvRw-Ml SnBhLvRh-Tb ShBhLnRv-Mr SnBhLhRh-Tl SnBhLhRw-Tl ShBhLvRn-Gr ShBhLnRw-
Gb ShBhLvRv-Mr ShBhLnRh-Gl ShBnLhRw-Gb ShBhLvRh-Dn ShBnLhRv-Mr ShBhLvRw-Gb
ShBnLnRv-Mr SnBnLvRh-Ml SnBnLnRh-Dn SnBnLhRv-Tl SnBnLnRv-Dn ShBhLnRn-Gr ShBhLhRw-
Gb ShBnLnRw-Gb SnBnLhRh-Tl SnBnLvRn-Ml ShBnLnRh-Dn ShBnLnRn-Gr SnBhLnRn-Tb
SnBhLvRv-Ml ShBnLvRn-Ml ShBnLvRv-Ml SnBnLhRn-Tl ShBnLhRh-Dn ShBhLhRn-Gr SnBnLvRv-
Dn SnBhLnRw-Dn ShBhLhRh-Gb ShBhLhRv-Mr SnBnLnRn-Dn ShBnLhRn-Gr ShBnLvRh-Gb
SnBnLhRw-Dn SnBnLvRw-Ml ]
Experiment 4: Graph Analysis
Figure 4.16 below shows the fitness score of every fifth solution ranked low to
high within the gene pool in every generation leading up to the final 56th generation. This
graph reflects the changing nature of the gene pool throughout the evolutionary process.
140
Figure 4.16: Evolving Fitness Scores of Experiment 4
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.17 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 56.
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
S1
S19
S37
S550
1000
2000
3000
4000
5000
6000
7000
8000
9000
141
Figure 4.17: Generational Fitness for Experiment 4
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.18 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
maximum values and the ratios are plotted below. Note that not all solutions leading to a
goal are achieved through legal steps (yellow optimal but pink suboptimal). Note also
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55
142
that in early generations, a solution can be comprised entirely of legal steps and yet not
achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.18: Scores of Three Components of Fitness for Experiment 4
(Y-axis: Coefficient of Optimality, X-axis: Generation)
0
0.25
0.5
0.75
1
1 21 41
(max-pgs)/max (ls/max) (cfg/max)
143
4.7 Experiment 5: Midsize / Five-Action / Individually-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
progress and more steps will be required in the simulation to move all 9 parts to the
dump cell. Additionally, this experiment has each agent relying on its own set of
controller rules. Thus, each agent’s rule-set is evolved pursuant to the particular agent’s
experiences within the simulation training. This is the ‘individual’ controller plan
designation.
Figure 4.19: Initial Configuration of System for Experiment 5
Experiment 5: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = False: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = False: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = False: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = False: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
144
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = "Individual"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 5: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
145
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 2 PGS= 800 LS= 731 CFG= 1845 SIM= 2576 --
2 S= 800 D= 2 PGS= 800 LS= 793 CFG= 1767 SIM= 2560 --
3 S= 800 D= 1 PGS= 800 LS= 759 CFG= 1827 SIM= 2586 --
4 S= 800 D= 3 PGS= 800 LS= 701 CFG= 2691 SIM= 3392 --
5 S= 800 D= 3 PGS= 800 LS= 782 CFG= 2691 SIM= 3473 --
6 S= 800 D= 3 PGS= 800 LS= 793 CFG= 2691 SIM= 3484 --
7 S= 800 D= 3 PGS= 800 LS= 798 CFG= 2691 SIM= 3489 --
8 S= 800 D= 3 PGS= 800 LS= 799 CFG= 2691 SIM= 3490 --
9 S= 800 D= 3 PGS= 800 LS= 799 CFG= 2691 SIM= 3490 --
10 S= 800 D= 3 PGS= 800 LS= 799 CFG= 2295 SIM= 3094 --
11 S= 800 D= 3 PGS= 800 LS= 799 CFG= 2295 SIM= 3094 --
12 S= 800 D= 4 PGS= 800 LS= 746 CFG= 3249 SIM= 3995 --
13 S= 800 D= 3 PGS= 800 LS= 786 CFG= 3249 SIM= 4035 --
14 S= 800 D= 3 PGS= 800 LS= 796 CFG= 3249 SIM= 4045 --
15 S= 800 D= 4 PGS= 800 LS= 760 CFG= 3663 SIM= 4423 --
16 S= 800 D= 3 PGS= 800 LS= 798 CFG= 3249 SIM= 4047 --
17 S= 800 D= 3 PGS= 800 LS= 798 CFG= 3249 SIM= 4047 --
18 S= 800 D= 3 PGS= 800 LS= 798 CFG= 3249 SIM= 4047 --
19 S= 800 D= 3 PGS= 800 LS= 798 CFG= 3249 SIM= 4047 --
20 S= 800 D= 3 PGS= 800 LS= 799 CFG= 3249 SIM= 4048 --
21 S= 800 D= 5 PGS= 800 LS= 766 CFG= 3735 SIM= 4501 --
22 S= 800 D= 6 PGS= 800 LS= 781 CFG= 4383 SIM= 5164 --
23 S= 800 D= 6 PGS= 800 LS= 768 CFG= 4383 SIM= 5151 --
24 S= 800 D= 5 PGS= 800 LS= 792 CFG= 3663 SIM= 4455 --
25 S= 800 D= 5 PGS= 800 LS= 793 CFG= 3663 SIM= 4456 --
26 S= 800 D= 5 PGS= 800 LS= 799 CFG= 3663 SIM= 4462 --
27 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3663 SIM= 4463 L-
28 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3663 SIM= 4463 L-
29 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3663 SIM= 4463 L-
30 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3663 SIM= 4463 L-
31 S= 800 D= 5 PGS= 800 LS= 800 CFG= 3663 SIM= 4463 L-
32 S= 800 D= 6 PGS= 800 LS= 786 CFG= 4383 SIM= 5169 --
33 S= 800 D= 6 PGS= 800 LS= 794 CFG= 4383 SIM= 5177 --
34 S= 800 D= 6 PGS= 800 LS= 795 CFG= 4383 SIM= 5178 --
35 S= 800 D= 6 PGS= 800 LS= 796 CFG= 4383 SIM= 5179 --
36 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4383 SIM= 5183 L-
37 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4383 SIM= 5183 L-
38 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4383 SIM= 5183 L-
39 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4383 SIM= 5183 L-
40 S= 800 D= 6 PGS= 800 LS= 796 CFG= 4389 SIM= 5185 --
41 S= 800 D= 6 PGS= 800 LS= 799 CFG= 4389 SIM= 5188 --
42 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4389 SIM= 5189 L-
43 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4389 SIM= 5189 L-
44 S= 800 D= 6 PGS= 800 LS= 762 CFG= 4779 SIM= 5541 --
45 S= 800 D= 8 PGS= 800 LS= 795 CFG= 5835 SIM= 6630 --
46 S= 800 D= 8 PGS= 800 LS= 797 CFG= 5835 SIM= 6632 --
47 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
48 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
49 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
50 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
51 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
52 S= 800 D= 8 PGS= 800 LS= 799 CFG= 5835 SIM= 6634 --
53 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5835 SIM= 6635 L-
54 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
146
55 S= 800 D= 8 PGS= 800 LS= 779 CFG= 5913 SIM= 6692 --
56 S= 800 D= 8 PGS= 800 LS= 794 CFG= 5913 SIM= 6707 --
57 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
58 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
59 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
60 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
61 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
62 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
63 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
64 S= 800 D= 9 PGS= 315 LS= 776 CFG= 6561 SIM= 7822 --
65 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
66 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
67 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
68 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
69 S= 800 D= 9 PGS= 395 LS= 764 CFG= 6561 SIM= 7730 --
70 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
71 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
72 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
73 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
74 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
75 S= 800 D= 8 PGS= 800 LS= 800 CFG= 5841 SIM= 6641 L-
76 S= 800 D= 9 PGS= 399 LS= 760 CFG= 6561 SIM= 7722 --
77 S= 800 D= 9 PGS= 371 LS= 799 CFG= 6561 SIM= 7789 --
78 S= 800 D= 9 PGS= 371 LS= 799 CFG= 6561 SIM= 7789 --
79 S= 800 D= 9 PGS= 371 LS= 799 CFG= 6561 SIM= 7789 --
80 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
81 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
82 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
83 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
84 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
85 S= 800 D= 9 PGS= 299 LS= 767 CFG= 6561 SIM= 7829 --
86 S= 800 D= 9 PGS= 371 LS= 800 CFG= 6561 SIM= 7790 LG
87 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
88 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
89 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
90 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
91 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
92 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
93 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
94 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
95 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
96 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
97 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
98 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
99 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
100 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
101 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
102 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
103 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
104 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
105 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
106 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
107 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
108 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
109 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
110 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
147
111 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
112 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
113 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
114 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
115 S= 800 D= 9 PGS= 239 LS= 785 CFG= 6561 SIM= 7907 --
116 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
117 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
118 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
119 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
120 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
121 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
122 S= 800 D= 9 PGS= 363 LS= 800 CFG= 6561 SIM= 7798 LG
123 S= 800 D= 9 PGS= 215 LS= 789 CFG= 6561 SIM= 7935 --
124 S= 800 D= 9 PGS= 211 LS= 799 CFG= 6561 SIM= 7949 --
125 S= 800 D= 9 PGS= 211 LS= 799 CFG= 6561 SIM= 7949 --
126 S= 800 D= 9 PGS= 211 LS= 799 CFG= 6561 SIM= 7949 --
127 S= 800 D= 9 PGS= 211 LS= 799 CFG= 6561 SIM= 7949 --
128 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
129 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
130 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
131 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
132 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
133 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
134 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
135 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
136 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
137 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
138 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
139 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
140 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
141 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
142 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
143 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
144 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
145 S= 800 D= 9 PGS= 207 LS= 800 CFG= 6561 SIM= 7954 LG
146 S= 800 D= 9 PGS= 199 LS= 798 CFG= 6561 SIM= 7960 --
147 S= 800 D= 9 PGS= 203 LS= 800 CFG= 6561 SIM= 7958 LG
148 S= 800 D= 9 PGS= 203 LS= 800 CFG= 6561 SIM= 7958 LG
149 S= 800 D= 9 PGS= 199 LS= 799 CFG= 6561 SIM= 7961 --
150 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
151 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
152 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
153 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
154 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
155 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
156 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
157 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
158 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
159 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
160 S= 800 D= 9 PGS= 191 LS= 796 CFG= 6561 SIM= 7966 --
161 S= 800 D= 9 PGS= 191 LS= 796 CFG= 6561 SIM= 7966 --
162 S= 800 D= 9 PGS= 191 LS= 796 CFG= 6561 SIM= 7966 --
163 S= 800 D= 9 PGS= 191 LS= 796 CFG= 6561 SIM= 7966 --
164 S= 800 D= 9 PGS= 191 LS= 799 CFG= 6561 SIM= 7969 --
165 S= 800 D= 9 PGS= 191 LS= 799 CFG= 6561 SIM= 7969 --
166 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
148
167 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
168 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
169 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
170 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
171 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
172 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
173 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
174 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
175 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
176 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
177 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
178 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
179 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
180 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
181 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
182 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
183 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
184 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
185 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
186 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
187 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
188 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
189 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
190 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
191 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
192 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
193 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
194 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
195 S= 800 D= 9 PGS= 187 LS= 800 CFG= 6561 SIM= 7974 LG
196 S= 800 D= 9 PGS= 183 LS= 800 CFG= 6561 SIM= 7978 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 7978 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 183 legal steps within the simulation using the final evolved rule-sets
shown below. 183 steps is one step shy of 46 cycles within the simulation. This solution
was found in the 196th generation. The four agents each take a consecutive step to
complete one cycle. Note how the fitness measure allows for multi-criteria evolution to
occur. At times the evolutionary process will lean towards transferring more parts to the
dump cell even if it uses more illegal steps to accomplish this. Other times the
evolutionary process will seek to make all steps legal at the expense of goal progress.
149
Over time, the effect is to get better at each objective and finally to settle down into the
optimal, legal solution.
Experiment 5: Final Results G: 295 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 183 POSTGOALSTEPS= 617
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 7978 LG
An output listing below shows the trace for each of the 183 steps. It shows the
step action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Dn 2Dn 3Tb 4Mr 1Dn 2Tb 3Mr 4Gb 1Gb 2Mr 3Gb 4Dn 1Ml 2Gb 3Dn
4Dn 1Tb 2Ml 3Ml 4Ml 1Mr 2Dn 3Dn 4Tb 1Gb 2Tb 3Tb 4Mr 1Dn 2Gb 3Mr 4Gb 1Ml
2Tb 3Gb 4Dn 1Tb 2Gb 3Ml 4Ml 1Mr 2Dn 3Dn 4Tb 1Gb 2Tb 3Dn 4Mr 1Dn 2Gb 3Dn
4Gb 1Ml 2Ml 3Ml 4Ml 1Tb 2Dn 3Tb 4Tb 1Dn 2Tb 3Mr 4Mr 1Dn 2Mr 3Mr 4Gb 1Mr
2Mr 3Dn 4Dn 1Dn 2Gb 3Gb 4Dn 1Dn 2Ml 3Ml 4Ml 1Gb 2Dn 3Dn 4Tb 1Ml 2Ml 3Tb
4Mr 1Dn 2Tb 3Mr 4Gb 1Dn 2Mr 3Gb 4Dn 1Dn 2Gb 3Ml 4Ml 1Dn 2Ml 3Ml 4Tb 1Dn
2Tb 3Tb 4Mr 1Dn 2Gb 3Mr 4Gb 1Dn 2Tb 3Mr 4Dn 1Dn 2Mr 3Gb 4Dn 1Dn 2Gb 3Ml
4Ml 1Dn 2Ml 3Ml 4Tb 1Dn 2Tb 3Tb 4Mr 1Dn 2Gb 3Mr 4Gb 1Dn 2Tb 3Mr 4Dn 1Dn
2Mr 3Gb 4Dn
1Dn 2Gb 3Ml 4Ml 1Dn 2Ml 3Ml 4Tb 1Dn 2Dn 3Tb 4Mr 1Dn 2Dn 3Mr 4Gb 1Dn 2Dn
3Mr 4Dn 1Dn 2Dn 3Gb 4Dn 1Dn 2Dn 3Ml 4Ml 1Dn 2Dn 3Ml 4Tb 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Gb 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml
1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml
1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml
1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn
3Dn 4Ml
1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml
1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn
3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml
150
1Dn 2Dn 3Dn
4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn
2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn
4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn
2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn
4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn
2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn
4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn
2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn
4Mr 1Dn
2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn
4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn
2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn
4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Mr
BENCH: 302110 302110 302110 302010 302010 302010 301010 301010 301011 311011 311011 311021 311021
311021 311121 311121 311121 211121 211121 211121 211121 211121 211121 211121 211111 221111 220111
220011 220011 220011 221011 221011 221012 221012 220012 220022 220022 120022 121022 121022 121022
121022 121022 121022 121012 131012 130012 130012 130012 130012 131012 131012 131013 131013 131013
131013 131013 031013 031013 030013 030003 030003 020003 020003 020003 020003 020003 020003 020004
020004 020004 020004 020004 020004 020104 020114 020114 020114 020114 020114 020114 030114 030114
030114 030104 030104 030104 030004 030004 030004 020004 020004 020005 020005 020005 020015 020015
020015 021015 021015 021015 021015 021015 021015 021005 021005 011005 010005 010005 010005 020005
020005 020006 020006 010006 010006 010006 010006 010006 010016 010016 010016 011016 011016 011016
011016 011016 011016 011006 011006 001006 000006 000006 000006 010006 010006 010007 010007 000007
000007 000007 000007 000007 000017 000017
000017 001017 001017 001017 001017 001017 001017 001007 001007 001007 000007 000007 000007 000007
000007 000008 000008 000008 000008 000008 000008 000008 000018 000018 000018 000018 000018 000018
000018 000018 000018 000008 000008 000008 000008 000008 000008 000008 000008 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
151
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 012304 012304 012034 012034 012034 010234 010234 010234
100234 100234 100234 100234 100234 102034 102304 102340 012340 012340 012340 012340 012340 012340
012340 012304 012304 012304 012034 012034 102034 102034 102034 102034 102034 102034 102304 102340
012340 012340 012340 012340 012340 012340 012340 012304 012304 012304 012304 012304 102304 120304
123004 123040 123040 123040 123040 123040 123040 123040 120340 120304 120304 102304 102034 102034
012034 010234 010234 010234 010234 010234 010234 010234 010234 012034 012304 012340 012340 012340
012340 012340 102340 120340 120340 120304 120304 120304 120034 120034 120034 102034 102034 102034
102034 102034 102304 102340 102340 120340 123040 123040 123040 123040 123040 123004 123004 123004
120304 120304 120304 120304 120034 120034 120034 102034 102034 102034 102034 102034 102304 102340
102340 120340 123040 123040 123040 123040 123040 123004 123004 123004 120304 120304 120304 120304
120034 120034 120034 102034 102034 102034
102034 102034 102304 102340 102340 120340 123040 123040 123040 123040 123040 123004 123004 123004
120304 120304 120304 120304 120034 120034 120034 120034 120034 120034 120034 120034 120304 120340
120340 120340 123040 123040 123040 123040 123040 123004 123004 123004 123004 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
152
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040
123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004 123004 123004
123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040 123040 123004
123004 123004 123004 123040 123040 123040 123040 123004 123004 123004 123004 123040 123040 123040
123040 123004
CARRY: 010010 010010 010010 010110 010101 010101 011101 011011 011010 001010 000110 000100 000100
000100 000000 000000 000000 100000 100000 100000 100000 010000 010000 010000 010010 000010 001010
001110 001101 001101 000101 000011 000010 000010 001010 001000 001000 101000 100000 100000 100000
010000 010000 010000 010010 000010 001010 001010 001001 001001 000001 000001 000000 000000 000000
000000 000000 100000 100000 101000 101010 101010 111010 110110 110101 110101 101101 101011 101010
011010 010110 010110 010110 010110 010010 010000 010000 010000 010000 010000 010000 000000 000000
000000 000010 000010 000010 000110 000101 000101 010101 010011 010010 010010 001010 001000 001000
001000 000000 000000 000000 000000 000000 000000 000010 000010 010010 011010 011001 011001 001001
000101 000100 000100 010100 010010 010010 010010 001010 001000 001000 001000 000000 000000 000000
000000 000000 000000 000010 000010 010010 011010 011001 011001 001001 000101 000100 000100 010100
010010 010010 010010 001010 001000 001000
001000 000000 000000 000000 000000 000000 000000 000010 000010 000010 001010 001001 001001 001001
000101 000100 000100 000100 000010 000010 000010 000010 000000 000000 000000 000000 000000 000000
000000 000000 000000 000010 000010 000010 000010 000001 000001 000001 000001 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
153
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
Experiment 5: Evolved Rule-Sets
Below are shown the evolved rule-sets for the system. Since the individual controller plan
was used, a distinct rule-set for each agent was evolved based on the experiences of that
agent in the simulations. Each rule-set below is preceded by a number reflecting the
number of rules that were evolved within the rule-set. Each rule is of the format
‘C1C2C3C4-Action’ where a series of condition settings have an associated subscribed
action. Note that the total number of possible rules is equal to the total number of
possible condition states which in this problem is 64. The evolution of a reduced number
of rules is a significant improvement over trying to pre-determine all 64 rules for each
agent outside of an evolutionary learning process. Note that Agent A’s rule-set never has
154
a rule with “wall to the right” condition since this is never encountered by the agent in the
course of the simulation. This is due to agents being unable to pass each other in the
corridor. Each agent is therefore limited in its scope of experience and this in turn
influences which rules evolve for it. It will be shown that in subsequent experiments in
which an alternative controller plan is used, the experiences of multiple agents sourced by
a common controller are shared and are used towards the evolutionary shaping of that
rule-set. Note also that the disabling of side-to-side taking and giving actions has forced
the agents to rely on the more awkward and laborious bench passing and cell shifting
in order to accomplish part transfer in the system. The rule-sets below are a reduced set
of rules necessary to elicit optimal collaborative performance within the simulation.
Operating the agents individually by these rules does not result in optimal system
performance. It is the necessary inter-dependence that is captured by these evolved rule-
sets. The four controllers were evolved in 196 generations. These controllers
operating together took 183 steps in the simulation to reach the collaborative goal.
The # rules evolved across the four controllers 118.
# 22 [ShBnLvRn-Dn SnBhLvRn-Ml ShBnLvRh-Gb SnBhLvRv-Ml ShBhLvRv-Dn ShBhLvRn-Gb
SnBhLwRv-Tb ShBhLwRv-Mr ShBnLwRv-Mr SnBnLwRv-Dn SnBnLwRn-Dn SnBhLwRn-Tb
SnBhLvRh-Dn SnBnLvRv-Dn SnBnLwRh-Dn ShBnLwRh-Dn ShBnLwRn-Dn SnBhLwRh-Gl
SnBnLvRn-Ml ShBhLwRh-Dn ShBnLvRv-Mr ShBhLvRh-Gb ]
# 36 [ShBhLhRn-Dn ShBnLvRh-Gb SnBhLvRn-Ml ShBhLvRn-Gb SnBnLvRn-Ml SnBhLhRh-Tb
ShBnLvRn-Gb SnBhLvRv-Tb SnBhLhRn-Dn SnBnLhRv-Dn ShBhLhRv-Mr SnBnLnRn-Dn ShBnLnRn-
Gb ShBhLvRv-Mr ShBnLhRv-Mr SnBnLnRv-Dn SnBhLnRv-Tb ShBnLvRv-Gb SnBhLnRn-Tb
ShBnLhRn-Gb SnBnLvRh-Dn ShBnLhRh-Tl SnBnLvRv-Tb ShBhLnRv-Mr ShBhLvRh-Dn ShBhLnRn-
Dn SnBnLhRh-Dn SnBhLnRh-Tb SnBhLvRh-Dn ShBhLnRh-Gb SnBhLhRv-Tb SnBnLnRh-Dn
ShBnLnRv-Mr SnBnLhRn-Dn ShBnLnRh-Gb ShBhLhRh-Dn ]
# 36 [ShBnLnRv-Mr ShBnLhRv-Mr SnBnLnRv-Dn SnBhLnRv-Tb ShBhLnRn-Gb SnBnLnRn-Dn
SnBhLvRn-Ml ShBnLvRn-Gb ShBhLvRn-Gb SnBnLvRv-Ml SnBhLvRv-Tb ShBnLvRv-Mr ShBhLvRh-
Tb SnBhLhRv-Tb ShBnLnRh-Dn SnBhLhRn-Tb SnBhLnRn-Dn SnBhLnRh-Tb ShBhLhRn-Gb
ShBhLvRv-Mr SnBhLvRh-Tb SnBnLhRv-Mr ShBhLhRv-Mr SnBnLhRn-Dn ShBhLnRv-Mr SnBnLhRh-
Dn SnBnLvRn-Ml SnBnLnRh-Dn SnBhLhRh-Tb ShBnLhRn-Dn ShBhLnRh-Tb ShBnLvRh-Tl
ShBnLnRn-Gb SnBnLvRh-Ml ShBhLhRh-Tl ShBnLhRh-Dn ]
155
# 24 [ShBhLnRv-Mr SnBhLvRw-Ml ShBhLvRw-Gb SnBhLhRv-Tb SnBhLvRv-Tb SnBnLvRv-Mr
SnBnLnRv-Dn ShBhLhRv-Mr SnBhLhRw-Dn ShBhLvRv-Mr ShBnLnRw-Gb SnBnLhRw-Dn
ShBhLhRw-Gb SnBnLvRw-Tr ShBnLnRv-Mr SnBnLnRw-Dn ShBnLhRv-Mr SnBhLnRw-Dn
SnBhLnRv-Tb ShBhLnRw-Tb ShBnLvRv-Mr ShBnLvRw-Gb SnBnLhRv-Mr ShBnLhRw-Gb ]
Experiment 5: Graph Analysis
Figure 4.20 below shows the fitness score of every fifth solution ranked low to high
within the gene pool in every generation leading up to the final 196th generation. This
graph reflects the changing nature of the gene pool throughout the evolutionary process.
Figure 4.20: Evolving Fitness Scores of Experiment 5
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.21 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 196. Note that although the system is able to
1
14
27
40
53
66
79
92
10
5
11
8
13
1
14
4
15
7
17
0
18
3
19
6
S1
S35
S69
0
1000
2000
3000
4000
5000
6000
7000
8000
156
transfer all parts to the dump cell as early as generation 123, this solution may include
illegal and/or superfluous steps. It is not until generation 196 that the evolutionary
process stabilizes to an optimal solution achieved in 183 legal steps.
Figure 4.21: Generational Fitness for Experiment 5
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.22 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 12 23 34 45 56 67 78 89 100 111 122 133 144 155 166 177 188
157
maximum values and the ratios are plotted below in Figure 4.22. Note that not all
solutions leading to a goal are achieved through legal steps (yellow optimal but pink
suboptimal). Note also that in early generations, a solution can be comprised entirely of
legal steps and yet not achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.22: Scores of Three Components of Fitness for Experiment 5
(Y-axis: Coefficient of Optimality, X-axis: Generation)
4.8 Experiment 6: Midsize / Five-Action / Bookend-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
0
0.25
0.5
0.75
1
1 21 41 61 81 101 121 141 161 181
(max-pgs)/max (ls/max) (cfg/max)
158
progress and more steps will be required in the simulation to move all 9 parts to the dump
cell.
The agents in this experiment are not all governed by their own individual
controller. In this ‘bookend’ approach, the end agents A and D each get their own
controller. The middle agents B and C will be sourcing a common controller. This is a
reasonable approach given that B and C are exposed to similar conditional states whereas
A and D experience conditional states unique to each other as well as to the central
agents. Thus, there are three controllers to be evolved in this system. The second
controller draws from the experiences of both agent B and C. The ability of the method to
specify the sourcing controller for each agent in the system is useful for systems in which
collaboration between two or more distinct agent groups is desired. It is expected that use
of the ‘bookend’ controller plan also decreases the number of steps required to find the
optimal collaborative goal. The number of rules in the three controllers will also be
altered from the prior four rule-sets evolved under the individual controller plan.
Figure 4.23: Initial Configuration of System for Experiment 6
Experiment 6: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
159
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = False: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = False: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = False: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = False: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = "Bookend"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 6: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
160
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 1 PGS= 800 LS= 732 CFG= 1773 SIM= 2505 --
2 S= 800 D= 1 PGS= 800 LS= 793 CFG= 1773 SIM= 2566 --
3 S= 800 D= 3 PGS= 800 LS= 747 CFG= 2703 SIM= 3450 --
4 S= 800 D= 3 PGS= 800 LS= 776 CFG= 2259 SIM= 3035 --
5 S= 800 D= 3 PGS= 800 LS= 771 CFG= 2601 SIM= 3372 --
6 S= 800 D= 3 PGS= 800 LS= 798 CFG= 2601 SIM= 3399 --
7 S= 800 D= 3 PGS= 800 LS= 798 CFG= 2601 SIM= 3399 --
8 S= 800 D= 3 PGS= 800 LS= 798 CFG= 2601 SIM= 3399 --
9 S= 800 D= 4 PGS= 800 LS= 799 CFG= 3171 SIM= 3970 --
10 S= 800 D= 4 PGS= 800 LS= 772 CFG= 3249 SIM= 4021 --
11 S= 800 D= 4 PGS= 800 LS= 800 CFG= 3171 SIM= 3971 L-
12 S= 800 D= 4 PGS= 800 LS= 800 CFG= 3171 SIM= 3971 L-
13 S= 800 D= 4 PGS= 800 LS= 800 CFG= 3171 SIM= 3971 L-
14 S= 800 D= 5 PGS= 800 LS= 796 CFG= 3663 SIM= 4459 --
15 S= 800 D= 5 PGS= 800 LS= 774 CFG= 3921 SIM= 4695 --
16 S= 800 D= 5 PGS= 800 LS= 797 CFG= 3663 SIM= 4460 --
17 S= 800 D= 5 PGS= 800 LS= 785 CFG= 3897 SIM= 4682 --
18 S= 800 D= 7 PGS= 800 LS= 799 CFG= 5109 SIM= 5908 --
19 S= 800 D= 7 PGS= 800 LS= 800 CFG= 5109 SIM= 5909 L-
20 S= 800 D= 7 PGS= 800 LS= 793 CFG= 5349 SIM= 6142 --
21 S= 800 D= 7 PGS= 800 LS= 800 CFG= 5109 SIM= 5909 L-
22 S= 800 D= 8 PGS= 800 LS= 772 CFG= 6075 SIM= 6847 --
23 S= 800 D= 7 PGS= 800 LS= 800 CFG= 5115 SIM= 5915 L-
24 S= 800 D= 7 PGS= 800 LS= 800 CFG= 5115 SIM= 5915 L-
25 S= 800 D= 7 PGS= 800 LS= 784 CFG= 5133 SIM= 5917 --
26 S= 800 D= 7 PGS= 800 LS= 799 CFG= 5133 SIM= 5932 --
27 S= 800 D= 7 PGS= 800 LS= 800 CFG= 5133 SIM= 5933 L-
28 S= 800 D= 8 PGS= 800 LS= 795 CFG= 5835 SIM= 6630 --
29 S= 800 D= 8 PGS= 800 LS= 795 CFG= 5835 SIM= 6630 --
30 S= 800 D= 8 PGS= 800 LS= 793 CFG= 6075 SIM= 6868 --
31 S= 800 D= 9 PGS= 215 LS= 795 CFG= 6561 SIM= 7941 --
32 S= 800 D= 9 PGS= 215 LS= 799 CFG= 6561 SIM= 7945 --
33 S= 800 D= 9 PGS= 215 LS= 799 CFG= 6561 SIM= 7945 --
34 S= 800 D= 9 PGS= 215 LS= 799 CFG= 6561 SIM= 7945 --
35 S= 800 D= 9 PGS= 215 LS= 799 CFG= 6561 SIM= 7945 --
36 S= 800 D= 9 PGS= 199 LS= 799 CFG= 6561 SIM= 7961 --
37 S= 800 D= 9 PGS= 199 LS= 799 CFG= 6561 SIM= 7961 --
38 S= 800 D= 9 PGS= 199 LS= 799 CFG= 6561 SIM= 7961 --
39 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
40 S= 800 D= 9 PGS= 191 LS= 797 CFG= 6561 SIM= 7967 --
41 S= 800 D= 9 PGS= 191 LS= 799 CFG= 6561 SIM= 7969 --
42 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
43 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
44 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
45 S= 800 D= 9 PGS= 179 LS= 800 CFG= 6561 SIM= 7982 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
161
The method found an optimal solution score of 7982 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 179 legal steps within the simulation using the final evolved rule-sets
shown below. 179 steps is one step shy of 45 cycles within the simulation. The four
agents each take a consecutive step to complete one cycle. Note how the fitness measure
allows for multi-criteria evolution to occur. At times the evolutionary process will lean
towards transferring more parts to the dump cell even if it uses more illegal steps to
accomplish this. Other times the evolutionary process will seek to make all steps legal at
the expense of goal progress. Over time, the effect is to get better at each objective and
finally to settle down into the optimal, legal solution.
Experiment 6: Final Results
G: 45 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 179 POSTGOALSTEPS= 621
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 7982 LG
An output listing below shows the trace for each of the 179 steps. It shows the
step action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Gb 2Dn 3Tb 4Mr 1Ml 2Tb 3Mr 4Gb 1Dn 2Mr 3Gb 4Dn 1Dn 2Gb 3Dn
4Dn 1Dn 2Ml 3Ml 4Ml 1Dn 2Ml 3Ml 4Ml 1Dn 2Dn 3Dn 4Tb 1Dn 2Dn 3Tb 4Mr 1Dn
2Tb 3Mr 4Mr 1Tb 2Mr 3Mr 4Gb 1Mr 2Mr 3Gb 4Dn 1Dn 2Gb 3Dn 4Dn 1Dn 2Ml 3Ml
4Ml 1Gb 2Dn 3Dn 4Tb 1Ml 2Dn 3Tb 4Mr 1Dn 2Ml 3Mr 4Gb 1Dn 2Tb 3Gb 4Dn 1Tb
2Mr 3Ml 4Ml 1Mr 2Gb 3Dn 4Tb 1Gb 2Dn 3Dn 4Mr 1Ml 2Ml 3Ml 4Gb 1Dn 2Dn 3Tb
4Ml 1Dn 2Tb 3Mr 4Tb 1Tb 2Mr 3Dn 4Mr 1Mr 2Dn 3Mr 4Gb 1Dn 2Mr 3Gb 4Dn 1Dn
2Gb 3Dn 4Dn 1Dn 2Ml 3Ml 4Ml 1Gb 2Dn 3Dn 4Tb 1Ml 2Dn 3Tb 4Mr 1Dn 2Ml 3Mr
4Gb 1Dn 2Tb 3Gb 4Dn 1Dn 2Mr 3Ml 4Ml 1Dn 2Gb 3Dn 4Tb 1Dn 2Ml 3Ml 4Mr 1Dn
2Dn 3Tb 4Gb
1Dn 2Dn 3Mr 4Ml 1Dn 2Mr 3Gb 4Tb 1Dn 2Dn 3Tb 4Mr 1Dn 2Ml 3Mr 4Gb 1Dn 2Mr
3Gb 4Dn 1Dn 2Ml 3Ml 4Ml 1Dn 2Mr 3Dn 4Tb 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Mr 4Gb
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
162
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr
3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr
3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr
3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr
3Dn 4Dn
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr
3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn
1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml
3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr
3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn
1Dn 2Ml 3Dn
4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn
2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn
4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn
2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn
4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn
2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn
4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn
2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn
4Dn 1Dn
2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn
4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn
2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn
4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn 1Dn 2Mr 3Dn 4Dn 1Dn 2Ml 3Dn 4Dn
BENCH: 302110 312110 312110 312010 312010 312010 311010 311010 311011 311011 311011 311021 311021
311021 311121 311121 311121 311121 311121 311121 311121 311121 311121 311121 311121 311121 311121
311121 311021 311021 311021 310021 310021 310021 300021 300021 300021 200021 200021 200021 200022
200022 200022 200032 200032 200032 200132 200132 200132 200132 200132 200132 200132 210132 210132
210132 210122 210122 210122 210022 210022 210022 210022 210022 210023 210023 200023 200033 200033
100033 100033 100033 100033 100033 101033 101033 101023 111023 111023 111023 111023 111023 111023
111023 111024 111024 111024 110024 110024 110024 100024 100024 100014 000014 000014 000014 000014
000014 000014 000014 000015 000015 000015 000025 000025 000025 000125 000125 000125 000125 000125
000125 000125 010125 010125 010125 010115 010115 010115 010015 010015 010015 010015 010015 010016
010016 000016 000026 000026 000026 000026 000026 000026 000026 001026 001026 001016 001016 001016
001016 001016 001016 001016 000016 000017
000017 000017 000017 000017 000017 000017 000117 000107 000107 000107 000007 000007 000007 000007
000007 000008 000008 000008 000018 000018 000018 000018 000018 000018 000018 000018 000018 000008
000008 000008 000008 000008 000008 000008 000008 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
163
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 102304 102304 102034 102034 102034 100234 100234 100234
100234 100234 100234 100234 100234 102034 102304 102340 102340 120340 123040 123400 123400 123400
123400 123400 123400 123400 123400 123040 123040 123040 120340 120304 120304 102304 102034 102034
012034 010234 010234 010234 010234 010234 010234 010234 010234 012034 012304 012340 012340 012340
012340 012340 102340 102340 102340 102304 102304 120304 120034 120034 120034 120034 120034 120034
120034 102034 102304 102340 012340 012340 012340 012340 012340 012340 012340 012304 102304 120304
123004 123004 123004 123004 123004 123040 123040 123040 120340 120340 120340 102340 102340 102304
012304 012304 012034 012034 012034 010234 010234 010234 010234 010234 010234 010234 010234 012034
012304 012340 012340 012340 012340 012340 102340 102340 102340 102304 102304 120304 120034 120034
120034 120034 120034 120034 120034 102034 102304 102340 102340 102340 102340 102340 102340 120340
123040 123004 123004 123004 123004 123004
123004 123004 120304 120340 120340 102340 102340 102340 102340 102340 102340 102304 102304 120304
120034 120034 120034 102034 102034 102034 102034 120034 120304 120340 120340 102340 102340 102340
102340 102340 102340 102304 102304 102304 102034 102034 102034 120034 120034 120034 120034 102034
164
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034
102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034 120034 102034
102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034 120034 120034
120034 102034 102034 102034 102034 120034 120034 120034 120034 102034 102034 102034 102034 120034
120034 120034
CARRY: 010010 000010 000010 000110 000101 000101 001101 001011 001010 001010 000110 000100 000100
000100 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000100 000100 000100 001100 001010 001010 011010 010110 010101 110101 101101 101011 101010
011010 010110 010100 010100 010100 010000 010000 010000 010000 010000 010000 010000 000000 000000
000000 000010 000010 000010 000110 000101 000101 000101 000011 000010 000010 010010 010000 010000
110000 101000 101000 101000 011000 010000 010000 010010 000010 000010 000010 000001 000001 000001
000001 000000 000000 000000 001000 001000 001000 011000 010100 010110 110110 101110 101110 101101
011101 011101 011011 011010 011010 010110 010100 010100 010100 010000 010000 010000 010000 010000
010000 010000 000000 000000 000000 000010 000010 000010 000110 000101 000101 000101 000011 000010
000010 010010 010000 010000 010000 001000 001000 001000 001000 000000 000000 000010 000010 000010
165
000010 000001 000001 000001 001001 001000
001000 001000 000100 000100 000100 000100 000000 000010 000010 000010 000110 000101 000101 000101
000011 000010 000010 000010 000000 000000 000000 000000 000000 000000 000000 000000 000000 000010
000010 000010 000010 000001 000001 000001 000001 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
166
Experiment 6: Evolved Rule-Sets
Below are shown the evolved rule-sets for the system. The three controllers were
evolved in only 45 generations. These controllers operating together took 179 steps
in the simulation to reach the collaborative goal. The number of rules evolved for all
controllers is 81. Note that the agents central B and C are governed by the single middle
controller. The rules in the second controller are sufficient for the control of actions of
both B and C agents within the simulation.
# 24 [SnBhLvRn-Ml SnBhLvRh-Dn ShBnLvRh-Dn SnBhLwRv-Dn SnBhLvRv-Tb ShBnLvRn-Gb
ShBhLwRv-Mr ShBnLvRv-Dn ShBhLvRn-Ml ShBhLvRh-Tl SnBnLvRn-Dn ShBhLwRn-Dn SnBhLwRn-
Dn SnBnLvRv-Ml ShBhLwRh-Gb SnBnLvRh-Ml ShBnLwRv-Mr SnBnLwRv-Dn SnBnLwRn-Dn
ShBnLwRn-Dn SnBnLwRh-Dn ShBnLwRh-Dn ShBhLvRv-Dn SnBhLwRh-Tb ]
# 36 [SnBhLvRn-Ml SnBhLnRh-Tb SnBhLnRn-Dn ShBhLvRh-Gb ShBhLhRv-Dn SnBhLhRn-Tb
SnBhLhRv-Dn SnBhLnRv-Tb ShBnLhRv-Mr ShBnLvRh-Dn ShBhLvRv-Mr ShBhLvRn-Gb ShBhLnRv-
Dn ShBhLhRn-Gb ShBnLnRv-Mr ShBhLhRh-Gr SnBhLvRv-Dn ShBnLnRn-Gb ShBnLhRn-Gb
SnBnLnRv-Mr ShBnLvRn-Gb ShBhLnRh-Dn SnBnLvRn-Dn SnBnLnRn-Dn ShBhLnRn-Gb ShBnLvRv-
Mr ShBnLnRh-Gb SnBnLvRh-Ml SnBnLnRh-Dn SnBnLhRn-Dn SnBnLhRv-Dn SnBnLvRv-Ml
SnBnLhRh-Dn ShBnLhRh-Dn SnBhLvRh-Tb SnBhLhRh-Tb ]
# 21 [ShBhLhRv-Mr ShBnLnRw-Gb SnBhLhRw-Dn SnBhLvRw-Ml ShBnLhRw-Gb SnBhLnRw-Dn
SnBhLnRv-Tb ShBhLvRw-Gb ShBnLhRv-Mr ShBhLnRw-Gb ShBhLnRv-Mr SnBhLvRv-Ml SnBnLnRv-
Dn ShBnLvRw-Gb ShBnLvRv-Gb ShBnLnRv-Mr SnBnLvRv-Dn ShBhLvRv-Mr ShBhLhRw-Gb
SnBhLhRv-Tb SnBnLhRv-Mr ]
Experiment 6: Graph Analysis
Figure 4.24 below shows the fitness score of every fifth solution ranked low to high
within the gene pool in every generation leading up to the final 45th generation. This
graph reflects the changing nature of the gene pool throughout the evolutionary process.
167
Figure 4.24: Evolving Fitness Scores of Experiment 6
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.25: Generational Fitness for Experiment 6
(Y-axis: Fitness Measure, X-axis: Generation)
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
S1
S17
S33
0
1000
2000
3000
4000
5000
6000
7000
8000
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
168
Figure 4.26 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
maximum values and the ratios are plotted below. Note that not all solutions leading to a
goal are achieved through legal steps (yellow optimal but pink suboptimal). Note also
that in early generations, a solution can be comprised entirely of legal steps and yet not
achieve goal behavior (pink optimal but yellow suboptimal).
169
Figure 4.26: Scores of Three Components of Fitness for Experiment 6
(Y-axis: Coefficient of Optimality, X-axis: Generation)
4.9 Experiment 7: Midsize / Five-Action / Universal-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
progress and more steps will be required in the simulation to move all 9 parts to the dump
cell.
The agents in this experiment are not all governed by their own individual
controller, nor is this a ‘bookend’ approach. In this ‘universal’ approach, all agents are
governed by the same controller. Thus, there is only one controller to be evolved in this
0
0.25
0.5
0.75
1
1 21 41
(max-pgs)/max (ls/max) (cfg/max)
170
system and it will draw from the experiences of all agents within the system during the
evolutionary process.
Figure 4.27: Initial Configuration of System for Experiment 7
Experiment 7: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = False: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = False: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = False: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = False: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = "Universal"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
171
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 7: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 1 PGS= 800 LS= 711 CFG= 2199 SIM= 2910 --
2 S= 800 D= 0 PGS= 800 LS= 759 CFG= 2223 SIM= 2982 --
3 S= 800 D= 0 PGS= 800 LS= 799 CFG= 2223 SIM= 3022 --
4 S= 800 D= 0 PGS= 800 LS= 800 CFG= 2223 SIM= 3023 L-
5 S= 800 D= 1 PGS= 800 LS= 736 CFG= 2673 SIM= 3409 --
6 S= 800 D= 3 PGS= 800 LS= 788 CFG= 3513 SIM= 4301 --
7 S= 800 D= 3 PGS= 800 LS= 798 CFG= 3513 SIM= 4311 --
8 S= 800 D= 6 PGS= 800 LS= 746 CFG= 4383 SIM= 5129 --
9 S= 800 D= 5 PGS= 800 LS= 763 CFG= 4383 SIM= 5146 --
10 S= 800 D= 5 PGS= 800 LS= 792 CFG= 4701 SIM= 5493 --
11 S= 800 D= 9 PGS= 259 LS= 723 CFG= 6561 SIM= 7825 --
12 S= 800 D= 8 PGS= 800 LS= 800 CFG= 6075 SIM= 6875 L-
13 S= 800 D= 8 PGS= 800 LS= 782 CFG= 6561 SIM= 7343 --
14 S= 800 D= 9 PGS= 287 LS= 775 CFG= 6561 SIM= 7849 --
15 S= 800 D= 8 PGS= 800 LS= 798 CFG= 6561 SIM= 7359 --
16 S= 800 D= 9 PGS= 231 LS= 782 CFG= 6561 SIM= 7912 --
17 S= 800 D= 9 PGS= 239 LS= 798 CFG= 6561 SIM= 7920 --
18 S= 800 D= 9 PGS= 235 LS= 796 CFG= 6561 SIM= 7922 --
19 S= 800 D= 9 PGS= 211 LS= 800 CFG= 6561 SIM= 7950 LG
20 S= 800 D= 9 PGS= 211 LS= 800 CFG= 6561 SIM= 7950 LG
172
21 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
22 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
23 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
24 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
25 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
26 S= 800 D= 9 PGS= 199 LS= 800 CFG= 6561 SIM= 7962 LG
27 S= 800 D= 9 PGS= 195 LS= 800 CFG= 6561 SIM= 7966 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 7966 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 195 legal steps within the simulation using the final evolved rule-sets
shown below. 195 steps is one step shy of 49 cycles within the simulation. The four
agents each take a consecutive step to complete one cycle. Note how the fitness measure
allows for multi-criteria evolution to occur. At times the evolutionary process will lean
towards transferring more parts to the dump cell even if it uses more illegal steps to
accomplish this. Other times the evolutionary process will seek to make all steps legal at
the expense of goal progress. Over time, the effect is to get better at each objective and
finally to settle down into the optimal, legal solution.
Experiment 7: Final Results
G: 27 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 195 POSTGOALSTEPS= 605
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 7966 LG
An output listing below shows the trace for each of the 195 steps. It shows the
step action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
173
TRACE: ORIG 1Gb 2Dn 3Tb 4Mr 1Ml 2Ml 3Mr 4Gb 1Dn 2Tb 3Ml 4Ml 1Tb 2Mr 3Gb
4Tb 1Mr 2Gb 3Tb 4Mr 1Gb 2Tb 3Mr 4Gb 1Ml 2Gb 3Gb 4Dn 1Tb 2Tb 3Ml 4Ml 1Mr
2Gb 3Dn 4Tb 1Ml 2Ml 3Ml 4Mr 1Gb 2Dn 3Tb 4Gb 1Dn 2Tb 3Mr 4Ml 1Tb 2Mr 3Gb
4Dn 1Mr 2Gb 3Dn 4Dn 1Gb 2Dn 3Dn 4Dn 1Ml 2Ml 3Ml 4Ml 1Dn 2Dn 3Dn 4Tb 1Dn
2Dn 3Tb 4Mr 1Dn 2Tb 3Mr 4Mr 1Tb 2Mr 3Mr 4Gb 1Mr 2Mr 3Gb 4Dn 1Mr 2Gb 3Dn
4Dn 1Ml 2Ml 3Ml 4Ml 1Gb 2Dn 3Dn 4Tb 1Ml 2Ml 3Ml 4Mr 1Dn 2Dn 3Tb 4Gb 1Dn
2Tb 3Mr 4Ml 1Dn 2Mr 3Gb 4Dn 1Dn 2Ml 3Ml 4Ml 1Dn 2Dn 3Dn 4Tb 1Dn 2Dn 3Tb
4Mr 1Dn 2Dn 3Mr 4Mr 1Dn 2Mr 3Mr 4Gb 1Dn 2Mr 3Gb 4Dn 1Dn 2Ml 3Ml 4Ml 1Dn
2Gb 3Dn 4Tb
1Dn 2Ml 3Ml 4Mr 1Dn 2Dn 3Tb 4Gb 1Dn 2Dn 3Mr 4Ml 1Dn 2Dn 3Ml 4Ml 1Dn 2Dn
3Dn 4Tb 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Mr 4Mr 1Dn 2Dn 3Mr 4Gb 1Dn 2Dn 3Gb 4Dn
1Dn 2Dn 3Ml 4Ml 1Dn 2Dn 3Ml 4Tb 1Dn 2Dn 3Dn 4Mr 1Dn 2Dn 3Dn 4Gb 1Dn 2Dn
3Dn 4Ml 1Dn 2Dn 3Dn 4Ml 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
BENCH: 302110 312110 312110 312010 312010 312010 312010 312010 312011 312011 302011 302011 302011
202011 202011 202111 202101 202101 203101 203001 203001 213001 212001 212001 212002 212002 213002
213012 213012 113012 112012 112012 112012 112012 113012 113012 113002 113002 113002 113002 113002
213002 213002 212002 212003 212003 202003 202003 202003 102003 102003 102103 102103 102103 103103
103103 103103 113103 113103 113103 113103 113103 113103 113103 113103 113103 113103 113103 113003
113003 113003 112003 112003 112003 102003 102003 102003 002003 002003 002003 002004 002004 002004
174
002014 002014 002014 002114 002114 002114 002114 002114 002114 002114 012114 012114 012114 012104
012104 012104 012104 012104 012104 012104 011104 011105 011105 001105 001105 001105 001105 001105
001205 001205 001205 001205 001205 001205 001205 001205 001205 001105 001105 001105 000105 000105
000105 000105 000105 000105 000105 000105 000105 000106 000106 000106 000116 000116 000116 000116
000116 000116 000116 001116 001116 001106
001106 001106 001106 001106 001106 001106 000106 000107 000107 000107 000107 000107 000107 000107
000107 000107 000107 000107 000107 000007 000007 000007 000007 000007 000007 000007 000007 000007
000007 000007 000007 000008 000008 000008 000018 000018 000018 000018 000018 000018 000018 000018
000018 000008 000008 000008 000008 000008 000008 000008 000008 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
175
AGENT: 012340 012340 012340 012340 012304 102304 120304 120034 120034 120034 120034 120304 120340
120340 102340 102340 102340 012340 012340 012340 012304 012304 012304 012034 012034 102034 102034
102034 102034 102034 102034 102304 102340 012340 012340 012340 012340 102340 120340 123040 123004
123004 123004 123004 123004 123004 123004 120304 120340 120340 102340 102340 102340 012340 012340
012340 012340 012340 012340 012340 012340 102340 120340 123040 123400 123400 123400 123400 123400
123400 123400 123400 123040 123040 123040 120340 120304 120304 102304 102034 102034 012034 010234
010234 010234 001234 001234 001234 001234 010234 012034 012304 012340 012340 012340 012340 012340
102340 120340 123040 123004 123004 123004 123004 123004 123004 123004 120304 120340 120340 102340
102340 102340 102340 120340 123040 123400 123400 123400 123400 123400 123400 123400 123400 123040
123040 123040 120340 120304 120304 102304 102034 102034 102034 100234 100234 100234 100234 102034
102304 102340 102340 102340 102340 102340
102340 120340 123040 123004 123004 123004 123004 123004 123004 123004 120304 120340 120340 120340
123040 123400 123400 123400 123400 123400 123400 123400 123400 123040 123040 123040 120340 120304
120304 120304 120034 120034 120034 120034 120034 120034 120034 120034 120304 120340 120340 120340
123040 123040 123040 123040 123040 123004 123004 123004 123004 123004 123004 123004 123004 123040
123040 123040 123040 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
176
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400 123400
123400 123400
CARRY: 010010 000010 000010 000110 000101 000101 000101 000011 000010 000010 010010 010100 010100
110100 101100 101000 101010 011010 010010 010110 010101 000101 001101 001011 001010 001010 000010
000000 000000 100000 101000 101000 101000 011000 010000 010000 010010 100010 100010 100010 100001
000001 000001 001001 001000 001000 011000 010100 010100 110100 101100 101000 101000 011000 010000
010000 010000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000100
000100 000100 001100 001010 001010 011010 010110 010101 110101 101101 101011 101010 011010 010110
010100 010100 001100 001000 001000 001000 010000 010000 010000 010000 000000 000000 000000 000010
000010 000010 000010 000001 000001 000001 001001 001000 001000 011000 010100 010100 010100 001100
001000 001000 001000 010000 010000 010000 010000 010000 010000 010100 010100 010100 011100 011010
011010 011010 010110 010101 010101 001101 001011 001010 001010 000110 000100 000100 000100 001000
001000 001000 001000 000000 000000 000010
000010 000010 000010 000001 000001 000001 001001 001000 001000 001000 000100 000100 000100 000100
001000 001000 001000 001000 001000 001100 001100 001100 001100 001010 001010 001010 000110 000101
000101 000101 000011 000010 000010 000010 000000 000000 000000 000000 000000 000000 000000 000000
000000 000010 000010 000010 000010 000001 000001 000001 000001 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
177
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
Experiment 7: Evolved Rule-Sets
Below are shown the evolved rule-sets for the system. Since the universal controller plan
was used, a distinct rule-set for each agent was evolved based on the experiences of that
agent in the simulations. Each rule-set below is preceded by a number reflecting the
number of rules that were evolved within the rule-set. Each rule is of the format
‘C1C2C3C4-Action’ where a series of condition settings have an associated subscribed
action. Note that the total number of possible rules is equal to the total number of
possible condition states which in this problem is 64. The evolution of a reduced number
of rules is a significant improvement over trying to pre-determine all 64 rules for each
agent outside of an evolutionary learning process. Keep in mind also that for every
condition state there are nine possible actions. Note also that the disabling of side-to-side
taking and giving actions has forced the agents to rely on the more awkward and
laborious bench passing and cell shifting in order to accomplish part transfer in the
system. The rule-set below is a reduced set of rules necessary to elicit optimal
collaborative performance within the simulation. Operating the agents by this common
rule-set achieves the necessary inter-dependence that leads to collaborative performance.
The single controller was evolved in only 27 generations. This controller took 195
steps in the simulation to reach the collaborative goal. The number of rules evolved
for all controllers is 59 out of a possible 64. Thus some states were never and could
never be visited.
178
# 59 [ShBnLvRn-Gb ShBhLnRv-Mr SnBhLvRh-Ml SnBhLvRn-Ml SnBhLhRv-Tb ShBnLvRw-Gb
ShBhLvRh-Dn ShBhLhRh-Gb SnBhLvRv-Tb ShBhLhRv-Mr ShBnLvRv-Mr ShBnLhRw-Gb ShBhLvRn-
Ml ShBhLnRn-Gb ShBnLvRh-Gb SnBhLhRn-Dn SnBhLhRh-Tb SnBhLwRv-Tb ShBhLwRv-Mr
SnBhLvRw-Ml ShBnLnRv-Mr ShBnLnRw-Gb SnBhLwRh-Tb SnBnLvRv-Ml ShBnLhRv-Mr ShBhLnRh-
Gb SnBhLnRw-Dn SnBhLnRn-Dn SnBhLhRw-Dn SnBnLnRv-Dn SnBnLvRn-Ml ShBhLvRw-Gb
SnBnLhRv-Mr SnBnLvRh-Ml ShBnLhRh-Gb SnBhLwRn-Dn ShBhLnRw-Gb SnBhLnRh-Tb ShBnLnRh-
Dn ShBhLwRh-Gb ShBhLhRw-Gb SnBnLnRn-Dn SnBnLnRh-Dn SnBhLnRv-Tb ShBnLwRn-Dn
ShBnLwRv-Mr ShBhLwRn-Gb SnBnLhRn-Dn ShBhLvRv-Gb SnBnLwRv-Dn SnBnLwRn-Dn
SnBnLwRh-Dn SnBnLhRw-Tr ShBnLwRh-Gb SnBnLhRh-Dn ShBnLhRn-Gb ShBhLhRn-Gb ShBnLnRn-
Dn SnBnLvRw-Tr ]
Experiment 7: Graph Analysis
Figure 4.28 below shows the fitness score of every fifth solution ranked low to high
within the genepool in every generation leading up to the final 27th generation. This graph
reflects the changing nature of the genepool throughout the evolutionary process.
Figure 4.28: Evolving Fitness Scores of Experiment 7
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
1 7
13
19
25
31
37
43
49
55
61
67
73
79
85
91
97
S1
S16
0
1000
2000
3000
4000
5000
6000
7000
8000
179
Figure 4.29 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 27.
Figure 4.29: Generational Fitness for Experiment 7
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.30 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 3 5 7 9 11 13 15 17 19 21 23 25 27
180
maximum values and the ratios are plotted below. Note that not all solutions leading to a
goal are achieved through legal steps (yellow optimal but pink suboptimal). Note also
that in early generations, a solution can be comprised entirely of legal steps and yet not
achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.30: Scores of Three Components of Fitness for Experiment 7
(Y-axis: Coefficient of Optimality, X-axis: Generation)
4.10 Experiment 8: Midsize / Five-Action / Divided-Controlled
The experiment was performed on a midsize problem with 6 cells, 4 agents and a total of
9 parts in the system. The other system parameters are given in the settings section
below. This experiment has the Tr, Tl, Gr and Gl actions disabled, thus the agents can
only collaboratively transport parts to the dump cell by using the Ml, Mr, Tl, Tb and Dn
actions. This limitation makes it much harder for the collaborative agents to show
0
0.25
0.5
0.75
1
1 21
(max-pgs)/max (ls/max) (cfg/max)
181
progress and more steps will be required in the simulation to move all 9 parts to the dump
cell.
The agents in this experiment are not all governed by their own individual controller, nor
is this a ‘bookend’ approach. In this ‘Divided’ approach, the first two agents are governed
by the one controller while the last two agents in the system are governed by a second
controller.
Figure 4.31: Initial Configuration of System for Experiment 8
Experiment 8: Settings
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = False: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = False: Action(7).Name = "Tr = Take part from the carrier in the right cell"
Action(8).Enabled = False: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = False: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
CellCount = 6
AgentCount = 4
MaxDumpCount = 9
StateCount = 64
ControllerPlan = "Divided"
AgentOneSenseRightFaulty = False
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
GenerationCount = 500
182
SolutionCount = 500
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
RouletteCrossParentFraction = 1
RouletteCrossParentMax = Int(RouletteCrossParentFraction * SolutionCount)
OutCrossParentFraction = 0.25
OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1
RandomCrossParentMax = Int(RandomCrossParentFraction * SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
Experiment 8: Generational Progress
G = Generation Number
S = Number of Steps to be performed (= # Agents * # Cycles)
D = Number of Parts moved to Dump Cell
PGS = Pre-Goal Steps achieved
LS = Legal Steps achieved out of S Steps
CFG: A weighted sum of the contents of the bench and carry-status of each agent
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
SIM: The true fitness measure of the system at the end of the simulation (maximization desired)
SimScore = ConfigScore + PostGoalSteps + LegalStepCount
“L” - All Steps Legal “G” - All Parts Transferred
1 S= 800 D= 1 PGS= 800 LS= 752 CFG= 1773 SIM= 2525 --
2 S= 800 D= 2 PGS= 800 LS= 790 CFG= 1827 SIM= 2617 --
3 S= 800 D= 2 PGS= 800 LS= 794 CFG= 1821 SIM= 2615 --
4 S= 800 D= 2 PGS= 800 LS= 779 CFG= 1833 SIM= 2612 --
5 S= 800 D= 1 PGS= 800 LS= 769 CFG= 1875 SIM= 2644 --
6 S= 800 D= 1 PGS= 800 LS= 766 CFG= 2199 SIM= 2965 --
7 S= 800 D= 3 PGS= 800 LS= 779 CFG= 2241 SIM= 3020 --
8 S= 800 D= 2 PGS= 800 LS= 787 CFG= 2451 SIM= 3238 --
9 S= 800 D= 2 PGS= 800 LS= 796 CFG= 2451 SIM= 3247 --
10 S= 800 D= 3 PGS= 800 LS= 776 CFG= 2685 SIM= 3461 --
11 S= 800 D= 3 PGS= 800 LS= 797 CFG= 2685 SIM= 3482 --
183
12 S= 800 D= 3 PGS= 800 LS= 798 CFG= 2577 SIM= 3375 --
13 S= 800 D= 3 PGS= 800 LS= 762 CFG= 2961 SIM= 3723 --
14 S= 800 D= 3 PGS= 800 LS= 794 CFG= 2961 SIM= 3755 --
15 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
16 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
17 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
18 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
19 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
20 S= 800 D= 8 PGS= 800 LS= 791 CFG= 6075 SIM= 6866 --
21 S= 800 D= 8 PGS= 800 LS= 792 CFG= 6075 SIM= 6867 --
22 S= 800 D= 8 PGS= 800 LS= 796 CFG= 6075 SIM= 6871 --
23 S= 800 D= 6 PGS= 800 LS= 800 CFG= 4707 SIM= 5507 L-
24 S= 800 D= 7 PGS= 800 LS= 783 CFG= 5115 SIM= 5898 --
25 S= 800 D= 9 PGS= 299 LS= 748 CFG= 6561 SIM= 7810 --
26 S= 800 D= 9 PGS= 279 LS= 796 CFG= 6561 SIM= 7878 --
27 S= 800 D= 9 PGS= 235 LS= 800 CFG= 6561 SIM= 7926 LG
28 S= 800 D= 9 PGS= 235 LS= 800 CFG= 6561 SIM= 7926 LG
29 S= 800 D= 9 PGS= 235 LS= 800 CFG= 6561 SIM= 7926 LG
30 S= 800 D= 9 PGS= 235 LS= 800 CFG= 6561 SIM= 7926 LG
31 S= 800 D= 9 PGS= 235 LS= 800 CFG= 6561 SIM= 7926 LG
32 S= 800 D= 9 PGS= 231 LS= 798 CFG= 6561 SIM= 7928 --
33 S= 800 D= 9 PGS= 231 LS= 798 CFG= 6561 SIM= 7928 --
34 S= 800 D= 9 PGS= 223 LS= 799 CFG= 6561 SIM= 7937 --
35 S= 800 D= 9 PGS= 223 LS= 800 CFG= 6561 SIM= 7938 LG
36 S= 800 D= 9 PGS= 191 LS= 799 CFG= 6561 SIM= 7969 --
37 S= 800 D= 9 PGS= 191 LS= 799 CFG= 6561 SIM= 7969 --
38 S= 800 D= 9 PGS= 191 LS= 800 CFG= 6561 SIM= 7970 LG
SIMULATION STOPPED AFTER 100 MORE STATIC GENERATIONS
The method found an optimal solution score of 7970 signifying that the
collaborative agents successfully transferred all 9 parts to the dump cell. This goal was
accomplished in 191 legal steps within the simulation using the final evolved rule-sets
shown below. 191 steps is one step shy of 48 cycles within the simulation. The four
agents each take a consecutive step to complete one cycle. Note how the fitness measure
allows for multi-criteria evolution to occur. At times the evolutionary process will lean
towards transferring more parts to the dump cell even if it uses more illegal steps to
accomplish this. Other times the evolutionary process will seek to make all steps legal at
the expense of goal progress. Over time, the effect is to get better at each objective and
finally to settle down into the optimal, legal solution.
184
Experiment 8: Final Results
G: 38 SSTEPS= 800 DUMP= 9 PREGOALSTEPS= 191 POSTGOALSTEPS= 609
LEGALSTEPS= 800 CONFIG= 6561 SIMSCORE= 7970 LG
An output listing below shows the trace for each of the 191 steps. It shows the
step action, bench status, agent position status and agent carry status at each step. It is
essentially a simulation trace for the best solution in the last gene pool of the evolutionary
process.
TRACE: ORIG 1Gb 2Dn 3Dn 4Mr 1Ml 2Ml 3Ml 4Dn 1Tb 2Tb 3Tb 4Dn 1Gb 2Dn 3Mr
4Dn 1Tb 2Mr 3Mr 4Dn 1Mr 2Mr 3Dn 4Dn 1Dn 2Gb 3Gb 4Gb 1Dn 2Ml 3Ml 4Ml 1Gb
2Dn 3Dn 4Tb 1Ml 2Ml 3Tb 4Mr 1Tb 2Tb 3Mr 4Dn 1Gb 2Mr 3Gb 4Gb 1Tb 2Dn 3Ml
4Ml 1Mr 2Gb 3Dn 4Tb 1Gb 2Dn 3Dn 4Mr 1Ml 2Ml 3Ml 4Gb 1Tb 2Tb 3Tb 4Ml 1Gb
2Dn 3Mr 4Tb 1Tb 2Mr 3Dn 4Mr 1Mr 2Dn 3Mr 4Dn 1Gb 2Mr 3Dn 4Dn 1Mr 2Gb 3Gb
4Gb 1Ml 2Ml 3Ml 4Ml 1Ml 2Ml 3Ml 4Ml 1Dn 2Dn 3Dn 4Tb 1Dn 2Dn 3Dn 4Mr 1Dn
2Dn 3Tb 4Mr 1Dn 2Tb 3Mr 4Gb 1Dn 2Mr 3Mr 4Dn 1Mr 2Mr 3Gb 4Dn 1Dn 2Ml 3Ml
4Ml 1Dn 2Gb 3Dn 4Tb 1Ml 2Ml 3Tb 4Mr 1Dn 2Dn 3Mr 4Dn 1Dn 2Dn 3Gb 4Gb 1Dn
2Dn 3Ml 4Ml
1Dn 2Dn 3Dn 4Tb 1Dn 2Dn 3Ml 4Mr 1Dn 2Dn 3Tb 4Gb 1Dn 2Dn 3Mr 4Ml 1Dn 2Dn
3Gb 4Tb 1Dn 2Dn 3Tb 4Mr 1Dn 2Dn 3Mr 4Dn 1Dn 2Dn 3Gb 4Gb 1Dn 2Dn 3Ml 4Ml
1Dn 2Dn 3Dn 4Tb 1Dn 2Dn 3Ml 4Mr 1Dn 2Dn 3Mr 4Gb 1Dn 2Dn 3Mr 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn
3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
185
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn
2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn
4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn 1Dn 2Dn 3Dn 4Dn
BENCH: 302110 312110 312110 312110 312110 312110 312110 312110 312110 212110 202110 201110 201110
301110 301110 301110 301110 201110 201110 201110 201110 201110 201110 201110 201110 201110 201210
201220 201221 201221 201221 201221 201221 211221 211221 211221 211211 211211 211211 211111 211111
111111 101111 101111 101111 201111 201111 201121 201122 101122 101122 101122 101122 101122 102122
102122 102112 112112 112112 112112 112112 112112 112112 112112 112113 012113 002113 001113 001113
101113 101113 101113 101103 001103 001103 001103 001103 001103 001103 001103 001103 011103 011103
011103 011103 011103 011203 011213 011214 011214 011214 011214 011214 011214 011214 011214 011214
011214 011214 011214 011114 011114 011114 011114 011114 011114 011114 010114 010114 010114 000114
000114 000115 000115 000115 000115 000115 000115 000115 000125 000125 000125 000125 000125 000125
000125 001125 001125 001115 001115 001115 001015 001015 001015 001015 001015 001015 001015 001015
001025 001026 001026 001026 001026 001026
001026 001026 001026 001016 001016 001016 001016 001016 001016 001016 000016 000017 000017 000017
000017 000017 000017 000017 000117 000107 000107 000107 000007 000007 000007 000007 000007 000007
000007 000007 000017 000018 000018 000018 000018 000018 000018 000018 000018 000008 000008 000008
000008 000008 000008 000008 000008 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
186
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009 000009
000009 000009
AGENT: 012340 012340 012340 012340 012304 102304 120304 123004 123004 123004 123004 123004 123004
123004 123004 120304 120304 120304 102304 102034 102034 012034 010234 010234 010234 010234 010234
010234 010234 010234 012034 012304 012340 012340 012340 012340 012340 102340 120340 120340 120304
120304 120304 120034 120034 120034 102034 102034 102034 102034 102034 102304 102340 012340 012340
012340 012340 012340 012340 012340 012304 102304 120304 123004 123004 123004 123004 123004 123040
123040 123040 120340 120340 120340 102340 102340 102304 012304 012304 012034 012034 012034 010234
010234 010234 001234 001234 001234 001234 010234 012034 012304 012340 102340 120340 123040 123400
123400 123400 123400 123400 123400 123400 123400 123040 123040 123040 123040 123004 123004 123004
120304 120304 120304 102304 102034 102034 012034 010234 010234 010234 010234 012034 012304 012340
012340 012340 012340 012340 102340 120340 120340 120304 120304 120304 120034 120034 120034 120034
120034 120034 120034 120034 120304 120340
120340 120340 120340 120340 120340 120340 123040 123004 123004 123004 123004 123004 123004 123004
120304 120340 120340 120340 120340 120340 120340 120340 120340 120304 120304 120304 120034 120034
120034 120034 120034 120034 120034 120034 120304 120340 120340 120340 120340 120340 120340 120340
123040 123004 123004 123004 120304 120304 120304 120304 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
187
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034 120034
120034 120034
CARRY: 010010 000010 000010 000010 000001 000001 000001 000001 000001 100001 110001 111001 111001
011001 011001 010101 010101 110101 101101 101011 101011 011011 010111 010111 010111 010111 010011
010001 010000 010000 010000 010000 010000 000000 000000 000000 000010 000010 000010 000110 000101
100101 110101 110011 110011 010011 001011 001001 001000 101000 101000 101000 101000 011000 010000
010000 010010 000010 000010 000010 000001 000001 000001 000001 000000 100000 110000 111000 111000
011000 011000 010100 010110 110110 101110 101110 101101 011101 011101 011011 011011 001011 000111
000111 000111 000111 000011 000001 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000100 000100 000100 000100 000010 000010 000010 001010 001001 001001 011001
010101 010100 010100 001100 001010 001010 001010 000110 000100 000100 000100 001000 001000 001000
001000 000000 000000 000010 000010 000010 000110 000101 000101 000101 000011 000011 000011 000011
000001 000000 000000 000000 000000 000000
000000 000000 000000 000010 000010 000010 000010 000001 000001 000001 001001 001000 001000 001000
000100 000100 000100 000100 000000 000010 000010 000010 000110 000101 000101 000101 000011 000011
000011 000011 000001 000000 000000 000000 000000 000000 000000 000000 000000 000010 000010 000010
000010 000001 000001 000001 000001 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
188
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
000000 000000
Experiment 8: Evolved Rule-Sets
Below are shown the evolved rule-sets for the system. Since the Divided controller plan
was used, two distinct rule-sets were evolved, one for the first two agents and one for the
last two agents. Each rule-set below is preceded by a number reflecting the number of
rules that were evolved within the rule-set. Each rule is of the format ‘C1C2C3C4-
Action’ where a series of condition settings have an associated subscribed action. Note
that the total number of possible rules is equal to the total number of possible condition
states which in this problem is 64. The evolution of a reduced number of rules is a
significant improvement over trying to pre-determine all 64 rules for each agent outside
of an evolutionary learning process. Keep in mind also that for every condition state there
are nine possible actions. Note also that the disabling of side-to-side taking and giving
actions has forced the agents to rely on the more awkward and laborious bench passing
189
and cell shifting in order to accomplish part transfer in the system. The rule-sets below is
a reduced set of rules necessary to elicit optimal collaborative performance within the
simulation. Operating the agents by this common rule-set achieves the necessary inter-
dependence that leads to collaborative performance. Single controller was evolved in
only 38 generations. This controller took 191 steps in the simulation to reach the
collaborative goal. The number of rules evolved for each controller is 47 and 44
respectively for the two controllers out of a possible 64. Thus some states were never and
could never be visited.
# 47 [ShBnLvRn-Gb SnBhLhRn-Tb ShBhLwRv-Mr ShBnLvRh-Gb ShBhLvRn-Ml SnBhLhRh-Tb
SnBhLhRv-Tb ShBhLhRv-Mr ShBnLvRv-Dn ShBhLvRv-Dn ShBhLvRh-Gb SnBhLnRn-Dn SnBhLvRh-
Tb ShBhLhRn-Gb SnBhLvRv-Mr SnBhLnRv-Dn SnBhLwRv-Tb ShBhLhRh-Dn SnBhLwRn-Tb
ShBhLnRv-Mr SnBhLnRh-Tb ShBnLhRv-Mr SnBnLvRh-Dn ShBhLnRn-Gb ShBhLnRh-Gb ShBnLwRv-
Mr ShBhLwRh-Gb SnBhLvRn-Ml ShBnLnRv-Mr ShBnLhRh-Gb ShBnLnRh-Dn SnBnLvRv-Dn
SnBnLwRn-Dn SnBhLwRh-Tb ShBnLhRn-Dn SnBnLhRv-Mr SnBnLvRn-Ml ShBnLnRn-Gb SnBnLnRv-
Dn SnBnLwRv-Mr ShBnLwRn-Dn SnBnLhRn-Dn SnBnLwRh-Dn SnBnLnRn-Dn SnBnLhRh-Dn
ShBnLwRh-Gb SnBnLnRh-Dn ]
# 44 [SnBhLvRh-Tb ShBnLvRw-Dn ShBhLhRv-Mr ShBnLhRv-Mr SnBhLvRn-Ml SnBhLvRw-Ml
SnBhLnRh-Dn ShBnLnRv-Mr ShBhLnRv-Mr SnBhLnRn-Dn SnBhLnRv-Tb SnBhLvRv-Ml ShBnLvRv-
Mr ShBnLnRw-Gb SnBhLhRn-Dn ShBhLvRn-Gb SnBhLhRw-Dn ShBhLhRh-Dn SnBhLnRw-Dn
ShBnLhRh-Dn ShBnLnRn-Gb ShBnLvRn-Gb ShBhLhRw-Dn ShBhLnRw-Gb SnBnLnRv-Mr SnBnLvRv-
Mr SnBnLhRv-Mr ShBnLhRn-Dn ShBnLvRh-Gb ShBhLhRn-Gb ShBhLvRv-Mr SnBnLvRn-Dn
SnBnLvRh-Ml SnBhLhRh-Dn ShBnLhRw-Dn SnBnLnRn-Dn ShBhLvRh-Gb ShBhLnRn-Dn ShBhLvRw-
Gb ShBnLnRh-Gb ShBhLnRh-Gb SnBnLhRn-Dn SnBhLhRv-Tb SnBnLnRh-Dn ]
Experiment 8: Graph Analysis
Figure 4.32 below shows the fitness score of every fifth solution ranked low to high
within the gene pool in every generation leading up to the final 38th generation. This
graph reflects the changing nature of the gene pool throughout the evolutionary process.
190
Figure 4.32: Evolving Fitness Scores of Experiment 8
(Vertical Y-axis: Fitness, Horiz. X-axis: Generation, Inward Z-axis: Solution Index)
Figure 4.33 below reflects the fitness measure of the best solution in each gene
pool from generation 1 to generation 38.
1 7
13
19
25
31
37
43
49
55
61
67
73
79
85
91
97
S1
S17
S33
0
1000
2000
3000
4000
5000
6000
7000
8000
191
Figure 4.33: Generational Fitness for Experiment 8
(Y-axis: Fitness Measure, X-axis: Generation)
Figure 4.34 below reflects the above fitness measure broken down in to its three
components. The pre-goal steps (pgs) is the number of simulation steps before the system
successfully achieves (and maintains) its goal state of all system parts transferred to the
dump cell. The blue line denotes the maximum number of steps in the simulation (800)
minus the pre-goal steps. It is desired to maximize this quantity. Similarly maximized is
the number of legal steps out of a possible 800 (ls) as denoted by the pink line. The
solution is not optimal unless all steps taken within the simulation do not prompt a
failure. The third component is the configscore (cfg) which for this problem is maximally
6561, a weighted value representing all parts in the system transferred to the dump cell.
This value is denoted by the yellow line. These three values are divided by their
maximum values and the ratios are plotted below. Note that not all solutions leading to a
goal are achieved through legal steps (yellow optimal but pink suboptimal). Note also
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35
192
that in early generations, a solution can be comprised entirely of legal steps and yet not
achieve goal behavior (pink optimal but yellow suboptimal).
Figure 4.34: Scores of Three Components of Fitness for Experiment 8
(Y-axis: Coefficient of Optimality, X-axis: Generation)
4.11 Experimentation Results
Many more experiments could have been performed given the program that was written.
These experiments include looking at the effect of varying controller designations, initial
system configurations, controller seeding, sensor failure introduction, genetic process
parameters and methods, simulation parameters and methods, fitness functions, etc. The
method could be applied to a larger problem such as an expanded grid space or with two
or three agent group types each with their own set of sensor and action capabilities. For
the moment, a discussion below will compare results of the 9-action vs. the 5-action
experiments for the different controller plan designations.
0
0.25
0.5
0.75
1
1 21
(max-pgs)/max (ls/max) (cfg/max)
193
The evolutionary method devised was able to successfully evolve rule-sets which
govern the behavior of agents in a simulation of the midsize AGV problem system. The
rule-sets successfully achieve collaborative behavior even though each agent in the
system had a limited, localized knowledge of its environment during the evolutionary
process. The individual, bookend, divided and universal controller designations resulted
in 4, 3, 2 and 1 rule-set(s) accordingly for the 4 agents in the system.
Nine-Action Experiments: All Actions Enabled
The experiments were run for the problem with all nine actions enabled. The rule-sets as
detailed in the above sections demonstrate that a strategy of passing parts was adopted
when all nine actions were enabled.
The individual controller plan evolved 24 rules for the leftmost agent and 24 for
the rightmost agent. The rule-sets for these two types of agents differ but mostly with
regards to left- or righthandedness of the conditional states. The middle two agents both
yielded evolved rule-sets each containing 36 rules. This, again, does not indicate the rule-
sets are identical but rather indicates the logic involved is comparable for both types of
agents.
The bookends approach had the middle two agents influencing the evolution of
the second controller and they in turn were ultimately governed by this controller. Note
that the central rule-set needed only 36 rules to control both agents B and C. This is the
same number of rules needed to govern both individually under the individual controller
plan. This is a reasonable result given that the functionality of agents B and C are
principally the same within the system. They are both denied experiencing a wall as they
194
cannot pass the two agents on either end of the corridor. They both pass to and from the
bench and to other agents in a similar fashion. This result suggests the appropriateness of
combining agents B and C into the same agent group so that their behavior can be
governed by the same set of rules.
The divided plan convolved the control of agents A and B together as well as the
control of agents C and D. The number of rules in each rule-set increased to 47 since it
had to accommodate the logic of both the 24-rule individual rule-set of agent A and the
36-rule individual rule-set of agent B (though some common rules likely applied to both).
The universal plan grouped all agents into the same agent group and resulted in a single
controller with 57 rules out of a possible 64. There were 64-57=7 conditional states that
never occur in the operation of the system thus these rules were never evolved during the
evolutionary learning process. This demonstrates how the rule-set which evolves for a
given controller is always compact in its sufficiency.
Note that the number of simulation steps necessary to accomplish goal behavior is
55 in the case of the nine-action problem for the first three controller designations. The
universal plan was only able to find a solution in 59 steps after 73 generations. Use of a
standard genetic algorithm string encoding for this problem would have entailed
thousands if not millions of generations to yield a similarly effective set of controller
mechanisms. The evolutionary learning strategy drastically reduced the number of
generations necessary to find an optimal solution to the problem by concentrating on the
evolution on reduced rule-sets in a simulation-learning scenario.
195
Table 4.1 Midsize Problem Results: Nine Actions vs. Five Actions
Five-Action Experiments: Agent Passing Actions Disabled
The results of the method as applied to the five-action problem are given in above
experiment sections as well as summarized in the Table 4.1 above. The five-action
problem is identical to the nine-action problem except for the passing actions between
agents having been disabled. The nine-action problem evolved a strategy that involved
taking parts from the bench and moving or passing them down the line of agents
whenever possible. The collaborative rule-sets evolved for this problem were able to find
an effective and compact rule-set in 55 simulation steps. In the five-action system, the
agents do not have the benefit of passing between each other so an alternative strategy
must be evolved to transfer all parts down the line towards the dump cell. This strategy
must involve removing a part from the bench, carrying the part into open cells to the
196
right of the agent, redepositing the part on the bench, then moving back to the left to
allow another agent to come in from the right to acquire the part. This process involves
many more steps than when interagent passing was allowed. One would expect the goal
to be reached in far more simulation steps than the 55 steps required by the nine-action
problem.
As shown above in Table 4.1, though the number of rules evolved in the rule-set
is roughly the same as in the nine-action experiments, the five-action experiments do
indeed take more steps in the simulation to reach their goal. The individual controller
designation plan achieves a goal state in 183 steps after 196 generations. As the number
of controllers decreases, the number of generations required also decreases. Bookends
designation with 3 controllers finds the goal in 179 steps after 45 generations. The
Divided plan with 2 controllers achieves the goal in 191 steps in 36 generations. The
Universal plan with one controller to rule all agents achieves the goal in 195 steps after
27 generations. What is notable is that with all 9 actions enabled in the first set of
experiments, rule-sets were evolved which allow the agents to find the goal in roughly 55
steps, whereas with only 5 actions enabled the evolved rule-sets take nearly four times as
many simulation steps to achieve collaborative goal behavior. It should be noted that
these experiments were run once for each controller designation. Multiple runs would
yield slightly different solutions with slightly different rule-sets. However, the general
strategies differentiating the nine-enabled from the five-enabled problems would still be
reflected in the results.
Experiments such as this can demonstrate how much a system relies upon a
particular behavior in order to achieve goal behavior. The most efficient subset of atomic
197
behaviors may be determined through this form of experimentation. By performing
additional experiments, it may be possible with this method to optimize the
collaborative goal achievement of a multi-agent system with regards to agent class
designation, agent behavior selection and other parameters.
198
Chapter Five: Generalizability & Scalability
In the course of this dissertation, the development of a method was documented and it
was applied to a sample problem of multiple collaborating AGVs within a small
manufacturing cell. Additional discussion is necessary to reflect on which aspects of the
method are generalizable and scalable to more complex problems and which aspects are
grounded to the specific application problem and need to be altered if the application
changes.
Within the representation objective, the probabilistic finite state automata, which
models the intelligent controller of an agent, was encoded as a series of action probability
vectors associated with each state transition. Only those rules encountered within the
simulation runs were required to be stored thus achieving compactness of the rules to be
evolved. For larger application problems, there are more conditions and actions inherent
to the system. This necessarily makes the complexity and size of the associated automata
larger. This translates to more potential states encountered within the simulation and
therefore more potential rules stored. But this is exactly where the method is scalable
because it still only needs to store rules associated with those states visited. Deriving the
solution by inspection, for example, would likely require a determination of action for
every combination of conditions in the system which quickly becomes exhaustive as the
problems become bigger. One way in which the rule format developed is not as easily
generalizable is when you are dealing with systems which are not engaging in simple
atomic actions. Complex systems with layered behavior architectures deal with more
involved procedures to be enacted based on conditional states as opposed to the simpler
199
actions made as shown in development of this method. But it may be possible to still use
this method for larger problems. For example, instead of a rule dictating a simple action it
may dictate a function call to be made. This is imagined as part of the future work to be
done using this method.
In the course of development of this method, a simulation environment was
required to test the performance of the pool of controller solutions. Because the
simulation is a feature nested within each iteration of the evolutionary process, it would
have been difficult to use pre-existing, more sophisticated simulation software. This is
because there was a need to perform reinforcement learning of the agents within the
simulation and to pass performance measures of the agents to the evolutionary process
which is wrapped around it. The need to control and integrate these features of the
method necessitated that it all be written in one program for the purposes of this research.
For larger problems, it would be difficult to write such a program. The more complex
features of professional simulation software would be preferred to visualize the behavior
of the agents within the environment and to provide performance statistics. It still leaves
the problem of needing reinforcement learning as part of the simulation. Perhaps with the
growing interest in swarm applications, simulation packages will start to feature
probabilistic features as shown in this method and may even make themselves more
easily integrated with wraparound evolutionary learning capabilities. The use of
probabilistic rules with reinforcement learning is not ground to the particular application
problem of this research. But the simulation software would be need to be more
sophisticated and would need to be part of a more encompassing evolutionary tool for
development of intelligent controllers for multi-agent systems.
200
The evolutionary process and its parameters are most certainly scalable and
generalizable to larger problems. As long as the pool of controller solutions are cast in the
same format of nested probabilistic vectors, this method can be applied. One of the nicer
features of the method is the enhanced use of genetic operators to maintain a disruptive
gene pool of solutions and to encourage a fuzzy progression towards optimality so as to
avoid local optima. This approach should be applicable and effective to larger problems
as well.
Of course, there are other parameters and functions that are required to be tailored
to every new application. The conditions and actions of the system must be determined
from the outset and this will affect the length of the controller rules but not necessarily
how it functions within the method. The performance measure functions are used within
the simulation to determine how well the agents accomplished their individual and global
tasks. These performance measures are not generalizable and must be altered given the
different collaborative tasks associated with the problem. However, tailoring performance
measures to larger problems isn’t necessarily something which will make the method
unusable, it will merely take longer time.
In the results section, numerous experiments were done to evolve the intelligent
control rules in the presence of a sensor fault or with loss of agent functionality. Other
experiments were done to determine what the best allocation of controller types was for a
heterogeneous agent system. These types of experiments could be performed with other
applications as well. As shown in the experiments done, the use of multiple controller
types for different agents is easily accommodated by this method.
201
Chapter Six: Uniqueness & Conclusions
The method developed in the course of this research was demonstrated through its
application to a scenario of a series of AGVs collaborating together in a manufacturing
cell. It was shown to successfully evolve intelligent control rules for the governance of
behavior in the system. The method was then utilized to run numerous experiments where
the functionality of the agents or its sensors was changed, or the designation of controller
logic was varied amongst the agents. Running these experiments provided insight into
how behavior of the system changes when the functionality of an agent is altered or when
the sharing designation of controller logic is varied. These experiments show differences
in the number of steps and the number of generations required to find the optimal
solutions under the given circumstances. In this particular problem scenario, it was found
that using ‘bookend’ controller designation with all nine agent actions enabled is the most
efficient allocation. This makes sense as the functionality of agents on either end of the
work cell are similar and it is reasonable they are governed by the same controller and
benefit from each other’s experiences during the simulation training part of the method.
This type of experiment demonstrates the usefulness of the method as a tool to optimize
the configuration of a multi-agent system.
The research area of evolutionary learning techniques for the intelligent control of
multi-agent systems is still an evolving field. The imagined applications far exceed the
current technical capability of this research area. Typically, control strategies are
expressed as a series of complex interacting finite state automata. Programs explicitly
202
code all of the behavioral states within the automata and the necessary conditions which
dictate agent actions which accomplish the state to state transitions. This programming
can only be performed if the controller automata model is known beforehand, and even
then, the process to properly model an IC program is labor intensive and ultimately
inflexible for future adaptation. Simply put, a new approach which allows for automata
code to evolve on its own to accommodate the complex and often unforeseeable aspects
of an autonomous multi-agent system is in dire need. Additionally, such a code would
ideally be able to adapt on its own to changing situational factors and respond by
synthesizing new behavioral patterns. For example, when an evolved controller code is
implemented and it encounters a situation that is heretofore unknown, the agent could
enter an exploratory mode in which it attempts to problem-solve by engaging in trial
experimentation with the elemental actions available to it. Ideally, a great deal of this
unforeseeable learning could take place in a simulation facility which finetunes the
evolutionary intelligent controller. In this fashion, these autonomous agents could
become truly autonomous, alleviating themselves of the age-old problem of a
compendium of complex human-initiated rules that crumbles under its own weight
rendering itself obsolete. The key is to provide a simulation-based evolutionary learning
intelligent controller which can learn and adapt autonomously.
The method developed in this dissertation is unique in a number of ways. The
encoding of the state transition rules of a probabilistic finite state automaton as a
compactly expanding series of probabilistic vectors is novel. The use of more genetic
operators than is customary is also unique to this method. Both aspects point to an effort
to create a fuzzy and disruptive evolutionary technique to avoid local optima while
203
successfully accomplishing collaborative multi-agent behavior. The probabilistic solution
vector format used also was done with an eye towards the need for multi-agent systems to
continue to adapt when deployed in remote, autonomous, dynamic environments. The use
of reinforcement learning as well as the maintaining of a diverse gene pool may allow for
controller solutions to migrate away from well-learned behaviors towards new ones if
changes in the environment or the system require adaptation.
The specific problem studied in this research may be very simple, but in theory it
can be scaled up to address any problem that can be modeled in automata form (see
Chapter 5). The novel approaches to the evolutionary heuristic devised in this research, as
described in the report, are a step towards the future development of self-learning and
self-adapting intelligent controllers for use in numerous collaborative autonomous multi-
agent system applications.
204
Chapter Seven: Future Work
As discussed above, the program and method developed could serve as the basis for
many other experiments. There are many directions that this research could take. The
experiments could be repeated for different size AGV-corridor problems with different
initial configurations. Experiments could be conducted with respect to the variation of
genetic, simulation and fitness parameters. Alternative controller designations could also
be tested. The program also allows for a sensor failure to be implemented in an agent.
Preliminary results indicate this failure does not impede evolutionary progress towards
controller development since this particular evolutionary method utilizes repeated,
exhaustive exposure to conditional states within the myriad simulation learning phases of
the genetic process. Sensor failure would, however, figure into the performance of the
system once the controller is evolved. Other experiments could test the effects of seeding
the controllers with advanced knowledge. The evolutionary learning method that was
devised could also allow for flexible adaptation of a controller rule-set to new conditions.
This is because the use of probabilistic vectors to encode the transitional rules can be
evolved towards new adaptive solutions once deployed in a remote or dynamic
environment. This could serve as an ideal testbed for experiments involving a set of
controllers re-adapting to changing environmental circumstances which is of great
interest in the burgeoning field of intelligent control for swarm technologies. Another
future direction would be to study the method in a shopfloor with real-time information
from Internet-of-Things (IOT) enabled AGVs and Machines.
205
APPENDIX: Main Program Code
'**************************************************************************************
'MARC LATORELLA PENN STATE UNIVERSITY DEPT. OF INDUSTRIAL ENGINEERING
'**************************************************************************************
Public Type ConditionType 'System Conditions each with a number of choices
Name As String * 15
ChoiceCount As Integer
ChoiceName(10) As String * 20
ChoiceID(10) As String * 2
End Type
Public Type ActionType 'System Conditions each with a number of choices
Name As String * 15
ID As String * 2
Enabled As Boolean
End Type
Public InitBenchString As String 'number of parts in each bench cell
Public InitAgentString As String 'cell location of each agent
Public InitCarryString As String 'number of parts held by each agent
Public InitConfigScore As Integer
Public MaxConfigScore As Integer
Public InitActionHistory As String
Public InitBenchHistory As String
Public InitAgentHistory As String
Public InitCarryHistory As String
Public BenchString As String 'number of parts in each bench cell
Public AgentString As String 'cell location of each agent
Public CarryString As String 'number of parts held by each agent
Public Type ControllerType
Rules(10) As String
End Type
Public Type SimDataType
SimScore As Double
ConfigScore As Double
LegalStepCount As Integer
GoalStepCount As Integer
LegalPreGoalStepCount As Integer
DumpCount As Integer
ActionHistory As String
BenchHistory As String
AgentHistory As String
CarryHistory As String
End Type
Public Type SolutionType
TrainedController As ControllerType
TrainedSimData As SimDataType
206
'TestedSimData As SimDataType
CreatedController As ControllerType
End Type
'------------------------------------------------------------------------------------
Public OutputFileName1, OutputFileName2 As String
Public GenOutputCurb As Integer
Public PoolOutputCurb As Integer
Public TopPrint As Integer
Public HistorySpacer As String
Public RuleLength As Integer
Public HistoryLength As Integer
Public MiniStepCount As Integer
Public RuleDashPos As Integer
Public RuleStateLength As Integer
Public StateCount As Integer
Public GenerationCount As Integer
Public SolutionCount As Integer
Public ControllerCount As Integer
Public AgentCount As Integer
Public CycleCount As Integer
Public StepCount As Integer
Public CellCount As Integer
Public ActionCount As Integer
Public ConditionCount As Integer
Public FitnessCoefficient As Double
Public Condition(20) As ConditionType
Public Action(20) As ActionType
Public ActionString As String
Public BenchPartLimit As Integer
Public RestockOnDump As Boolean
Public RestockOnLoad As Boolean
Public MaxDumpCount As Integer
Public DumpCount As Integer
Public DumpGoalPartialSteps As Integer
Public AgentControllerIndex(10) As Integer
Public AgentOneSenseRightFaulty As Boolean
Public DumpScoreCoeff As Integer
Public BenchScoreBase As Integer
Public CarryScoreBase As Integer
Public RouletteCrossParentFraction As Double
Public OutCrossParentFraction As Double
Public RandomCrossParentFraction As Double
Public RandomChoiceFraction As Double
Public RouletteCrossParentMax As Integer
Public OutCrossParentMax As Integer
Public RandomCrossParentMax As Integer
Public RandomChoiceMax As Integer
207
Public RouletteCrossPercentage As Double
Public OutCrossPercentage As Double
Public RandomCrossPercentage As Double
Public RandomChoicePercentage As Double
Public EliteChoicePercentage As Double
Public WorstChoicePercentage As Double
Public RouletteCrossCount As Integer
Public OutCrossCount As Integer
Public RandomCrossCount As Integer
Public RandomChoiceCount As Integer
Public EliteChoiceCount As Integer
Public WorstChoiceCount As Integer
Public ProbChromosomeCrossoverPoint As Double
Public ProbGeneCrossoverPoint As Double
Public MutationDamper As Integer
Public RankRoulettePower As Double
Public ScoreRouletteMethod As Boolean
Public CurrSolutions(3000) As SolutionType
Public NextSolutions(3000) As SolutionType 'next generation's gene pool
Public BestSolutions(3000) As SolutionType
Public SeededController As ControllerType
Public GenerationIndex As Integer
Public SolutionIndex As Integer
Public CycleIndex As Integer
Public AgentIndex As Integer
Public ControllerPlan As String
Public PrintAll As Boolean
Public PrintIt As Boolean
Public GoalGenerations As Integer
Public Comment As String
Public StaticCount As Integer
Public StaticScore As Integer
Public StaticSolution As Boolean
Public StabilitySteps As Integer
Public GoalFound As Boolean
Public LegalFound As Boolean
Public SolutionFound As Boolean
Public PreGoalStepCount As Integer
Public SimScoreHistory As String
Public StablePGS As Integer
Public StableGens As Integer
Public Sub Main()
Call Setup
Call PoolCreate 'must create the pool of controller-tuple solutions
208
StaticSolution = False
StaticCount = 0
StaticScore = 0
LastScore = 0
StabilitySteps = 0 ' 2 * CellCount
StableGens = 0
StablePGS = 0
For GenerationIndex = 1 To 2000 'GenerationCount 'run the process for a specified # of generations
Call PoolTest 'must evaluate the solution pool of current generation
Call PoolSort
SimScoreHistory = ""
For i = 1 To SolutionCount Step PoolOutputCurb
SimScoreHistory = CStr(CurrSolutions(i).TrainedSimData.SimScore) + " " + SimScoreHistory
Next i
Write #1, SimScoreHistory
With CurrSolutions(1).TrainedSimData
GoalFound = (.DumpCount = MaxDumpCount): LegalFound = (.LegalStepCount =
StepCount)
PreGoalStepCount = StepCount - .GoalStepCount: SolutionFound = GoalFound And
LegalFound And .GoalStepCount > StabilitySteps
If (StablePGS <> PreGoalStepCount) Or (Not SolutionFound) Then
StablePGS = PreGoalStepCount
StableGens = 0
ElseIf (StablePGS = PreGoalStepCount) And SolutionFound Then
StableGens = StableGens + 1
If StableGens = 100 Then Exit For
End If
If SolutionFound Then
Comment = "LG"
ElseIf GoalFound > 0 Then
Comment = "-G"
ElseIf LegalFound Then
Comment = "L-"
Else
Comment = "--"
End If
Debug.Print GenerationIndex; "S="; StepCount; "D="; .DumpCount; "PGS="; PreGoalStepCount;
"LS="; .LegalStepCount; "CFG="; .ConfigScore; "SIM="; .SimScore; Comment
' Debug.Print " TRACE: " + .ActionHistory
' Debug.Print " BENCH: " + .BenchHistory
' Debug.Print " AGENT: " + .AgentHistory
' Debug.Print " CARRY: " + .CarryHistory
End With
If False Then
With CurrSolutions(1).TrainedSimData
GoalFound = (.DumpCount = MaxDumpCount): LegalFound = (.LegalStepCount =
StepCount)
PreGoalStepCount = StepCount - .GoalStepCount: SolutionFound = GoalFound And
LegalFound And .GoalStepCount > StabilitySteps
If SolutionFound Then
Comment = "LG"
'If .GoalStepCount > 220 Then Exit For
209
ElseIf GoalFound > 0 Then
Comment = "-G"
ElseIf LegalFound Then
Comment = "L-"
Else
Comment = "--"
End If
Debug.Print " *** D="; .DumpCount; "PGS="; PreGoalStepCount; "LS="; .LegalStepCount;
"CFG="; .ConfigScore; "SIM="; .SimScore; Comment; ""
If .SimScore = LastScore Then
StaticCount = StaticCount + 1
Else
LastScore = .SimScore
StaticCount = 0
End If
If StaticCount = 3000 Then
Exit For
'StaticCount = 0
'LastScore = 0
'CycleCount = CycleCount + 5
'StepCount = CycleCount * AgentCount
End If
If False Then
If .GoalStepCount > 0 And .LegalStepCount = StepCount Then
CycleCount = Int((StepCount - .GoalStepCount) / AgentCount + 0.5 + StabilitySteps)
StepCount = CycleCount * AgentCount
End If
End If
End With
End If
'If True Then Exit For '88888888888888888888888888
Call PoolBreed 'create the next generation of solutions
Next GenerationIndex
With CurrSolutions(1).TrainedSimData
Debug.Print "G:"; GenerationIndex; "SSTEPS="; StepCount; "DUMP="; .DumpCount;
"PREGOALSTEPS= "; PreGoalStepCount; "POSTGOALSTEPS= "; .GoalStepCount; "LEGALSTEPS= ";
.LegalStepCount; "CONFIG="; .ConfigScore; "SIMSCORE="; .SimScore; Comment
If SolutionFound Then
GoalGenerations = GoalGenerations + 1
Debug.Print
Debug.Print " TRACE: " + .ActionHistory
Debug.Print " BENCH: " + .BenchHistory
Debug.Print " AGENT: " + .AgentHistory
Debug.Print " CARRY: " + .CarryHistory
Debug.Print
For j = 1 To ControllerCount
Debug.Print " #"; Len(CurrSolutions(1).TrainedController.Rules(j)) / RuleLength; "[";
CurrSolutions(1).TrainedController.Rules(j); "] "
Next j
Debug.Print "G:"; GenerationIndex; "SIMSCORE="; .SimScore; "CFGSCORE="; .ConfigScore;
"GOALS="; .DumpCount; "LEGALSTEPS= "; .LegalStepCount; "PostGoalSTEPS= "; .GoalStepCount;
"STEPS="; StepCount
'If .GoalStepCount>CellCount * AgentCount Then Exit For
210
'If GoalGenerations > 10 Then Exit For
'Exit For
'Else
' GoalGenerations = 0
End If
End With
For i = 1 To 50: Beep: Next i
Close #1
End Sub
Public Sub Setup()
Dim i As Integer
Dim j As Integer
Call Randomize
PrintAll = False
StabilitySteps = 0
'set the conditions and their choices
ConditionCount = 4
Condition(1).Name = "Self Sensor": Condition(1).ChoiceCount = 2
Condition(1).ChoiceName(1) = "holding a part"
Condition(1).ChoiceName(2) = "not holding a part"
Condition(2).Name = "Bench Sensor": Condition(2).ChoiceCount = 2
Condition(2).ChoiceName(1) = "holding a part"
Condition(2).ChoiceName(2) = "not holding a part"
Condition(3).Name = "Left Sensor": Condition(3).ChoiceCount = 4
Condition(3).ChoiceName(1) = "holding a part"
Condition(3).ChoiceName(2) = "not holding a part"
Condition(3).ChoiceName(3) = "void"
Condition(3).ChoiceName(4) = "wall"
Condition(4).Name = "Right Sensor": Condition(4).ChoiceCount = 4
Condition(4).ChoiceName(1) = "holding a part"
Condition(4).ChoiceName(2) = "not holding a part"
Condition(4).ChoiceName(3) = "void"
Condition(4).ChoiceName(4) = "wall"
For i = 1 To ConditionCount
CondLetter = Left(Condition(i).Name, 1)
For j = 1 To Condition(i).ChoiceCount
Condition(i).ChoiceID(j) = CondLetter + Left(Condition(i).ChoiceName(j), 1)
Next j
Next i
'set the actions
ActionCount = 9
Action(1).Enabled = True: Action(1).Name = "Ml = Move to the left cell"
Action(2).Enabled = True: Action(2).Name = "Mr = Move to the right cell"
Action(3).Enabled = True: Action(3).Name = "Tb = Take part from the bench"
Action(4).Enabled = True: Action(4).Name = "Gb = Give part to the bench"
Action(5).Enabled = True: Action(5).Name = "Dn = Do nothing"
Action(6).Enabled = True: Action(6).Name = "Tl = Take part from the carrier in the left cell"
Action(7).Enabled = True: Action(7).Name = "Tr = Take part from the carrier in the right cell"
211
Action(8).Enabled = True: Action(8).Name = "Gl = Give part to the loiterer in the left cell"
Action(9).Enabled = True: Action(9).Name = "Gr = Give part to the loiterer in the right cell"
ActionString = ""
For i = 1 To ActionCount
Action(i).ID = Left(Action(i).Name, 2)
ActionString = ActionString + Action(i).ID
Next i
'system configuration parameters
' InitBenchString = "300": InitAgentString = "012": InitCarryString = "010"
InitBenchString = "302110": InitAgentString = "012340": InitCarryString = "010010" 'standard mid
problem
' InitBenchString = "1001100": InitAgentString = "0123450": InitCarryString = "0121010" 'alternate
mid problem
'InitBenchString = "0211002100": InitAgentString = "1020340567": InitCarryString = "0010000010"
'harder problem
CellCount = Len(InitBenchString)
AgentCount = 0
For i = 1 To CellCount
If Mid(InitAgentString, i, 1) <> "0" Then AgentCount = AgentCount + 1
Next i
MaxDumpCount = 0
For i = 1 To CellCount
MaxDumpCount = MaxDumpCount + Mid(InitBenchString, i, 1) + Mid(InitCarryString, i, 1)
Next i
StateCount = 1
For i = 1 To ConditionCount
StateCount = StateCount * Condition(i).ChoiceCount
Next i
'controller parameters
ControllerPlan = "Universal" '"Divided" '"Universal" ' "Bookends" '"Individual" '"Divided" '"Universal"
'"Bookends" '"Specified" '
Select Case ControllerPlan
Case "Divided":
ControllerCount = 2
For i = 1 To Int(AgentCount / 2)
AgentControllerIndex(i) = 1
Next i
For i = Int(AgentCount / 2) + 1 To AgentCount
AgentControllerIndex(i) = 2
Next i
Case "Individual":
ControllerCount = AgentCount
For i = 1 To AgentCount
AgentControllerIndex(i) = i
Next i
Case "Universal":
ControllerCount = 1
For i = 1 To AgentCount
AgentControllerIndex(i) = 1
Next i
Case "Bookends":
212
ControllerCount = 3
AgentControllerIndex(1) = 1
For i = 2 To AgentCount - 1
AgentControllerIndex(i) = 2
Next i
AgentControllerIndex(AgentCount) = 3
Case "Specified":
ControllerCount = 5
AgentControllerIndex(i) = 1: AgentControllerIndex(i) = 2: AgentControllerIndex(i) = 3
AgentControllerIndex(i) = 4: AgentControllerIndex(i) = 5 ': AgentControllerIndex(i) = 6
End Select
AgentOneSenseRightFaulty = False
'simulation parameters
BenchPartLimit = 9
RestockOnDump = False: RestockOnLoad = False
CycleCount = 200
StepCount = CycleCount * AgentCount
'genetic parameters
GenerationCount = 500
SolutionCount = 500 '1000
'output and formatting variables
OutputFileName1 = "OutFile1.txt"
Open OutputFileName1 For Output As #1
PoolOutputCurb = Int(SolutionCount / 100):
HistorySpacer = Space(CellCount - 3)
RuleStateLength = 2 * ConditionCount
RuleDashPos = RuleStateLength + 1
RuleLength = RuleStateLength + 4
HistoryLength = CellCount + 1
'fitness parameters
BenchScoreBase = 3: CarryScoreBase = 3
BenchScoreExpt = 3: CarryScoreExpt = 3
FitnessCoefficient = 2 * StepCount / (MaxDumpCount ^ CellCount)
DumpScoreCoeff = 0 'BenchScoreBase * CellCount
'reproduction variables
RouletteCrossPercentage = 0.99
OutCrossPercentage = 0
RandomCrossPercentage = 0
RandomChoicePercentage = 0
EliteChoicePercentage = 0.01
WorstChoicePercentage = 0
'reproduction variables
RouletteCrossCount = 2 * Int(RouletteCrossPercentage * SolutionCount / 2)
OutCrossCount = 2 * Int(OutCrossPercentage * SolutionCount / 2)
RandomCrossCount = 2 * Int(RandomCrossPercentage * SolutionCount / 2)
EliteChoiceCount = Int(EliteChoicePercentage * SolutionCount)
213
WorstChoiceCount = Int(WorstChoicePercentage * SolutionCount)
RandomChoiceCount = ToolMax(SolutionCount - EliteChoiceCount - WorstChoiceCount -
RandomCrossCount - RouletteCrossCount - OutCrossCount - RandomEliteChoiceCount -
RandomWorstChoiceCount, 0)
RouletteCrossParentFraction = 1: RouletteCrossParentMax = Int(RouletteCrossParentFraction *
SolutionCount)
OutCrossParentFraction = 0.25: OutCrossParentMax = Int(OutCrossParentFraction * SolutionCount)
RandomCrossParentFraction = 1: RandomCrossParentMax = Int(RandomCrossParentFraction *
SolutionCount)
RandomChoiceFraction = 1: RandomChoiceMax = Int(RandomChoiceFraction * SolutionCount)
ScoreRouletteMethod = False
RankRoulettePower = 0.5
ProbChromosomeCrossoverPoint = 0.5
ProbGeneCrossoverPoint = ProbChromosomeCrossoverPoint / (StateCount - 1)
MutationDamper = 12
InitConfigScore = 0
For i = 1 To CellCount
InitConfigScore = InitConfigScore + Mid(InitBenchString, i, 1) * BenchScoreBase ^ i
InitConfigScore = InitConfigScore + Mid(InitCarryString, i, 1) * CarryScoreBase ^ i
Next i
InitConfigScore = InitConfigScore + Right(InitBenchString, 1) ^ DumpScoreCoeff
MaxConfigScore = MaxDumpCount * (BenchScoreBase ^ CellCount + DumpScoreCoeff)
InitActionHistory = Left("ORIG ", CellCount)
InitBenchHistory = InitBenchString
InitAgentHistory = InitAgentString
InitCarryHistory = InitCarryString
'SeededController.Rules(1) = " ShBhLwRv-Mr ShBnLvRn-Gb SnBhLvRn-Ml SnBhLvRh-Tb
ShBnLvRv-Ml SnBhLwRv-Dn SnBhLwRn-Dn SnBhLvRv-Mr SnBnLvRn-Dn ShBhLwRn-Gb
SnBhLwRh-Tb ShBnLwRv-Mr ShBhLvRn-Ml ShBnLvRh-Gb SnBnLwRn-Dn SnBnLwRh-Dn
SnBnLwRv-Mr SnBnLvRv-Dn ShBnLwRn-Gb SnBnLvRh-Mr ShBhLvRv-Gb ShBhLwRh-Gb"
'SeededController.Rules(2) = " SnBhLhRn-Dn SnBhLvRh-Tb ShBhLhRv-Mr SnBhLnRh-Tb
ShBnLvRn-Gb SnBhLvRn-Ml SnBhLnRn-Dn SnBhLhRh-Mr ShBnLhRv-Mr SnBhLnRv-Tb ShBnLhRn-
Gb ShBhLvRv-Ml ShBnLvRv-Mr SnBnLvRn-Dn SnBnLnRv-Dn ShBnLnRv-Mr SnBnLnRn-Dn
SnBnLvRh-Ml SnBnLnRh-Dn SnBnLvRv-Mr ShBnLnRn-Gb SnBhLvRv-Dn SnBnLhRn-Dn SnBnLhRv-
Mr ShBnLhRh-Gb ShBnLvRh-Ml ShBhLhRh-Gb"
'SeededController.Rules(3) = " SnBhLnRv-Tb ShBnLhRv-Mr ShBnLhRw-Gb SnBhLnRw-Dn
SnBhLvRw-Ml ShBnLnRv-Mr ShBhLvRw-Gb ShBhLhRw-Gb SnBhLvRv-Dn ShBnLvRv-Dn
SnBnLnRv-Mr ShBhLnRw-Dn SnBhLhRv-Dn SnBnLvRv-Mr SnBhLhRw-Dn SnBnLhRv-Gb"
For i = 1 To ControllerCount
SeededController.Rules(i) = ""
Next i
End Sub
Public Sub PoolCreate()
'create a pool of solutions
Dim i As Integer
For i = 1 To SolutionCount
'NextSolutions(i).PreController = SeededController 'current method builds rules as simstates are
encountered
214
NextSolutions(i).CreatedController = SeededController
Next i
End Sub
Public Function EvaluateCondition(Term As String, Agent As Integer) As Boolean
'given the agent's current state in the system in the simulation, return the true or false value of the condition
Dim Cell As Integer
EvaluateCondition = False
Cell = InStr(AgentString, Agent) 'position of this agent in the row of cells
Select Case Term
Case "Sh": EvaluateCondition = Not (Mid(CarryString, Cell, 1) = "0")
Case "Bh": EvaluateCondition = Not (Mid(BenchString, Cell, 1) = "0")
Case "Sn": EvaluateCondition = (Mid(CarryString, Cell, 1) = "0")
Case "Bn": EvaluateCondition = (Mid(BenchString, Cell, 1) = "0")
Case "Ln":
If (Cell > 1) Then
If (Not (Mid(AgentString, Cell - 1, 1) = "0")) Then EvaluateCondition = (Mid(CarryString, Cell -
1, 1) = "0")
End If
Case "Lh":
If (Cell > 1) Then
If (Not (Mid(AgentString, Cell - 1, 1) = "0")) Then EvaluateCondition = Not (Mid(CarryString,
Cell - 1, 1) = "0")
End If
Case "Lv": If (Cell > 1) Then EvaluateCondition = (Mid(AgentString, Cell - 1, 1) = "0")
Case "Lw": EvaluateCondition = (Cell = 1)
Case "Rn":
If (Cell < CellCount) Then
If Not (Mid(AgentString, Cell + 1, 1) = "0") Then EvaluateCondition = (Mid(CarryString, Cell +
1, 1) = "0")
End If
Case "Rh":
If (Cell < CellCount) Then
If Not (Mid(AgentString, Cell + 1, 1) = "0") Then EvaluateCondition = Not (Mid(CarryString,
Cell + 1, 1) = "0")
End If
Case "Rv": If (Cell < CellCount) Then EvaluateCondition = (Mid(AgentString, Cell + 1, 1) = "0")
Case "Rw": EvaluateCondition = (Cell = CellCount)
End Select
End Function
Public Function ExecuteAction(Term As String, Agent As Integer, RealCondStr As String) As Boolean
'given the agent's current state in the system in the simulation, determine if the given action is legally
' executable and if so, then execute it and make the appropriate changes to the system
' note: some actions may not execute because they are flagged as disabled
Dim Cell As Integer
Dim BenchQuantity As Integer
ExecuteAction = False
If Action((1 + InStr(ActionString, Term)) / 2).Enabled Then
Cell = InStr(AgentString, Agent) 'agent's position in the row of cells
Select Case Term
Case "Dn": ExecuteAction = True 'Do-Nothing action always possible
Case "Ml":
If InStr(RealCondStr, "Lv") Then
215
''AgentString = Left(AgentString, Cell - 2) + StrReverse(Mid(AgentString, Cell - 1, 2)) +
Right(AgentString, CellCount - Cell)
AgentString = Left(AgentString, Cell - 2) + CStr(Agent) + "0" + Right(AgentString, CellCount
- Cell)
CarryString = Left(CarryString, Cell - 2) + StrReverse(Mid(CarryString, Cell - 1, 2)) +
Right(CarryString, CellCount - Cell)
ExecuteAction = True
End If
Case "Mr":
If InStr(RealCondStr, "Rv") Then 'Move right only if there is a void to the right
''AgentString = Left(AgentString, Cell - 1) + StrReverse(Mid(AgentString, Cell, 2)) +
Right(AgentString, CellCount - Cell - 1)
AgentString = Left(AgentString, Cell - 1) + "0" + CStr(Agent) + Right(AgentString, CellCount
- Cell - 1)
CarryString = Left(CarryString, Cell - 1) + StrReverse(Mid(CarryString, Cell, 2)) +
Right(CarryString, CellCount - Cell - 1)
ExecuteAction = True 'right move was executed and agent's location was updated
End If
Case "Tl":
If InStr(RealCondStr, "Sn") Then 'Take-from-the-Left action requires current agent to be
empty handed
If InStr(RealCondStr, "Lh") Then 'and also to have a carrying agent to the left of him
CarryString = Left(CarryString, Cell - 2) + "01" + Right(CarryString, CellCount - Cell)
ExecuteAction = True 'Take Left action was executed with carrying statuses updated
End If: End If
Case "Tr":
If InStr(RealCondStr, "Sn") Then
If InStr(RealCondStr, "Rh") Then
CarryString = Left(CarryString, Cell - 1) + "10" + Right(CarryString, CellCount - Cell - 1)
ExecuteAction = True
End If: End If
Case "Gl":
If InStr(RealCondStr, "Sh") Then
If InStr(RealCondStr, "Ln") Then
CarryString = Left(CarryString, Cell - 2) + "10" + Right(CarryString, CellCount - Cell)
ExecuteAction = True
End If: End If
Case "Gr":
If InStr(RealCondStr, "Sh") Then
If InStr(RealCondStr, "Rn") Then
CarryString = Left(CarryString, Cell - 1) + "01" + Right(CarryString, CellCount - Cell - 1)
ExecuteAction = True
End If: End If
Case "Tb":
If InStr(RealCondStr, "Sn") Then
If InStr(RealCondStr, "Bh") Then
'subtract from the parts on the bench unless it is a replenishing benchcell
If (Cell > 1) Or (Not RestockOnLoad) Then
BenchString = Left(BenchString, Cell - 1) + CStr(Mid(BenchString, Cell, 1) - 1) +
Right(BenchString, CellCount - Cell)
End If:
CarryString = Left(CarryString, Cell - 1) + "1" + Right(CarryString, CellCount - Cell)
ExecuteAction = True
End If: End If
Case "Gb":
If InStr(RealCondStr, "Sh") Then
216
BenchQuantity = Val(Mid(BenchString, Cell, 1))
''If BenchQuantity < BenchPartLimit Then
BenchString = Left(BenchString, Cell - 1) + CStr(BenchQuantity + 1) + Right(BenchString,
CellCount - Cell)
''End If
CarryString = Left(CarryString, Cell - 1) + "0" + Right(CarryString, CellCount - Cell)
'Restocks on dump: if agent gives a part to the benchdumpcell then new part added to
benchinitcell
If RestockOnDump Then
If (Cell = CellCount) Then
BenchQuantity = Val(Left(BenchString, 1))
If BenchQuantity < BenchPartLimit Then
BenchString = CStr(BenchQuantity + 1) + Right(BenchString, CellCount - 1)
End If: End If: End If
ExecuteAction = True
End If
End Select
End If
End Function
Public Sub PoolTest()
'must run entire solution pool through simulation runs as a means of obtaining fitness measure
Dim i As Integer
Dim j As Integer
Dim CycleIndex As Integer
Dim AgentIndex As Integer
Dim ControllerIndex As Integer
Dim RealCondString As String
Dim ImagCondString As String
Dim NowAction As String * 2
Dim RuleSet As String
Dim RuleLocation As Integer
Dim ConfigScore As Double
Dim LegalStepCount As Integer
Dim GoalStepCount As Integer
Dim DumpCount As Integer
Dim ActionHistory As String
Dim BenchHistory As String
Dim AgentHistory As String
Dim CarryHistory As String
Dim Controller As ControllerType
For SolutionIndex = 1 To SolutionCount
Controller = NextSolutions(SolutionIndex).CreatedController
ActionHistory = InitActionHistory
BenchHistory = InitBenchHistory
AgentHistory = InitAgentHistory
CarryHistory = InitCarryHistory
BenchString = InitBenchString
AgentString = InitAgentString
CarryString = InitCarryString
217
GoalStepCount = 0
LegalStepCount = StepCount
For CycleIndex = 1 To CycleCount
'run each simulation for a number of steps or until failure
For AgentIndex = 1 To AgentCount
'each agent takes consecutive actions during a sim Cycle
'determine the current state of this agent in the simulation by performing condition testing
ControllerIndex = AgentControllerIndex(AgentIndex)
RealCondString = "": ImagCondString = ""
For i = 1 To ConditionCount
j = 1
Do
If EvaluateCondition(Condition(i).ChoiceID(j), AgentIndex) Then Exit Do
j = j + 1
Loop Until j = Condition(i).ChoiceCount
''If AgentOneSenseRightFaulty And (AgentIndex = 1) And (i = 1) Then
'' ImagCondString = ImagCondString + "Sh" ' + Condition(i).ChoiceID(Int(Rnd() *
Condition(i).ChoiceCount) + 1)
''Else
'' ImagCondString = ImagCondString + Condition(i).ChoiceID(j)
''End If
RealCondString = RealCondString + Condition(i).ChoiceID(j)
Next i
'remove line below if above if-then ever reinstated
ImagCondString = RealCondString
With Controller
RuleSet = .Rules(ControllerIndex) 'current agent's controller
RuleLocation = InStr(RuleSet, ImagCondString) 'rule exists for conditions?
If RuleLocation <> 0 Then 'a rule prescribing an action for this condition set exists
NowAction = Mid(RuleSet, RuleLocation + RuleDashPos, 2) 'prescribed action
If Not ExecuteAction(NowAction, AgentIndex, RealCondString) Then
NowAction = "--"
LegalStepCount = LegalStepCount - 1
'remove failed action from controller
.Rules(ControllerIndex) = Left(RuleSet, RuleLocation - 1) + Right(RuleSet,
Len(RuleSet) - RuleLocation - RuleLength + 1)
End If
Else
'if no rule exists within this agent's controller then add a rule with a random action
NowAction = Action(Int(Rnd() * ActionCount) + 1).ID 'determine random action
If Not ExecuteAction(NowAction, AgentIndex, RealCondString) Then
NowAction = "--"
LegalStepCount = LegalStepCount - 1
'action caused a failure so do not add failed action
''RuleSet = RuleSet+ ImagCondString + "-" + NowAction + " " 'append new rule
Else
.Rules(ControllerIndex) = RuleSet + ImagCondString + "-" + NowAction + " " 'append
new rule
End If
End If
End With
ActionHistory = ActionHistory + " " + CStr(AgentIndex) + NowAction + HistorySpacer
BenchHistory = BenchHistory + " " + BenchString
AgentHistory = AgentHistory + " " + AgentString
CarryHistory = CarryHistory + " " + CarryString
218
DumpCount = Right(BenchString, 1)
If DumpCount = MaxDumpCount Then
GoalStepCount = GoalStepCount + 1
Else
GoalStepCount = 0
End If
Next AgentIndex
Next CycleIndex
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i
Next i
'ConfigScore = ConfigScore + DumpScoreCoeff * Right(BenchString, 1)
'ConfigScore = ConfigScore * FitnessCoefficient
CurrSolutions(SolutionIndex).TrainedController = Controller
With CurrSolutions(SolutionIndex).TrainedSimData
.ActionHistory = ActionHistory
.BenchHistory = BenchHistory
.AgentHistory = AgentHistory
.CarryHistory = CarryHistory
.ConfigScore = ConfigScore
.DumpCount = DumpCount
.GoalStepCount = GoalStepCount
.LegalStepCount = LegalStepCount
' .SimScore = ConfigScore / ToolMax((StepCount - GoalStepCount) + 1, (StepCount -
LegalStepCount) + 1)
' .SimScore = ConfigScore / ToolMax((StepCount - GoalStepCount) + 1, (StepCount -
LegalStepCount) + 1)
.SimScore = ConfigScore + GoalStepCount + LegalStepCount
End With
Next SolutionIndex
End Sub
Public Sub PoolSort()
'must sort the controller-tuple NowSolutions by their fitness measures; sorted with the best placed first in
list
Call ToolQuickSort(1, SolutionCount) 'SORTS HIGH TO LOW
End Sub
Public Sub PoolBreed()
'based on parameter settings make the appropriate selections and crosses to the current genepool of
solutions
'to create he next generation of solutions
Dim i As Integer
Dim TotalScore As Double
Dim Sum As Double
Dim PartialSums(3000) As Double
Dim Ran As Double
219
Dim Mother As Integer
Dim Father As Integer
Dim L As Integer
Dim R As Integer
Dim M As Integer
Dim PoolCount As Integer
If ScoreRouletteMethod Then
'a solution's chance of crossing is equal to its fitness divided by the sum of scores of all included
Solutions
TotalScore = 0
For i = 1 To RouletteCrossParentMax
TotalScore = TotalScore + CurrSolutions(i).TrainedSimData.SimScore
Next i
Sum = 0
For i = 1 To RouletteCrossParentMax - 1 'constructing partial-sum-probability index table for
selection
Sum = Sum + CurrSolutions(i).TrainedSimData.SimScore / TotalScore
PartialSums(i) = Sum
Next i
PartialSums(RouletteCrossParentMax) = 1
End If
Do
For i = 1 To EliteChoiceCount
Call GeneticsClone(i, "EliteChoice", i)
Next i
PoolCount = EliteChoiceCount
For i = 1 To RouletteCrossCount / 2
'perform roulette crosses to produce complementary pairs of solutions
If ScoreRouletteMethod Then
Ran = Rnd(): L = 1: R = RouletteCrossParentMax 'perform O(lg n) search for mother index
Do
M = Int((L + R) / 2): If Ran >= PartialSums(M) Then L = M + 1 Else R = M
Loop Until (R - L) <= 1 'mother index associated with random probability Ran has been found
Mother = Int((L + R) / 2)
Do
Ran = Rnd(): L = 1: R = RouletteCrossParentMax
Do
M = Int((L + R) / 2): If Ran >= PartialSums(M) Then L = M + 1 Else R = M
Loop Until (R - L) <= 1 'father index associated with random probability Ran has been found
Father = Int((L + R) / 2)
Loop Until Mother <> Father 'non-identical father index has been found as well
'cross these parents and store the complementary pairs in the nextsolution array in consecutive
positions
Call GeneticsCross(Mother, Father, "ScoreRouletteCross", PoolCount + 2 * i)
Else
'alternative roulette method based on linear rank of scores to remedy exponential fitness scores
'employs a function to return the selected parent index based on a random number
'an increase in 'RankRoulettePower' will increase the tendency to choose higher-ranked solutions
' if rrp=.5 then Prob of selecting the top scored solution is 0.20 with the Prob of selecting the worst
= 0
Mother = RouletteCrossParentMax - Int(RouletteCrossParentMax * (Rnd() ^ RankRoulettePower)
+ 0.5)
Do
220
Father = RouletteCrossParentMax - Int(RouletteCrossParentMax * (Rnd() ^ RankRoulettePower)
+ 0.5)
Loop Until Mother <> Father 'found non-identical parents
'cross these parents and store the complementary pairs in the nextsolution array in consecutive
positions
Call GeneticsCross(Mother, Father, "RankRouletteCross", PoolCount + 2 * i)
End If
Next i
PoolCount = PoolCount + RouletteCrossCount
For i = 1 To RandomChoiceCount
Call GeneticsClone(Int(Rnd() * SolutionCount) + 1, "RandomChoice", PoolCount + i)
Next i
PoolCount = PoolCount + RandomChoiceCount
If PoolCount = SolutionCount Then Exit Do
For i = 1 To WorstChoiceCount
Call GeneticsClone(SolutionCount - i + 1, "WorstChoice", PoolCount + i)
Next i
PoolCount = PoolCount + WorstChoiceCount
If PoolCount = SolutionCount Then Exit Do
For i = 1 To RandomCrossCount / 2
Mother = Int(Rnd() * RandomCrossParentMax) + 1
Do
Father = Int(Rnd() * RandomCrossParentMax) + 1
Loop Until Mother <> Father 'selected non-identical parents
Call GeneticsCross(Mother, Father, "RandomCross", PoolCount + 2 * i)
Next i
PoolCount = PoolCount + RandomCrossCount
If PoolCount = SolutionCount Then Exit Do
For i = 1 To OutCrossCount / 2
Mother = Int(Rnd() * OutCrossParentMax) + 1 'mother selected from top of pool
Father = SolutionCount - Int(Rnd() * OutCrossParentMax) 'father selected from bottom of pool
Call GeneticsCross(Mother, Father, "OutCross", PoolCount + 2 * i)
Next i
''PoolCount = PoolCount + OutCrossCount
Loop Until False
'at this point, new pool is complete
End Sub
Public Sub zzzSolutionPoolPrint()
'print out some of the best of the current generation's controller-tuple NowSolutions
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim L As Integer
k = 1
''PrintFreq = 1000
''For I = 1 To SolutionCount-2
''If ((i Mod PrintFreq) = 0) Or (i = 1) Or (i = SolutionCount - 2) Then
''For L = 2 To 1 step -1
221
'' Debug.Print "---------------------------------------------------------------------------------------------------"
'' k = SolutionCount - i + L + 1
With CurrSolutions(k).TrainedSimData
Debug.Print "G:"; GenerationIndex; " S:"; k; " SCORE="; .SimScore; " LEGALCOUNT=";
.LegalStepCount; " DUMPCOUNT= "; .DumpCount; " POSTGOALSTEPS= "; .GoalStepCount
' For j = 1 To ControllerCount
' Debug.Print " OLD S: $ --- "; " #"; Len(.PreController.Rules(j)) / RuleLength; " [";
.PreController.Rules(j); "] "
' Next j
Debug.Print " TRACE: " + .ActionHistory
Debug.Print " BENCH: " + .BenchHistory
Debug.Print " AGENT: " + .AgentHistory
Debug.Print " CARRY: " + .CarryHistory
' For j = 1 To ControllerCount
' Debug.Print " NEW S:"; k; " $"; .SimScore; " #"; Len(.Controller.Rules(j)) / RuleLength; "[";
.Controller.Rules(j); "] "
' Next j
' Debug.Print "G:"; GenerationIndex; " S:"; k; " SCORE="; .SimScore; " LEGALCOUNT=";
.LegalStepCount; " DUMPCOUNT= "; .DumpCount; " POSTGOALSTEPS= "; .GoalStepCount
End With
'' Next L
'' End If
'' Next i
End Sub
Public Sub GeneticsClone(Parent As Integer, BirthType As String, Child As Integer)
NextSolutions(Child).CreatedController = CurrSolutions(Parent).TrainedController
If False Then
PrintIt = PrintAll And ((Child1 Mod 200 = 0) Or (Child1 < 4) Or (Child1 = SolutionCount))
If PrintIt Then
Debug.Print "-----------------------------------------------------------------------------------------------------------
"
Debug.Print "G:"; GenerationIndex; " S:"; Child; BirthType; " P:"; Parent
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " P:"; Parent; " $";
CurrSolutions(Parent).TrainedSimData.SimScore; Len(CurrSolutions(Parent).TrainedController.Rules(j)) /
RuleLength; "["; CurrSolutions(Parent).TrainedController.Rules(j); "] "
Next j
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " CR:"; Child; "$";
CurrSolutions(Parent).TrainedSimData.SimScore; Len(CurrSolutions(Parent).TrainedController.Rules(j)) /
RuleLength; "["; CurrSolutions(Parent).TrainedController.Rules(j); "] "
Next j
End If
End If
''Call GeneticsMutate(Child)
End Sub
Public Sub GeneticsCross(Mom As Integer, Dad As Integer, BirthType As String, Child2 As Integer)
'NextSolution # Index and #Index+1 will be the complementary pairs produced
' as a result of the recombination of two controller sets indexed by Mom and Dad
Dim i As Integer
222
Dim j As Integer
Dim MomString As String
Dim DadString As String
Dim MomRuleCount As Integer
Dim DadRuleCount As Integer
Dim ChildString1 As String
Dim ChildString2 As String
Dim TempChildString As String
Dim MomRule As String
Dim DadRule As String
Dim RulePosition As Integer
Dim Child1 As Integer
Child1 = Child2 - 1
For j = 1 To ControllerCount
'Gene Crossover: within chromosomes
MomString = CurrSolutions(Mom).TrainedController.Rules(j)
DadString = CurrSolutions(Dad).TrainedController.Rules(j)
MomRuleCount = Len(MomString) / RuleLength
DadRuleCount = Len(DadString) / RuleLength
ChildString1 = "": ChildString2 = ""
For i = 0 To MomRuleCount - 1 'first process all visible rules in common or specific to mom
If Rnd() < ProbGeneCrossoverPoint Then 'determine if gene crossover point exists
TempChildString = ChildString1 'achieve crossover by swapping build strings
ChildString1 = ChildString2
ChildString2 = TempChildString
End If
MomRule = Mid(MomString, i * RuleLength + 1, RuleLength) 'find next rule in controller
RulePosition = InStr(DadString, Left(MomRule, RuleStateLength)) 'see if rule exists in other parent
controller
If RulePosition = 0 Then 'unfound rule only in mom so add to a buildstring and have other get
random hidden rule
ChildString1 = ChildString1 + MomRule
'ChildString2 = ChildString2 + Left(MomRule, RuleStateLength) + "-" + Action(Int(Rnd() *
ActionCount) + 1).ID + " "
Else 'common rule found in dad too so append mom and dad rules to the two
buildstrings
DadRule = Mid(DadString, RulePosition, RuleLength)
ChildString1 = ChildString1 + DadRule
ChildString2 = ChildString2 + MomRule
End If
Next i
For i = 0 To DadRuleCount - 1 'now process all rules specific to dad controller (commons
processed by prior loop)
DadRule = Mid(DadString, i * RuleLength + 1, RuleLength) 'next rule in controller
RulePosition = InStr(MomString, Left(DadRule, RuleStateLength))
If RulePosition = 0 Then 'unfound rule only in dad so add to a buildstring and have other get
random hidden rule
If Rnd() < ProbGeneCrossoverPoint Then 'determine if gene crossover point exists
TempChildString = ChildString1 'achieve crossover by swapping build strings
ChildString1 = ChildString2
ChildString2 = TempChildString
End If
ChildString1 = ChildString1 + DadRule 'append to the buildstring after possible crossover
'ChildString2 = ChildString2 + Left(DadRule, RuleStateLength) + "-" + Action(Int(Rnd() *
ActionCount) + 1).ID + " "
223
End If
Next i
'Chromosome crossover: between chromosomes
If Rnd() < ProbChromosomeCrossoverPoint Then 'now that gene crossovers are implemented,
perform independent chromosome segregration
TempChildString = ChildString1
ChildString1 = ChildString2
ChildString2 = TempChildString
End If
NextSolutions(Child1).CreatedController.Rules(j) = ChildString1 'store new chromosome as
controller in nextsolutions
NextSolutions(Child2).CreatedController.Rules(j) = ChildString2 'complementary pair being
produced
Next j
For i = Child1 To Child2
If False Then
PrintIt = PrintAll And ((Child1 Mod 200 = 0) Or (Child1 < 4) Or (Child1 = SolutionCount))
If PrintIt Then
Debug.Print "--------------------------------------------------------------------------------------------------------
---"
Debug.Print "G:"; GenerationIndex; " S:"; i; BirthType; " M:"; Mom; " D:"; Dad
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " M:"; Mom; " $";
CurrSolutions(Mom).TrainedSimData.SimScore; Len(CurrSolutions(Mom).TrainedController.Rules(j)) /
RuleLength; "["; CurrSolutions(Mom).TrainedController.Rules(j); "] "
Next j
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " D:"; Dad; " $";
CurrSolutions(Dad).TrainedSimData.SimScore; Len(CurrSolutions(Dad).TrainedController.Rules(j)) /
RuleLength; "["; CurrSolutions(Dad).TrainedController.Rules(j); "] "
Next j
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " CR:"; i; " $ --- ";
Len(NextSolutions(i).CreatedController.Rules(j)) / RuleLength; "[";
NextSolutions(i).CreatedController.Rules(j); "] "
Next j
End If
End If
Call GeneticsMutate(i)
Next i
End Sub
Public Sub GeneticsMutate(Index As Integer)
'the current set of controllers for nextsolution # index must be mutated
Dim i As Integer
Dim j As Integer
Dim ControllerLength As Integer
Dim RuleSet As String
Dim NumRules As Integer
Dim NumMutations As Integer
''Dim RandomRule As Integer
Dim RandomRuleActionPos As Integer
224
Dim RandomAction As String * 2
For i = 1 To ControllerCount
RuleSet = NextSolutions(Index).CreatedController.Rules(i)
ControllerLength = Len(RuleSet)
If ControllerLength > 0 Then
NumRules = ControllerLength / RuleLength
NumMutations = Int(0.5 + StateCount * (Rnd() ^ MutationDamper)) 'number of mutations to occur
NumMutations = Int(NumRules * NumMutations / StateCount + 0.5) 'probabilistic reduction given
rule count
For j = 1 To NumMutations
RandomRule = Int(NumRules * Rnd()) + 1 ' in conjunction with probabilisitic
''RandomRule = Int(StateCount * Rnd()) + 1 'which rule (hidden or visible) to mutate
''If RandomRule <= NumRules Then 'mutate only visible rules
RandomAction = Action(Int(Rnd() * ActionCount) + 1).ID
RandomRuleActionPos = RandomRule * RuleLength - 3
NextSolutions(Index).CreatedController.Rules(i) = Left(RuleSet, RandomRuleActionPos) +
RandomAction + Right(RuleSet, ControllerLength - RandomRuleActionPos - 2)
''End If
Next j
End If
Next i
If False Then
PrintIt = PrintAll And ((Child1 Mod 200 = 0) Or (Child1 < 4) Or (Child1 = SolutionCount))
If PrintIt Then
For j = 1 To ControllerCount
Debug.Print "G:"; GenerationIndex; " MU:"; Index; " $ ---";
Len(NextSolutions(Index).CreatedController.Rules(j)) / RuleLength; "[";
NextSolutions(Index).CreatedController.Rules(j); "] "
Next j
End If
End If
End Sub
Public Function ToolMax(Argument1 As Integer, Argument2 As Integer) As Integer
If Argument1 < Argument2 Then ToolMax = Argument2 Else ToolMax = Argument1
End Function
Public Function ToolMin(Argument1 As Integer, Argument2 As Integer) As Integer
If Argument1 > Argument2 Then ToolMin = Argument2 Else ToolMin = Argument1
End Function
Public Sub ToolQuickSort(Left As Integer, Right As Integer)
Dim PivotPoint As Integer
Dim PivotElement As SolutionType
Dim LHold As Integer
Dim RHold As Integer
LHold = Left: RHold = Right
PivotElement = CurrSolutions(Left)
While Left < Right
While (CurrSolutions(Right).TrainedSimData.SimScore <= PivotElement.TrainedSimData.SimScore)
And (Left < Right)
Right = Right - 1
Wend
If Left <> Right Then
CurrSolutions(Left) = CurrSolutions(Right)
Left = Left + 1
225
End If
While (CurrSolutions(Left).TrainedSimData.SimScore >= PivotElement.TrainedSimData.SimScore)
And (Left < Right)
Left = Left + 1
Wend
If Left <> Right Then
CurrSolutions(Right) = CurrSolutions(Left)
Right = Right - 1
End If
Wend
CurrSolutions(Left) = PivotElement
PivotPoint = Left
Left = LHold: Right = RHold
If Left < PivotPoint Then Call ToolQuickSort(Left, PivotPoint - 1)
If Right > PivotPoint Then Call ToolQuickSort(PivotPoint + 1, Right)
End Sub
Public Sub zzzImplementSolution(Index As Integer, Train As Boolean)
'must run entire solution pool through simulation runs as a means of obtaining fitness measure
Dim i As Integer
Dim j As Integer
Dim CycleIndex As Integer
Dim AgentIndex As Integer
Dim ControllerIndex As Integer
Dim RealCondString As String
Dim ImagCondString As String
Dim NowAction As String * 2
Dim RuleSet As String
Dim RuleLocation As Integer
Dim ConfigScore As Integer
Dim LegalStepCount As Integer
Dim GoalStepCount As Integer
Dim DumpCount As Integer
Dim ActionHistory As String
Dim BenchHistory As String
Dim AgentHistory As String
Dim CarryHistory As String
Dim AbortSim As Boolean
Dim Controller As ControllerType
If Train Then
Controller = NextSolutions(Index).CreatedController
Else
Controller = CurrSolutions(Index).TrainedController
End If
AbortSim = False
ActionHistory = InitActionHistory
BenchHistory = InitBenchHistory
AgentHistory = InitAgentHistory
CarryHistory = InitCarryHistory
BenchString = InitBenchString
AgentString = InitAgentString
226
CarryString = InitCarryString
GoalStepCount = 0
LegalStepCount = StepCount
For CycleIndex = 1 To CycleCount
'run each simulation for a number of steps or until failure
For AgentIndex = 1 To AgentCount
'each agent takes consecutive actions during a sim Cycle
'determine the current state of this agent in the simulation by performing condition testing
ControllerIndex = AgentControllerIndex(AgentIndex)
RealCondString = "": ImagCondString = ""
For i = 1 To ConditionCount
j = 1
Do
If EvaluateCondition(Condition(i).ChoiceID(j), AgentIndex) Then Exit Do
j = j + 1
Loop Until j = Condition(i).ChoiceCount
''If AgentOneSenseRightFaulty And (AgentIndex = 1) And (i = 1) Then
'' ImagCondString = ImagCondString + "Sh" ' + Condition(i).ChoiceID(Int(Rnd() *
Condition(i).ChoiceCount) + 1)
''Else
'' ImagCondString = ImagCondString + Condition(i).ChoiceID(j)
''End If
RealCondString = RealCondString + Condition(i).ChoiceID(j)
Next i
'remove line below if above if-then ever reinstated
ImagCondString = RealCondString
With Controller
RuleSet = .Rules(ControllerIndex) 'current agent's controller
RuleLocation = InStr(RuleSet, ImagCondString) 'rule exists for conditions?
If RuleLocation <> 0 Then 'a rule prescribing an action for this condition set exists
NowAction = Mid(RuleSet, RuleLocation + RuleDashPos, 2) 'prescribed action
If Not ExecuteAction(NowAction, AgentIndex, RealCondString) Then
NowAction = "--"
LegalStepCount = LegalStepCount - 1
' GoalStepCount = 0
If Train Then
'remove failed action from controller
.Rules(ControllerIndex) = Left(RuleSet, RuleLocation - 1) + Right(RuleSet,
Len(RuleSet) - RuleLocation - RuleLength + 1)
Else
AbortSim = True
End If
End If
Else
If Train Then
'if no rule exists within this agent's controller then add a rule with a random action
NowAction = Action(Int(Rnd() * ActionCount) + 1).ID 'determine random action
If Not ExecuteAction(NowAction, AgentIndex, RealCondString) Then
NowAction = "--"
LegalStepCount = LegalStepCount - 1
' GoalStepCount = 0
'action caused a failure so do not add failed action
''RuleSet = RuleSet+ ImagCondString + "-" + NowAction + " " 'append new rule
Else
227
.Rules(ControllerIndex) = RuleSet + ImagCondString + "-" + NowAction + " " 'append
new rule
End If
Else
NowAction = "--"
LegalStepCount = LegalStepCount - 1
'GoalStepCount = 0
AbortSim = True
End If
End If
End With
ActionHistory = ActionHistory + " " + CStr(AgentIndex) + ":" + NowAction + HistorySpacer
BenchHistory = BenchHistory + " " + BenchString
AgentHistory = AgentHistory + " " + AgentString
CarryHistory = CarryHistory + " " + CarryString
DumpCount = Right(BenchString, 1)
If DumpCount = MaxDumpCount Then
GoalStepCount = GoalStepCount + 1
Else
GoalStepCount = 0
End If
If AbortSim Then Exit For
Next AgentIndex
If AbortSim Then Exit For
Next CycleIndex
ConfigScore = 0
For i = 1 To CellCount
ConfigScore = ConfigScore + Mid(BenchString, i, 1) * BenchScoreBase ^ i '^ I
ConfigScore = ConfigScore + Mid(CarryString, i, 1) * CarryScoreBase ^ i '^ I
Next i
ConfigScore = ConfigScore + DumpScoreCoeff * Right(BenchString, 1)
If Train Then
CurrSolutions(Index).TrainedController = Controller
With CurrSolutions(Index).TrainedSimData
.ActionHistory = ActionHistory
.BenchHistory = BenchHistory
.AgentHistory = AgentHistory
.CarryHistory = CarryHistory
.ConfigScore = ConfigScore
.DumpCount = DumpCount
.GoalStepCount = GoalStepCount
.LegalStepCount = LegalStepCount
' .SimScore = ConfigScore / ToolMax((StepCount - GoalStepCount) + 1, (StepCount -
LegalStepCount) + 1)
'' .SimScore = ConfigScore / ToolMax((StepCount - GoalStepCount) + 1, (StepCount -
LegalStepCount) + 1)
.SimScore = ConfigScore + GoalStepCount + LegalStepCount
End With
Else
With CurrSolutions(Index).TrainedSimData
.ActionHistory = ActionHistory
.BenchHistory = BenchHistory
.AgentHistory = AgentHistory
228
.CarryHistory = CarryHistory
.ConfigScore = ConfigScore
.DumpCount = DumpCount
.GoalStepCount = GoalStepCount
.LegalStepCount = LegalStepCount
'.SimScore = LegalStepCount + GoalStepCount + Int(StepCount * (DumpCount /
MaxDumpCount)) ';ConfigScore +
End With
End If
End Sub
Public Sub zzzTrainPool()
Dim i As Integer
For i = 1 To SolutionCount
'Call ImplementSolution(i)
Next i
End Sub
Public Sub zzzTestPool()
Dim i As Integer
For i = 1 To SolutionCount
'Call ImplementSolution(i)
Next i
End Sub
229
REFERENCES
Adams, J.A. and Paul, R. (1994) Human-Managed, Hierarchical Control of Multiple
Mobile Agents. Proceedings of the 33rd Conference on Decision and Control. Lake
Buena Vista, FL. 12:3524-3529.
Agah, A. and Bekey, G.A. (1994) Autonomous mobile Robot teams. In Proceedings of
the AIAA NASA Conference on Intelligent Robots in Field, Factory, Service and Space.
Houston Texas. 1:246-251.
Agah, A. and Bekey, G.A. (1994) Exploration and discovery during task performance by
simulated autonomous intelligent robots. In Proceedings of the Fifth International
Conference on Robots and Manufacturing. Maui, Hawaii. 5:1-4.
Agah, A. and Bekey, G.A. (1996) Robot Colony Simulator: A Research Tool for
Studying Colonies of Intelligent Robots. Simulation. 67:82-93.
Anderson, T.L. and Donath, M. (1990) Animal Behavior as a Paradigm for Developing
Robot Autonomy. 6:145-168.
Andre, D. (1995) The Automatic Programming of Agents that Learn Mental Models and
Create Simple Plans of Action. In Proceedings of the Fourteenth International Joint
Conference on Artificial Intelligence. C.S. Mellish (Ed.). Morgan Kaufmann. 741-747.
Angle, C.M. and Brooks, R.A. (1990) Small Planetary Rovers. IEE/RSJ International
Workshop on Intelligent Robots and Systems. Ikabara, Japan. 383-388.
Arkin, R.C. (1989) Homeostatic Control for a Mobile Robot: Dynamic Replanning in
Hazardous Environments. SPIE Proceedings 1007, Mobile AGVs III, William J. Wolfe
(Ed.). 407-413.
Arkin, R.C. (1992) Cooperation without communication: multi-agent schema-based robot
navigation. Journal of Robotic Systems. 9:351-364.
Assad, A.M. and Packard, N.H. (1990) Emergent colonization in an artificial ecology. In
Varela, F.J. and Bourgine, P. (Eds.) Toward a Practice of Autonomous Systems. MIT
Press. Cambridge, Massachusetts. 143-152.
Axelrod, R. (1997) Advancing the art of simulation in the social sciences. Working Paper
97-05-048. Santa Fe Institute.
Balch, T. (1997) Learning Rules: Behavioral diversity in Robot teams. In Collected
Papers from the AAAI-97 Workshop on Multi-Agent Learning. AAAI. 7-12.
230
Beasley, D., Bull, D.R. and Martin, R.R. (1993) An Overview of Genetic Algorithms.
Available on WWW. University Computing. Cardiff University. 15(2):58-69.
Beer, R.D., Chiel, H.J. and Sterling L.S. (1990) A Biological Perspective on Autonomous
Agent Design. Robotics and Autonomous Systems. 6:169-186.
Bellman, R. (1961) Adaptive Control Processes – A Guided Tour. Princeton: Princeton
University Press.
Berlanga, A., Sanchis, A., Isasi, P. and Molina, J.M. (2000) A General Learning Co-
Evolution Method to Generalize Autonomous Robot Navigation Behavior. In
Proceedings of the 2000 Congress on Evolutionary Computation. 16-19.
Brooks, R.A. (1986) A Robust Layered Control System for a Mobile Robot. IEEE
Journal of AGVs Automation. March.
Brooks, R.A. (1991) Intelligence without Representation. Artificial Intelligence. 47:139-
160.
Brooks, R.A. and Flynn, Anita. (1989) Rover on a Chip. Aerospace America. 10:22-27.
Curtin, J., Bellingham, G., Catiporic, J. and Webb, D. (1993) Autonomous
Oceanographic Sampling Networks. Oceanography. 6(3):86-94.
Dorigo, M. and Bersini, H. (1994) A Comparison of Q-Learning and Classifier Systems.
In Proceedings of From Animals to Animats, Third International Conference on
Simulation of Adaptive Behavior.
Douglas, S. A. (2013) Autonomous Agents in Complex Event Driven Software Systems.
Engineering of Computer Based Systems (ECB). 1.
Finin, T., Fritzson, R., McKay, D., McEntire, R. (1994) KQML As An Agent
Communication Language. Proceedings of the Third International Conference on
Information and Knowledge Management. 456-463.
Fischer, K., Muller, J.P. and Pischel, M. (1996) Cooperative Transportation Scheduling:
An Application Domain for DAI. Applied Artificial Intelligence. 10:1-33.
Fogel, D.B. (1995) Evolutionary Computation: Toward a New Philosophy of Machine
Intelligence. IEEE Pres. Piscataway, NJ.
Genovese, V., Dario, P., Magni, R., and Odetti, L. (1992) Self-organizing behavior and
swarm intelligence in a pack of mobile miniature Robots in search of pollutants.
Proceedings of the IEEE/RSJ International Conference on Intelligent AGVs and Systems.
1575-1582.
231
Goldberg, D.E. (1989) Genetic Algorithms in Search, Optimization and Machine
Learning. Addison-Wesley.
Gowda, C.C. and Mayya, S.G. (2014) Comparison of Back Propagation Neural network
and Genetic Algorithm Neural Network for Stream Flow Prediction. Journal of
Computational Environmental Sciences 2014. Article ID 290127. 6 pages.
Gregorin, L., Freire, E., Caravalo, E. and Molina, L. (2016) Evolutionary Robotics
Applied to the Multi-Robot Worst-Case Pursuit-Evasion Problem. In Proceedings of
2016 IEEE 7th Annual Ubiquitous Computing, Electronics & Mobile Communication
Conference (UEMCON). 20-22 Oct. 2016. 1-7.
Griffiths, A.J., Gelbart, W.M., Miller, J.H. and Lewontin, R.C. (1999) Modern Genetics
Analysis. W.H. Freeman and Co. 549.
Habib, M.K., Asama, H., Endo, I., Matsumoto, A. and Ishida, Y. (1992) Simulation
Environment for an Autonomous Decentralized Multi-Agent Robotic System.
Proceedings of the IEEE/RSJ International Conference on Int. Robotics and Systems.
Raleigh, NC. 1550-1557.
Holland, J.H. (1975) Adaptation in natural and artificial systems. Ann Arbor: The
University of Michigan Press.
Iba, H. (1996) Emergent Cooperation for Multiple Agents using Genetic Programming.
Late Breaking Papers of the Genetic Programming 1996 Conference. J.R. Koza (Ed.).
Stanford, CA. 66-74.
Iwanaga, S., Ohkura, K. and Matsuda, T. (2009) Evolving Adaptive Group Behavior in a
Multi-Robot System. ICROS-SICE International Joint Conference 2009. August 18-21,
2009, Fukuoka International Congress Center, Japan. 2009: 2235-2240.
Jennings, N.R. (1993) Commitments and conventions: the foundations of coordination in
multi-agent systems. Knowledge Engineering Review. 8(3):223-250.
Jennings, N.R. (1996) Coordination Techniques for Distributed Artificial Intelligence. In
G.M.P. O’Hare and N.R. Jennings (Eds.). Foundations of Distributed Intelligence. John
Wiley & Sons, Inc. New York. 187-210.
Juang, C., Lai, M. and Zeng, W. (2014) Evolutionary Fuzzy Control and Navigation for
Two Wheeled Robots Cooperatively Carrying an Object in Unknown Environments.
IEEE Transactions on Cybernetics, Vol. 45, No. 9, September 2015. 1731-1743.
Jun, H. and Sim, K. (1997) Behavior Learning and Evolution of Collective Autonomous
Mobile Robots based on Reinforcement Learning and Distributed Genetic Algorithms.
IEEE International Workshop on Robot and Human Communication. 1997: 248-253.
232
Kaelbing, L.P., Littman, M. and Moore, A. (1996) Reinforcement Learning: A Survey.
Journal of AI Research. 4:237-285.
Karakatic, S., Podgorelec, V., Barros, R. and Basgalupp, M. (2015) Evolving Balanced
Decision Trees with a Multi-Population Genetic Algorithm. IEEC Congress on
Evolutionary Computation. 2015: 54-61.
Kenzin, M. Yu., Bychkov, I.V. and Maksimkin, N.N. (2017) An Evolutionary approach
to route the heterogeneous groups of underwater robots. MIPRO. 2017:1116-1119.
Lane, D.M. and McFadzean, A.G. (1994) Distributed Problem Solving and Real-Time
Mechanisms in Robot Architectures. Engineering Applications of Artificial Intelligence.
7(2). 105-117.
Liu, X. and Louis, S. (1996) Combining genetic algorithms and case-based reasoning for
structure design. In M.E. Cohen and D.L. Hudson (Eds.), Proceedings of the ICSA
Eleventh International Conference on Computers and their applications. ISCA. 103-106.
Luke, S. and Spector, L. (1996) Evolving Teamwork and Coordination with Genetic
Programming. In Proceedings of the First Annual Conference on Genetic Programming.
J.R. Koza et al (Eds.). MIT Press. Cambridge, MA. 150-156.
Maes, P. (1989) The Dynamics of Action Selection. Proceedings of Int. Joint Conference
of Artificial Intelligence (IJCAI-89). 991-997.
Maes, P. (Ed.) (1990) Designing Autonomous Agents: Theory and Practice from Biology
to Engineering and Back. MIT Press. Cambridge, MA.
Mahadevan, S. and Connell, J. (1990) Automatic Programming of Behavior-based
Robots using Reinforcement Learning. IBM T.J. Watson Research Report.
Maskell, B. and Wilby, M. (1996) Evolving Software Agent Behaviours. IEEE Global
Telecommunications Conference. 1: 90-94.
McElroy, J.F., Stephens, L.M., Bonnell, R.D. and Gorman, J. (1989) Communication and
Cooperation in a Distributed Automated Guided Vehicle System. IEEE Conference
Proceedings of Southeastcon. 999-1003.
Michalewicz, Z. (1992) Genetic Algorithms + Data Structures = Evolutionary Programs.
Springer-Verlag.
Miller, D.P. (1990) Multiple Behavior-Controlled Micro-AGVs for Planetary Surface
Missions. Proceedings of the IEEE International Conference on Systems, Man and
Cybernetics. Los Angeles, CA. 11:281-292.
233
Minar, N., Burkhart, R., Langton, C. and Askenazi, M. (1996) The Swarm simulation
system: A toolkit for building multi-agent simulations. Working Paper 96-06-042. Santa
Fe Institute.
Morik, K., Kaiser, M. and Klingspor, V. (Eds.). (1999) Making Robots Smarter:
Combining Sensing and Action through Robot Learning. Kluwer Academic Publishers.
Norwell. MA.
Muhlenbein, H. (1989) Parallel Genetic Algorithms, Population Genetics and
Combinatorial Optimization. Proc. Third Int’l Conf. On Genetic Algorithms. Morgan
Kaufmann. 416-421.
Murray, A. and Louis, S. (1995) Design Strategies for evolutionary robots. In E.A.
Yfantis (Ed.), Proceedings of the Third Golden West International Conference on
Intelligent Systems. Kluwer Academic Press. 609-616.
Narendra, K. and Thathachar, M.A.L. (1989) Learning Automaton: An Introduction.
Prentice Hall, Inc. Englewood Cliffs, NJ.
Nolfi, S. and Parisi, D. (1995) Learning to adapt to changing environments in evolving
neural networks. Technical Report 95-15. Institute of Psychology. National Research
Council. Rome, Italy.
Nowak, M. A. (2006) Five Rules for the Evolution of Cooperation. Science 314 (5805).
1560-1563.
O'Dowd, P.J., Winfield, Alan F.T. and Studley, M. (2011) The Distributed Co-Evolution
of an Embodied Simulator and Controller for Swarm Robot Behaviours. IEEE/RSJ
International Conference on Intelligent Robots and Systems. September 25-30, 2011. San
Francisco, CA, USA. 4995-5000.
Paic-Antunovic, L. and Jakobovic, D. (2012) Evolution of Automatic Robot Control with
Genetic Programming. MIPRO 2012. May 21-25, 2012. 817-822.
Palacios-Leyva, R. E., Cruz-Alvarez, R., Montes-Gonzalez, F., Rascon-Perez, L. and
Santos, J. (2013) Combination of Reinforcement Learning with Evolution for
Automatically Obtaining Robot Neural Controllers. In Proceedings of IEEE Congress on
Evolutionary Computation. June 20-23, Cancun, Mexico. 119-126.
Parker, L.E. (1996) On the design of behavior-based multi-robot teams. Advanced
Robotics. 10(6):547-578.
Pigliucci, M. (2008) Adaptive Landscapes, Phenotypic Space, and the Power of
Metaphors, The Quarterly Review of Biology. 83 (3): 283-287.
234
Quinn, M. (2000) Evolving Co-operative Homogeneous Multi-Robot Teams. In
Proceedings of the 2000 IEEE/RSJ International Conference on Intelligent Robots and
Systems. 2000: 1798-1803.
Qureshi, A. (1996) Evolving Agents. In Proceedings of the First Annual Conference on
Genetic Programming. J.R. Koza et al. (Eds.). MIT Press. Cambridge, MA. 369-374.
Ramsey, C. and Grefensttete, J. (1993) Case-based initialization of genetic algorithms. In
Proceedings of the Fifth International Conference on Genetic Algorithms. S. Forrest
(Ed.). Morgan Kaufmann. 84-91.
Ruini, F. and Cangelosi, A. (2008) Distributed Control in Multi-Agent Systems: A
Preliminary Model of Autonomous MAV Swarms. IEEE Xplore
Conference: 11th International Conference on Information Fusion. 2008. 1043-1050."
Russell, S. and Norvig, P. (1995) Artificial Intelligence: A Modern Approach. Prentice-
Hall.
Salomon, R. (1997) The evolution of different neuronal control structures for
autonomous agents. Robotics and Autonomous Systems. 22:199-213.
Schoppers, M.J. (1987) Universal plans for reactive robots in unpredictable
environments. In Proceedings of the Tenth International Joint Conference on Artificial
Intelligence (IJCAI-87). Milan, Italy. 1039-1046.
Shibata, T. and Fukuda, T. (1993) Coordinative Behavior by Genetic Algorithm and
Fuzzy in Evolutionary Multi-Agent System. In Proceedings of International Conference
on Robotics and Automation, 1993. 760-763.
Simoes, E.D.V. and Dimond, K.R. (1999) An Evolutionary Controller for Autonomous
Multi-Robot Systems. In Proceedings of IEEE International Conference on Systems,
Man, and Cybernetics, 1999. VI-596-VI601.
Smith, J.M. (1964) Group Selection and Kin Selection. Nature 201. 14 March, 1964.
1145-1157.
Stillwell, D.J. and Bay, J.S. (1993) Toward the Development of a Material Transport
System using Swarms of Ant-Like Robots. IEEE Conference on Robotics and
Automation. Atlanta, GA. 766-771.
Suparerk, P. and Yuta, S. (1990) Considerations on the cooperation of multiple
autonomous mobile robots. In IEEE International Workshop on Intelligent Robots and
Systems.
Tecuci, G. (1998) Building Intelligent Agents. Academic Press. San Diego, CA.
235
Traulsen, A. and Nowak, M (2006) Evolution of Cooperation by Multilevel Selection.
PNAS. 103(29). 10952-5.
Uchibe, E. and Asada, M. (2006) Incremental Coevolution with Competitive and
Cooperative Tasks in a Multirobot Environment. In Proceedings of the IEEE. Vol. 94,
No. 7, July 2006. 1412-1424.
Watkins, C.J.C.H (1989) Learning from Delayed Records. Ph. D. Thesis. King’s College.
Cambridge University.
Weise, T., Chiong, R. and Tang, K. (2011) Evolutionary Optimization: Pitfalls and
Booby Traps. Journal of Computer Science and Technology. 27(5). 907-936.
Weiss, G. (1999) Multi-Agent Systems: A Modern Approach to Distributed Artificial
Intelligence. MIT Press. Cambridge, MA.
Wilson, D.S. and Sober, E. (1994) Reintroducing Group Selection to the Behavioral
Sciences. Behavioral and Brain Sciences 19 (4): 585-654.
Wilson, D.S. and Wilson, E.D. (2007) Rethinking the Theoretical Foundations of
Sociobiology. Quarterly Review of Biology 82: 327-348.
Wooldridge, M. and Jennings, N.R. (1995) Intelligent Agents: Theory and Practice. The
Knowledge Engineering Review. 10(2):115-152.
Wright, S. (1932) The Roles of Mutation, In-Breeding, Cross-Breeding and Selection in
Evolution. Proceedings of the Sixth International Congress on Genetics. 356-366.
Zelinka, I. (2016) On Possibilities of Evolutionary Synthesis of Robot Control
Sequences. In Proceedings of the 2016 IEEE International Conference on Real-Time
Computing and Robotics. June 6-9, 2016. Angkor Wat, Cambodia. 332-337.
VITA
MARC LATORELLA
EDUCATION:
Pennsylvania State University, State College, PA
December 2017 Ph.D. Industrial and Manufacturing Engineering
Dissertation: “Evolving Intelligent Control Rules for a Collaborative Multi-Agent Manufacturing Cell”
State University of New York at Buffalo, Buffalo, NY
January 1997 M.S. Operations Research
State University of New York at Geneseo, Geneseo, NY
August 1991 B.A. Mathematics with Physics and Computer Science minors
Cornell University, Ithaca, NY
August 1988 - May 1989, August 1985 - May 1987 Computer Science Engineering Curriculum
EXPERIENCE:
Software Developer / Researcher, Trelletics Consulting, Inc. Yorktown, VA.
05/09 - Current Worked on research and software projects in simulation-based training.
Programmer / Analyst, Metrigenics, Inc. Beverly, MA
04/03 - 02/09 Developed facial recognition software to create composite faces from DNA.
Graduate Teaching Assistant, Industrial Engineering Dept., Penn State University. State College, PA
08/02 - 12/02, “Information Technology for Industrial Engineering" - Information Modeling, Java,
08/98 - 05/00 Data Communications, Distributed Computing, Modeling & Integration, Databases,
Distributed Collaborative Design, Internet-Based Manufacturing.
NASA Graduate Research Fellow, Crew Systems Ops Branch, NASA Langley. Hampton, VA
07/00 - 06/02 Conducted Ph.D. research on development and evaluation of evolutionary control
strategies towards semi-autonomous planning and operation in Freeflight program.
Assistant Research Analyst, Dept. of Autonomous Agents, Info. Science & Intelligent Systems
Division of the Applied Research Laboratory, Penn State University. State College, PA
05/96 - 08/98 "SAMON Project" - Designed and developed web-based simulation testbed facility for the
Office of Naval Research for collaborative autonomous underwater vehicle missions.
Graduate Teaching Assistant, Industrial Engineering Dept., Penn State University. State College, PA
08/94 - 05/96 "Introduction to Manufacturing Systems" - Manufacturing Systems, RETAD, Quality
Control, Resource Allocation, Production & Inventory Control, Vendor Integration.
Assistant Operations Analyst, Bulk Gases Distribution Division, Praxair, Inc. Tonawanda, NY
01/93 - 12/93 Upgraded large-scale logistics program to schedule national distribution of bulk gases.
ACTIVITIES:
Graduate Student Association: Industrial Engineering Senator
08/95 - 05/96 Pennsylvania State University. State College, PA
08/92 - 05/94 State University of New York at Buffalo. Buffalo, NY
Human Factors Society: Founding Member and Treasurer
08/86 - 05/87 Cornell University. Ithaca, NY
SKILLS & INTERESTS:
Python, C++, XML, SQL, JAVA. Evolutionary Learning, Information Technology, Genetic Algorithms, Databases,
Datamining, Multi-Agent Systems, Neural Nets, Simulation Modeling, Expert Systems, Finite State Automata.