Adam Stirtan

I've finished my XNA simulation for my machine learning course this previous semester and am posting my resulting source code for all those interested. The project was an open ended venture in to machine learning. I chose to implement evolutionary neural networks and perform a comparative analysis between two biologically inspired algorithms as the basis for the neural network's weight adjustments.

The simulation involves no user interaction beyond the included Settings.ini file where parameters of the simulation can be adjusted. This includes learning rates, PSO and GA settings and how long the simulation runs per generation.

If someone is looking for a proper implementation of a neural network in C# one can surely be found here which could be used in any area of necessity, there is nothing specific to this project.

Using just about all fathomable parameters I have found with this experimentation that PSO finds more optimal weights for the neural networks. They are found faster and retainment of these solutions are better compared to GA. However it should be noted that adaptive mutation is not implemented; that approach would likely increase the chances for GA to consistently compete in later generations.

Sorry, source code has been removed by request. An upcoming assignment would pretty much be solved if left available. Check back later!

Evolutionary Tanks

Here is the latest video from my machine learning course. This is my term project where I use evolutionary algorithms for weight updates in an artificial neural network. It was written to simulate a game for a better visual understanding of the learning capabilities. More statistics are going to be included, but I thought I'd share with everyone and bask in the glory that the learning is in fact taking place.

Blue tanks update using a genetic algorithm and red tanks use particle swarm optimization. This is a snapshot of several successive generations starting from the beginning all the way to where over fitting has occurred.

Once I clean up the source code more I'll share it here as well.

Engagement Photos

Here's a quick gallery of some of recently taken engagement photos. They turned out really well, by that I mean of course I don't look like an idiot in all of them.

Particle Swarm Optimization Tutorial Slides

Tomorrow marks the day of a seminar I will be holding in my Machine Learning course at Brock University. I have made my power point presentation slides available to all those interested. It provides an overview of how the optimization technique is formulated from biological inspirations to algorithm implementation to applications and examples. It features short videos found on the Internet and a sample video of my Mario PSO agent in its latest form.

It is targeted to a person with no such familiarity in PSO with a background in computer science or at least a passion for artificial intelligence.

PSO Agent

Tonight I've organized my presentation for this coming Thursday. I will be holding a seminar in Machine Learning giving a tutorial on particle swarm optimization. As a part included in the presentation I'm demonstrating my Mario agent. Here is the latest video included in the slides. Note: It is still a work in progress but is clearly miles ahead of the last video which was posted.

The main difference between the two videos is this agent is being optimized in a very high dimensional space compared to the first one.

Automatic Torrent Starting with Dropbox and uTorrent

Here is just a quick tip for simplifying things a bit. Users of popular torrent client uTorrent can use their Dropbox (www.dropbox.com) account to automatically start torrents while away from their PC.

1. Create a folder in your Dropbox where you will put .torrent files
2. Enable this setting in the Preferences for uTorrent

Now whenever you put a torrent in that folder, your home PC will sync through Dropbox and uTorrent will load the torrent file.

For those with iPhones and Dropbox, well, I don't need to tell you about the potential here.

Image Posterization

Last night I decided to change my wallpaper. I usually keep something for a really long time on there that I absolutely love. So every now and then I need to keep it fresh. I settled on a cell shaded render of Master Chief from Halo 3 and that got my interested in making my own. My friend Jake is the Jesus of non photo-realistic rendering (NPR) so I set out to get some answers. (Side note: you can check out his work here)

It turns out that 2D image's aren't really turned in to cell shaded, that's more a 3D approach. Perhaps I should have listened more when Jake added cell shading to our ray tracer last year, but that's how it goes, I never listen to anyone. What I was looking for if anything at all was called posterization.

So I checked out the wiki page, I did a Google search and finally got a complete idea of how it's done. Then, I quickly hammered together a little C# application which implements the posterization algorithm.

Here are my results. In honor of Jake, I used his picture, I'm sure he'll be mad, but that's the point. The slider parameter controls how many areas of colors are to be seen. As far as I can tell it looks identical to Photoshop's Posterize filter.


Iif I can figure out how to upload files to Blogger I'll share the source code with everyone. It's really quite simple. But now, on to better things, like coffee and wedding photographers.