Tuesday, September 30, 2014

Difficult progress

The code is misbehaving. Also I am having trouble with display. What should I choose to display the movement?
Blender seems like a good choice. Will look into that. It is also written in python.

Once I complete the mapping algo I will move on to the next thing.
Extracting equations from datasets using GA.
I read somewhere that Koza did this. Intentionally not reading up on his work. Will read after my experiment. That way I get to learn stuff on my own and so it sticks.

As the blog link states it is difficult for me to stick to a problem when i keep on failing. I guess that is just what is takes.

Going home for now. Will write again after some work.

Tuesday, September 23, 2014

Simple map navigation

This is now an official attempt to navigate a given map using genetic algorithms. I will be using the techniques explained in the previous post.
Genetic algorithms.
Look at the git page.

Now to explain the code.

  1. The gene
    1. The gene is composed of 'l' 'r' 'u' 'd'.
    2. each letter corresponds to a left, right up down movement on the map.
  2. The map
    1. the map is composed of empty spaces
    2. walls are determined by '0'
    3. entry point is 1
    4. target is 2
  3. The roulette function
    1. This can select a gene from a population based on the weights.
    2. It can select max and min fitness
With that done ill leace the rest of the code to be seen and read by you.

Monday, September 22, 2014

Genetic Algorithms

After a week of reading I see that we need to start with Genetic Algorithms.
So here is a brief description of what ill be making over the course of next week.

In a general algorithm for computing we see that alll the steps are defined by the programmer beforehand.

In GA we try to encode the solution set to be represented in a genome. This genome is simply a collection of instructions which when followed will lead to a solution.

This solution may not be optimum, it might even be barely solving the problem. However it is a solution.

eg. A good example is a collection of directions. 'lrlrllrrlrlllr'
This might not get the vehicle to the objective. However it is a possible solution.

First we create a population of these genomes. Thus the task of solving the problem is reduced to simply correctly representing the problem's solution  in a genome.

After this, we simply let the population evolve using two techniques. Crossover and Mutation rate. The evolution creates very optimized solutions for the problem due to natural selection.

In GAs the natural selection is carried out by the 'fitness' function. The method by which the fitness,crossover and mutation functions do their tasks may be varied to have different results.

Thus genetic algorithms are very good for searching things where the solution space is very large.
eg. If you need to search for a specific mathematical equation which correctly predicts a given data set, the search space is essentially all the possible mathematical equations. Here exhaustive searching will take a long time. Thus GAs will prove to be useful here.

Tuesday, September 16, 2014

Changing goals

It looks like Ive taken up a bit too much here.
Its too wide a topic for me to just jump in. Ill be closing it down.

What Ill start with instead is the Genetic Algorithm method.
Well try to extract equations from raw datasets using genetic algorithms.

So here goes nothing. I know I should be using lisp but for the sake of my sanity..Ill continue with python for just a bit longer.

Ill be uploading the code tomorrow.

Sunday, September 14, 2014

No direction

Simply put.
I dont know where to start.

The first few commits have been done to the parallel computing repo but frankly speaking i dont know where to start.

This is what Ive decided.

Build the comms module completely. Will need help. Please feel free to contribute.

Saturday, September 13, 2014

Hanging in there

This week was hectic. Practicals and assignments to submit. Back to computing now.
After a little thought Ive decided that before writing the actual unit class Ill write the communication and environment classes.

Hence the first communication class.
Writing them in seperate files now as later on Ill reorganize and make a neat package out of it.

Will try to keep the dependencies down.

Here is the Git page

Tuesday, September 9, 2014

The basic unit

Al right.
Ill be writing a basic unit class in python soon. Will be available in the git page.

Feedback is welcome.

To write a unit class that covers the general functions and properties of every type of unit which needs to be made.

  1. Communication
  2. Processing wrappers
  3. Performance tests
  4. Genetic algorithmic learning(Need to work on this)

See you people soon

Sunday, September 7, 2014

Local Call centers

I looked into some local call centers.
The way they work is simple.Let me try and explain this in a dry and aabstract way.

  1. All employees are capable of any post in the system. 
  2. All of them are recruited at the slave level. 
    1. A slave is an employee who actually does the talking during a call.
  3. There are teams of 5-10 slaves all headed by a team leader. 
    1. A team leader simply coordinates and measures performance of the team. It then submits the performance reports to Overseers
  4. There are 10-15 team leaders under one overseer
    1. The overseer manages team efficiency and shuffels teams.
    2. It collects reports from team leaders and thus manages them.
  5. 3-5 overseers collaborate to make a section work.
    1. Each section can be thought of as an individual cluster.
    2. Each section reports it's performance to a master.
  6. There is one master per system.
    1. The master manages sections.
    2. It makes the large scale decisions regarding the sections
    3. It may drop in for inspection[;-)]

Now with this structure in mind and taking a look at Genetic Algorithms and a popular neural network tutorial on the internet(here). Ill try and write some code relating to this structure.

I have decided on a communication structure. Im trying to emulate 'choice' here.
  1. Any employee can talk to any employee.
    1. Any communication has two parts.
      1. Asking
        1. The initiating employee must ask for something.
        2. This something has to be an object.
      2. Replying
        1. The employee being asked can decide to reply or not.
        2. The employee can decide to reply truthfully or not. Right now I will just implement it for an entirely truthful population
  2. All communication must be through the proper channels defined in the structure above.
  3. However communication between any two employees is possible.  Deviating from the structure costs efficiency.
  4. Talking takes time, thus efficiency.

I will be using python for the sake of sanity. When a code is generally accepted I will convert to C++ or some other appropriately faster language. Or maybe just use Jython or something similar.

Please pick out any faults in my code. It will be appreciated.
Ill post the github link soon.
Here is the link to the github page.

Saturday, September 6, 2014

Looking for examples

Before beginning any work I must look for real life examples.
The first that comes to mind is a call center.

Thousands of employees attending to a wide range of customers but essestially all attending calls.
All processing that huge amount of data in parallel. No bottlenecks and very little serialization.

Ill probably call my uncle who works in one of these things. Study call centers and get back to you people.

Thursday, September 4, 2014

Interesting things

Just read Engines of the Mind by Joel N. Shurkin.
After all these years I can finally relate the invention of Computers to something real. Thank you Joel.

Ill be starting my research into parallel computing and AI soon. This is because of something I have come to realize and accept. There is no higher purpose. We need to create our own purpose.
I have decided that I will create a being not unlike myself. For that I first need to understand how i work.

Wish me luck