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.

Sunday, September 27, 2009

Distributed System

What do I need this part of the system to do?

Pass out the files containing all information that a system will need to run the VE and genetic algorithm. Return a log file to the master machine. Run checks to insure the others machines are accessible and how far along they are in there current generation.


How will it do this?

A simple combination of messages and acknowledgments will do for the running checks bit. FTP protocols will be used to send the Files across.
A separate tread will be need to listen for calls so that ongoing work will not be effected.

Further reading

www.code.google.com/edu/parallel/dsd-tutorial.html

Book: Optimization using distributed genetic algorithms
ISBN: 978-3-540-54148-6
Publisher: Springer Berlin / Heidelberg

Plans

As some of ye may have noticed I have split my project into three separate sections. These are the distributed logic, that will establish and maintain the external client machines, the markup language, that will be used to record the syntax of the entities language, and the genetic logic, which will do the mutation and recombination of my entities.

I'll be throwing up three posts in quick succession detailing exactly what ,why and how these sections will work.

First up, Distributed logic.

Thursday, September 24, 2009

Some Interesting Reading

http://cs.conncoll.edu/comp112-3/GA_shooter.pdf

http://www.cs.bgu.ac.il/~sipper/papabs/eurogprobo-final.pdf


There is loads more out there, I post them as I come across them. Respect to these guys.

This weekend is going to be very educating.

She's not UML but she'll do for the moment


Monday, September 21, 2009

My big crazy over the top timeline!!!!

Here is my intended timelines. I'll be posting three versions. The first will be my overly optimistic plan. The second will have slightly more realism. The third will be my emergence plan, the plan I use when everything is going tits up and I just need something that will pass me.


_______________________________________________

Plan 1

Milestone 1: Set up of distributed system: 4th Oct
Milestone 2: Deciding and coding of the XML format: 18th Oct
Milestone 3: Programming of Genetic logic: 1st Nov

Time off for exam studying.

Milestone 4: First working entity: 25th Dec
Milestone 5: Second working VE: 17th Jan

Out there ideas: Getting CStike working. Having 5 VE's. Full How-To guide. Having an external party use my system.

_______________________________________________


Plan 2

Milestone 1: Set up of distributed system: 11th Oct
Milestone 2: Deciding and coding of XML format: 1st Nov

Time off for exam studying.

Milestone 3: Program genetic logic: 25th Dec
Milestone 4: First working entity: 17th Jan
Milestone 5: Second working VE: 14th Feb

Out there ideas: 3 working VE's.
_______________________________________________


Plan 3

Milestone 1: Deciding I'm screwed. 3weeks before deadline
Milestone 2: Desperately creating genetic logic. 1.5 weeks
Milestone 3: Forcing Corewar to work with it. 1 week
Milestone 4: Manically writing report. .5 week

Out there ideas: Not failing

_______________________________________________


All these plan are subject to change depending on other events. I'll set up a widget to track how I'm going with my milestones.

Monday, September 14, 2009

Confusing? My posts? Never!

I've decided to throw up a clearer outline of what my system will do. Partly because I'll need it in a few weeks for a presentation and mostly because I'm sick of explaining it to people.

My program will be passed a potential syntax, all possible calls, cmd's for compilation of the previously mentioned syntax, IP addresses of other available machines and a virtual environment (VE). Using the potential syntax the program will genetically create AI's for the passed virtual environment.

What this means is that, my program will be able to efficiently create controller class for any object in any virtual environment. Manually creating controller classes can take upwards of a month for large and complex VE's. Even then you don't know if your result is the most efficient. My system will be structured in such a way that one person will need less than 8 hours to set it running and you are guarantied to the get the most efficient output. (eventually)

For all those still confused I'll be outting together a flow chart later.

OS Decided

The winner is..........


My rational behind this was based on the VE post.
I know all those things work on Widows platform while it could be an uphill strugle if I decide to use the others.
I'll be using 32 bit XP.

Saturday, September 12, 2009

Virtual Enviroments

In this project I'll be working with several virtual environments. The goal is to get at least two working with my system to prove it's modularity, but I hope to have three or more running by the end.

Corewar




This will probably be my first test field. It's a game created in the 80's and and tho old is still activity being played by large groups on the Internet. Two bots created in RedCode, a form of assembly, fight over the memory locations on a virtual computer. The game contains a relatively small set of commands so it will hopefully be an easy and simple environment to test my system to on.

Edited to correct glaring mistakes on my part

RoboCode



This is another game quite similar to Care War. It is of far greater complexity tho, so once I have decided the system works I will escalate it to this. The idea of the game to have two or more bots, which have been written in Java, fight. There have been several other bots for robocode written genetically so it will give me a good idea how my genetic algorithm logic compares (expect a post on this soon)


Engineering VE

For my 3rd Environment I'd like to work on a system where the fitness of the current generation was not in comparison to another. I'm currently looking to find a free VE that involves possible robotic arm movement or something similar. Preferably with industry applications. The college has a program like this is a separate research stream. I'll see what I can do about robing it.


Counter Strike 1.6



This is the most complex set up I could figure. This is only if I have time to spare towards the end of the development cycle. A relatively complex VE that would require advanced movement, action and reaction algorithms to be considered fit in. There is issues due to the waypoint technology some bots are based on, an alternative method would need to be found. A 3rd party interface like BotMans setup would also be required.

But a man can dream.



There you go. Potential Virtual Environments that I plan on testing my system with. This will probably change issues arise.

Friday, August 28, 2009

The OS decision!

This is going to one of the more controversial decisions I'll make so I decided to shunt all possible responsibility away from myself. I asked a /prog/graming message board that I frequent what OS would be best for my project (or is runtime differences so minuscule that I shouldn't care).

I got a wide variety of responses so I decided it would be worth spending a day or so looking into them.

Plan9 -> Inferno

This one grabbed my interest pretty quickly. A distributed OS created by Bell labs you say? One of it's main goals seems to be to to provide client machines as work places. It has GCC, gossip has that it'll run Java. Sounds good, too good. The one issue here is the lack of virtual environments for working with.

And being UNIX based everything is going to be an uphill battle to get working.


Solaris

This seem an unusual system to pick but I thought I'd look into it anyway. "Solaris is very Windows NT" was the first phrase my search turned up. Temped to write it off after just reading that, but no, I am too professional to walk away. Has all the compilers. But the main virtual environments I plan to use don't seem to able to run on it, or at least haven't been properly tested yet. (I realise now I haven't talked about my intended Virtual Environments yet, I'll fix that soon)

I can't see any reason why I would leave Windows for Solaris.

MINIX (For some unknown reason)
I figure this was thrown in as a joke. The one reason I'm mentioning it is because of the man, no, the LEGEND who made it, Andrew S. Tanenbaum. People who know of him know what I mean. People who don't need to read more.

And no, the OS doesn't have what I need.

Windows
What do I need to say here. I was raised in a DOS environment. For all it's flaws, It's were I'm most comfortable.

Tho I do kinda want to experiment.

Ubuntu/Mint (Or some other filthy linux swapout)
This is one of the better options. It'll have the compilers and platforms I need and the support I'll want. I'll also need to do a bit of research into WINE to see what it is possible to call and use. Definitely possible.



While a the professionals disagreed on the OS they all agreed that the structure of my distribution and the programs efficiency was far more important that niggling little differences between runtimes.

So the plan from here is:
Do some more research into Plan9
Once I decide that's a bust look a bit harder into Ubuntu

I'm not going to seal myself into an OS just yet. Deadline for that is September 14th.

Expect a post soon regarding my plan virtual environment test cases.

Thursday, August 27, 2009

Meeting

I got my first meeting with my supervisor last Monday.

It went pretty well. He seems pretty interested in the idea and will endorse it to the college. Chris is a good guy and it doesn't seem like he'll interfere with the development too much. I got a big speech on how I have to start working early and often. I think he has me confused with some sort of lazy student!

Now that I have confirmation that this is the idea I'll be moving forward with I can start thinking about the little things. As I'm looking at a multi treaded system I'll need to decide on an OS earlier rather than later. Going to do a bit of reasearch.

Saturday, August 22, 2009

First Swing

Ok, here is the first overview of the project. This is what I got provisionally accepted by my supervisor.

"In this project I plan to create a program that can be used to genetically create a controller for entities in a simulated environment. My goal is for it to be as independent as possible. The end user should be able genetically create any entity for any language for any virtual environment with out touching my code. All they should have to do is pass the program the structure of acceptable outputs, possible acceptable calls, a .cmd that will compile the created entities and a .cmd that will run the entities in the environment and return fitness. It is also my intention to make the system distributed allowing generations to be passed off to other systems potentially exponentially increasing run time."

Ignoring the poor English, vague descriptions and technical failings; you can see what I'm getting at. My hope is that it'll keep me interested and willing to code. While I have worked on projects this large before, i've never had one that going to be streched over this length on time. While I'm all keen now. Will I be willing to stay up till 4am in six months time to work on it?

We'll find out.

I have a meeting next Monday with my supervisor. It'll be the first chance I'll have to properly go over the technical specs with him. Lets see how that goes....

Tuesday, August 18, 2009

The Beginning

This is going to be a timeline of the development cycle of my FYP. It's mostly for my own note taking and to make report writing easier. Beware anyone who looks to this for a proper idea for how my project is going, it will be nothing but poorly formed ideas and half finished rants.

Project overview to come.