Kriss Jessop About Me Projects Personal Projects RPGs

Algorithm: Stochastic Diffusion Search

Posted on October 23rd, 2016

Stochastic Diffusion Search is a search algorithm that can take the form of either a neural network or a swarm and attempts an optimal application of resources. The agents scatter randomly across the search area and keep searching random locations until either they or one of their neighbours find a location that they determine to be good. An agent that finds a good location tries to take a neighbour to that location (which will in-turn judge whether it believes the location to be good, or bad, and do the same), while an agent that fails to find a good location will follow a neighbour that has, given the opportunity.

In this post, we’ll be exploring the application of Dispersive Flies Optimisation, as originally pondered in my previous post. Specifically, we’ll discuss applying DFO to AirBnB data, as the AirBnB data is readily available with very little effort. I will be referring to the data provided for London, however all of the available data should be the same.

There are probably loads of ways we can apply DFO to search this information; I’m going to be looking for the best place to stay.

It’s quite curious that at the time of writing, this algorithm doesn’t have so much as a Wikipedia page. Heck, a cursory Google search implies that the individual who came up with it is the very same guy who asked for people to think about it.

Yeah, you! I know you’re out there Mohammad!

Dispersive Flies Optimisation

page1-800px-sphere_function_in_3d-pdfDispersive Flies Optimisation (DFO) is a swarm intelligence algorithm that aims to find the best piece of data in a matrix. How good a piece of data (referred to as an agent) is, is judged by its fitness. An agent contains data, or I suppose metadata, such as a location, among other possible things. The flies are then scattered across various locations within the data and set to finding the optimal location, which is either the lowest possible fitness, or highest.

The No Free Lunch Theorem

Posted on September 29th, 2016

There are two dominant No Free Lunch theorem’s that relate to computing. One is focused towards search and optimisation, while the other is for supervised machine learning.

The Key Point

Eric Cai eloquently describes the No Free Lunch theorem in relation to Machine Learning. He describes the theorem as a series of simplifications and assumptions that apply to a problem and it’s solution. In turn, he also points out that the simplifications and assumptions that work for one problem and it’s solution will not nescessarily work on another problem, thus making the solution ineffective.

The “No Free Lunch” theorem states that there is no one model that works best for every problem

The idea that a solution cannot be picked up and applied to another problem without any work at all is most likely the origin of the name.


The original No Free Lunch Theorems for Optimization paper can be found here, if you’re into that kind of thing.

Automated Documentation Generator – Autodex?

Posted on September 19th, 2016

Have you ever read a book and walked away inspired? I found myself reading The Pragmatic Programmer at a friend’s reccomendation. A book full of interesting ideas and advice. In particular, a suggestion of programatically generating documentation struck me as a thing I would find useful. Because let’s admit it, sometimes we forget things about functions, objects, etc. I shall call it, Autodex! Because things need names.

Repurposed CS24-SC – Home Server

Posted on July 21st, 2016

2016-02-18 23.31.58

This is a Dell CS24-SC server, originally created for Facebook’s data centres in the US; or at least what remains one. The listing described the unit as faulty when tested, and included a pair of Xeon E5430 2.66Ghz CPU’s, but no ram or hard drvies. The  lister described it as “Will power on, but won’t start.” At £27 including postage, I figured I’d take the gamble. Suitable RAM was another £10, and everything else was at hand. What follows is an overview of my quest to repair it, and set it up as an upgrade to my underpowered home server.

Problem the First

Analysis: Yep. Definately broken. The problem: No CPU’s.

When I lived in a houseshare, one of my housemates always remarked that it never seemed like I actually did anything with my time. So how was it that I was actually meeting dealines with good quality work? Easy: super duper Kriss-level productivity. Perhaps it’s just how I perceve my day that makes me feel like I’ve not done much. When I actually sit down and think about how I manage to get everything done there’s actually a few things I tend to do that keep me going with as little effort as possible.