Friday, 27 July 2012

Hello Tarflex, RU gets updated and wiki page on Esolang

First of all, I'd like to introduce you to Tarflex. It's a reflective Turing tarpit. In short the whole program is treated as a list of lists consisting of simple instructions, and some of these instructions can perform operations on the lists.

And second of all, I've added the ability to export RU programs as HTML tables or Wiki tables.
RU has also made it on Esolang - probably the best resource for esoteric programming languages --> link

Here's an HTML table!
    >>>>>>++ v            
   v<<<<<<++ <            
   > ><<>>>> +  << +   v  
     v     +>>   -<<<< <  
     >>> ->> +  >> -   v  
   ^        -->> v #>> <  

Saturday, 21 July 2012

RU online interpreter is up and running

It's been almost 2 years since I devised Robot Unlock. Due to the positive feedback and seeing how people shared solutions for levels online I thought Robot Unlock is a fun toy language and deserves more development. That is why I have made an online interpreter for the language. You can program in it and share your marvels with others.

In the future I will add more instruction sets (some more expressive, some more restrictive and some quirky ones too).

Mudboy salutes you!

Saturday, 14 July 2012

From Under the Rock

This is my entry for miniLD #36 (Contrast)
Download link for Windows/Linux/OSX + Source:
Explore, listen, see, taste.

Monday, 2 July 2012

Global Optimization to the max!

GOAT, or Global Optimization AT is a framework/sandbox for testing of global optimization algorithms. I've started tinkering with optimization algorithms back in feb 2011 and this whole thing ended up becoming my bachelor's thesis. Now I think the project is mature (ok, it still needs some tidying up) and modular enough so that others can build on it too. That's why I have released it under the GNU GPL on GitHub.

Thus far its main components are:
  1. A function plotter to see how objective functions look like and why they're so much of a challenge. It also points out where candidate solutions are at every iteration in the search space
  2. Basic benchmarking features - so that one can compare the performance of different algorithms
  3. An implementation of Genetic Algorithms and many variations
  4. Here's a list of operators and variations implementd thus far:

    • [Standard stuff]
      Tournament and Roulette wheel selection
      Singlepoint, 2-point and uniform crossover
      Uniform mutation

    • [Not so standard stuff]
      Population reduction
      Random immigrants

    • [Unique* as far as I know]
      Biased crossover (inheriting the significant part of a chromosome from the better parent)
      Non-uniform mutation with dynamic parameters
      Growth (a hillclimbing step each generation)
      Some methods to adjust selection pressure at runtime ("Damping functions")

      *I haven't found any mention of the last 4 variations. As far as I know they're my original contributions, but I'm sure someone else interested in the field has thought of them already and documented these...

  5. An inplementation of the Particle Swarm Optimization algorithm and variations.
    Here are some features implemented for PSO:

    • Nighbour networks
    • Population reduction
    • Random immigrants

...and here's a list of things I'm planning to implement:
  1. Split the application in 2 parts: one entitled "demo mode" - this should be used to see how the simulation progresses with fancy 3D graphics and one entitled "benchmark mode" for well... benchmarking. It will probably run simultaneous jobs to minimize the time it takes to benchmark
  2. Add more objective functions
  3. Add more optimization algorithms