Tuesday, April 6, 2010

Pruning

Due to time issues and other problems I have cut back on my goal!
I figure with a fully working genome system I have answered my research question. While I would like to finish the genetic logic component, that is not key at the moment!

Will post my abstract soon!

Wednesday, March 24, 2010

Ongoing VE issue ++

The issue with qMars giving no winner is a still a gigantic problem. I can't get it to work no matter what I try. this is causing serious delays creating the mutate funtion working.

Another thing that is causing issues with the mutate funcion is the fact that I have restructured the backend code so that the genetic logic is a now static class(I don't even know why I had it as an object in the first place!). This is now giving me crazy linking errors.

Monday, March 15, 2010

Sorry!

I have been crazy busy with another project!
But I'm back now!

There has been issues recently getting the virtual environment working. Having gone with qMars for the 1st environment I am having issues getting combat to work correctly and I'm not all that sure it's my fault! I have submitted two bots to the system and I can get them to fight but each time it's a draw!

In aries they can fight correctly but in qMars it's a no winner every time.

Tuesday, February 23, 2010

Genome Inplemention

I now have a full working implementation of the back end genome.
While I have based the structure of my electronic genome on the structure of the biological genome I don't have my fancy little graph set up yet so I won't talk about it.

Here is an actual example developed by my Origin system.


This is 001BF:

;Gen:
;Name:
;Number of Copies:

;redcode-94

SPL <226, 672

end


This is 001BF's genome:

11#0#88#/$call$/(1+_Dup_Cha)
11#10#3#$/$Var$/(1_Dup_Cha)
11#10#1#/$Symbol$/(0-1_Dup_Per)
11#5#3#/$Var$/(1_Dup_Cha)
11#4#1#/$Symbol$/(0-1_Dup_Per)


I can see at least two bugs in the above output bug these are both aesthetic bugs and will not effect the genetic outcome.


My plan is to get the VE for redcode up and running tomorrow and after that have a hop off the genetic algorithm.
Before I can properly run at the mutation code I will need to go back and edit LML. At the moment there is very little control over the chances of mutation or how severe the mutation will be. If I bring in a weight system instead of the current "Per" and "Cha" stuff there will be more flexibility in the way I can set small changes to happen frequently, big ones to happen infrequently or any combination of the above.

Wednesday, February 17, 2010

Ignore me - Work Log 3

The structure of the genome has been decided.

Its:

lineNumber#Beginning of Call#Length of Call#LML structure of the call

eg:

11#4#35#/$call$/(1+_Dup_Cha)


I can see an upcoming bug that means that the later done genetic actions will affect the genome of some of the previous ones with out altering them to reflect these changes.

Function is being written to add the Genome files to the project file.

Tuesday, February 9, 2010

Ignore me - Work Log 2

The Genetic System is currently returning the function call name instead of the actual call.
Backward engineering is the best way I can figure to find this bug hidden in 150 lines of uncommented, recursive, IO implementing genetic logic.

The fix for the previous Dir get bug did not work. has been reedited to properly align with the vector.

Genetic logic is back up and working. The first run and all subsequent runs have been separated.

Wednesday, February 3, 2010

Ignore me - Work Log

".." bug in the checkDir() fixed. Was caused due to FindNextFile() being called at the wrong time.
Fixed waterfall issue in Project with project names incorrectly listed.

I kinda wish the above bug was different as it means the file read issues in GenLogic are unrelated.



Genome Structure:

"LineNumber"--"callName"("1+_Dup_Cha")"StringStart","StringEnd"

Afterchange
if(LineNumOfChange == LineNum)
{
StringStart && StringEnd - DifferenceInpreviousStat;
}

Wednesday, January 27, 2010

I work on Valve time.

I have decided to implement a back-end genome. This is largely because the solution I am implementing at the moment is akin to random guessing.



For each entity there will be a corresponding genome saved in my system that can keep track of exactly what is being/can be edited this will allow my system a certain degree of fuzzy logic when it comes to dealing with other languages.

The genome will track exactly what is in the entity on the sub-string level.

Monday, January 25, 2010

Who actually keeps new year resolutions?

Back in college and beginning a more intensive approach to this project.

Currently working on getting a back-end genome system working. I'll throw together a picture for yee tomorrow.

Friday, January 1, 2010

New Year

As part of my new years resolution I will posting here every day.

I have also have created an image for my project, the glider.


LML

One of the biggest issues that my system will have is being able to understand and manipulate any language. My plan for this is to get the user to quantify there language into a set mark-up language. For this purpose I created a language mark-up language or LML.


This part is needed to force the user to translate there language into a format that my genetic logic can deal with, need to be broad enough to be able to cover most modern languages. I also needed to be easy enough to learn so that anyone could use it. But one of the most important issues was the fact it needed to be efficient so that there isn't a gigantic overhead.


/$call$/(1+_Dup_Cha)


The above line is an example of LML. It indicates that a line from the “call” file is needed. The 1+ means there will be one or more instances of the line in the entity. Dup means that there can be identical lines in the system, the opposite of Dup is Uni which insures the line is unique. Cha means that the genetic logic can alter the line later with out the fear the program will break.


Implementing Corewar


Corewar is the first virtual environment that I have implemented. The entities that it runs are written in redcode, form of assembly. This is is a language with a very small grammar. It has only 16 calls. A small working bot can be written quickly but a complex and efficient one takes a lot of work.



@@Corewar

@@Main

/|/ Ver 5 of ml.

/|/ Core of corewars set


--;Gen:

--;Name:

--;Number of Copies:


;redcode-94


/$call$/(1+_Dup_Cha)


end



Above is the main centre of the redcode LML.

Below is one of the first entities in the redcode language, 00007.red.



;Gen:

;Name:

;Number of Copies:


;redcode-94


JMP <31,>


end



To display corewar battles I will be using Aries, a detailed and really good looking gui for corewar. For the actual evolution part I will use qMars[3]. This is a library that a client can pass redcode entities to and will return who wins as well as how well they won by and any other information I will need.


At the moment my system is not properly handling the fitness but this is an issue that can be fixed down the line.

Sunday, December 6, 2009

I luled

int ***values;

Thursday, November 19, 2009

WIN


Celebration dance cat is dancing in celebration of genetic logic.

Expect 3 posts this weekend

Tuesday, October 27, 2009

FYP Presentaion

Wednesday 21st of October, on a cold wet morning 6 student were slowly roast, much to the joy of the 3 baying lecturers.
I'm exaggerating, but nobody got out of the presentation without a solid attack on there project.

Here is a copy of my slides:




















Some of the best questions I was ask at the end are;


How is this different from the traditional GP paradigm?

Why are you using genetic programming?

What sort if API's do your virtual environment's have?


I won't answer these now but they will leak out eventually.

Friday, October 23, 2009

Updated timetable

This is the updated timetable.


Milestone 1 Deciding and coding of the XML format 31st Oct

Milestone 2 Programming of Genetic logic 28th Nov

Milestone 3 First working entity 25th Dec

Milestone 4 Second working VE 17th Jan

Incremental addition of more VE's as time permits


Those of you paying attention will notice that the distributed part of the project has been dropped. Time is the main reason for this tho I hope to re-include it again before the end.


There will be a post regarding my presentation up soon.............

Monday, October 12, 2009

Code has Begun!

C++ is pouring out.
1st on the hitlist, file structure.

Monday, October 5, 2009

Timeline Change

I have started working on the ml first. This is because, while the distrubited aspect is not critical to making a prototype, the markup language is.

Expect a post with the update time table soon.

Friday, October 2, 2009

Forum Transcript

This is of little project value but I found it humours. These are the people I go to for /prog/ramming help.


C# vs C++

1

I'm not looking to start some sort of fanboy arguement.

Is the ease in development brought by C# worth more than the power/speed of C++?

I'm writing a genetic algorithim so speed is pretty important.
I can't find any legit benchmark test so I'm lookin for oppinions here.

2

OMG PONIES

3

I'm not looking to start some sort of fanboy arguement.
Now you have 2 problems.

4

Who the fuck even uses C# ? Just use sepples.

5

On behalf of C#, I have to say, that LINQ thing looks pretty interesting. But I never used it, so what the fuck do I know?

6

>>1
Is the ease in development brought by C# worth more than the power/speed of C++?
C++ has no power or speed. However, in reality, ease of development trumps both of those most of the time anyway.

But for a genetic algorithm, use C. Preferably C calls from a Foreign Function Interface of a higher level language.

7

C# is only good if you want to make money

8

>>5
I have used LINQ and can tell you it's fucking amazing. Being able to write queries directly in the language is a major advantage, and that LINQ works against many different types of things (objects, XML, SQL, Entities, etc.) is even better.

9

>>8
Does it gain you all that much over list expressions when you're not dealing with SQL? I haven't seen many compelling examples.

10

>>1
Sepples is only worthwhile for things that absolutely need the performance and would benefit from the features of Sepples, e.g. inheritance.

Games are a specific problem domain that work decently with Sepples, but that's about it. Outside of gaming, there really isn't much use in Sepples.

Almost all other languages do other functions better, e.g. C for device drivers, C#, D, Delphi, etc. for userspace, and so on.

11

>>1
I can't find any legit benchmark test
That's because no such thing exists


Thursday, October 1, 2009

Genetic Logic

What do I need this part of the system to do?
This part is where the guts of the work will take place. I need a system that can interpret my markup language and apply generational logic to it. A mutation system and a way remove the least fit from every generation.


How will it do this?
There are a few(read thousands) libraries out there for genetic algorithms. I have not decided which one I will be using, or if i will be making my own.

Further reading
http://lancet.mit.edu/ga/

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.19.1906&rep=rep1&type=pdf

Monday, September 28, 2009

Markup Language

What do I need this part of the system to do?
This part is needed to force the user to translate there language into a format that my genetic logic can deal with, need to be broad enough to be able to cover most/all modern languages, needs to be easy enough to learn, needs to be efficient so that there isn't a gigantic overhead


How will it do this?
I will be creating my own style markup language. The exact style has yet to be decided. With a combination of several levels and termination sets it should work well with the genetic logic.

This is NOT a compiler, tho I will be reading compiler books and papers as the natural language processing is similar.

Further reading

Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. ('2006'). Compilers - Principles, Techniques and Tools.