VB.Net - evolutionary computing framework - ideas people wanted
Hi,
I am looking at knocking up a framework for use in evolutionary computing type programs - just interface specifications at this moment. Any bright people interested in developing and/or discussing this?
An evolutionary computing framework is one that facilitates the principles of evolution for solving problems. The main players are: IEnvironment - The interface that defines the environment of the problem. The environment is responsible for defining the viability of individuals.
IPopulation is a type safe collection class with additional methods for querying the population as a whole (such as the average viability and viability spread etc.) and affecting it (culling).
IIndividual is a single individual that represents a possible solution in the problem. An individual has a set of genes that define it's solution to the problem space and individuals may breed which will result in offspring with genes selected at random from each parent.
IGene represents a parameter that affects a part of the solution.
For example, suppose we have a chess board with a game in play and want to select the best next move. Our class that inherits IEnvironment needs to supply a method that returns the viability of an individual - i.e. how sensible a move is.
Genes are created that specify which piece to move and which of it's possible end positions to chose. The population is seeded with a random set of individuals with a random mix of these genes.
The population is allowed to breed and then the bottom half are culled. This process is repeated a number of times until the population has a zero (or prechosen very low) viability spread. An individual in this population fits our best move.
The power of this framework is that it can be mapped to a huge range of problems by setting the environment and genes and the same underlying processes can be used to solve these problems.
Anyway - that is where I have got to. Any thoughts?
Originally posted by aafuss Ican do interface framrworks in VB6-since it'll run on 9.x too-for ev, unlike net wihichis drev.-nt based only,.
Just to clear up this, .Net apps can run on Win 98 and up. It isn't just NT based. So the only Win OS it doesn't support is Win 95 (it is now over 8 years old, isn't that decades in computing?).
(it is now over 8 years old, isn't that decades in computing?).
I hope not or that would make me even more ancient
I don't think the lack of support for Win95 would be a major worry as this is the kind of thing that is mainly of interest to .Net developers and they aren't running old OSes anyway...
Just my couple of pennies worth (thoughts that may have no credibility).
IRule represents a guideline in which an action can take place.
IRating represents the worth of a completed action.
I suppose that either or both of these could be infact implementations of IGene...
Applied to your chess example, instances of IRule would tell the instances of IGene what the valid moves are and instances of IRating would determine which of the possible moves best satisfies the "Cause and Effect" of making each move.
Applied to your chess example, instances of IRule would tell the instances of IGene what the valid moves are
I think that the environment would terminate any gene stes that resulted in an invalid move and then the healthiest individual from the remaining population would be the best move..
This allows the framework to deal with situations where we don't know the rules for certain, but just know how to tell a good answer from a bad one. e.g. speech recognition, decryption etc.
It's been a long time but I finally have a "hello world" level demonstartion of this.
It is a "Mastermind" game that the program tries to evolve the solution to. You can adjust the number of pegs and population size to see how that affects the number of steps needed to find a solution.