Newsgroups: comp.ai.genetic
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!nntp.sei.cmu.edu!news.cis.ohio-state.edu!math.ohio-state.edu!cs.utexas.edu!swrinde!elroy.jpl.nasa.gov!decwrl!news.PBI.net!news.mathworks.com!newsfeed.internetmci.com!in3.uu.net!shore!mv!usenet
From: "Scott Russell" <Queuetoo@emrys.mv.com>
Subject: Q: More than one fitness parameter
Message-ID: <01bb8343$2091e3a0$LocalHost@Emrys>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Organization: QC
Date: Tue, 6 Aug 1996 02:58:35 GMT
X-Newsreader: Microsoft Internet News 4.70.1141
X-Nntp-Posting-Host: emrys.mv.com
Content-Transfer-Encoding: 7bit
Lines: 37

In glaring newbie style, I've cobbled together a very simplistic GA.  It
currently

a) Creates a random string of "components."
b) Each component has a "cost."
c) The cost of the string is determined by summing all of it's components.
d) Fitness is determined by fit = targetCost / TotalCost
e) 100 children are randomly mutated each "generation" , and the most fit
(closest to 1 using "if abs(fitN-1) < abs(fitParent-1) then A = parent) of
the children is selected as the parent of the next generation.

This system works great.  It comes up with solutions it would take me
forever to do with  most any other method.

Now comes the problem.  How can I make the fitness function
multidimensional?  I had a gut feeling that I could simply calculate a
TotalCost for each property of each component, compute fitness for each and
average them together. I.E.,

Tfit = TargetCost(1)/TotalCost(1)
Tfit = Tfit + TargetCost(2)/TotalCost(3)
Tfit3 = Tfit + TargetCost(3)/TotalCost(3)
...
Tfit = Tfit + TargetCost(N)/TotalCost(N)
fit = Tfit / N

This doesn't work.  In an example with 2 properties for every component,
Tfit(1) could be 1.5, and Tfit(2) could be .5.  As a result, fit will be 1,
with neither result being close to correct.

What's the next step for me?  I'm trying to be as KISS (keep it simple and
stupid) as possible.   Can multiple fitness categories be used in such a
simple way?




