RNG Changes: A Single Stream

Previously, CIlib handled random number generation by creating a new stream of random numbers for each RandomProvider that was created. This made it very difficult (read: impossible) to reproduce the results of simulations.

The new changes that were merged recently fixes this by using one RNG per sample. This post will explain how to use the new system.

CIlib 0.7.5 Released

The 0.7.5 release of CIlib has been staged. The release consists of many changes from various contributors. We would like to thank everyone for the contributions to this release. What follows are the main highlights for the 0.7.5 release.

Netbeans, CIlib and SBT

This is a step-by-step guide to using Netbeans as your IDE for developing CIlib. It is assumed that SBT 0.11.3, Scala 2.9.1 or later, and Netbeans 7.1 are installed and that the latest CIlib source code has been retrieved.

New Packaging, Usage and Removal of Simulator Scripts

In the past, CIlib was released as a distribution and included a few artifacts:

• That actual CIlib “fat” jar file (together with external dependencies).
• A collection of sample XML documents that defined the specifications for the XML based simulator.
• Shell scripts for users to “run” the simulator, providing a XML specification.

We are continuously trying to improve CIlib and, as such, we have decided to remove the simulator scripts in favor of letting the simulator provide the “running” functionality in the form of an executable jar file.

Math Formulae in Documentation

This has been something that has provided an unending amount of frustration: creating LaTeX style math formula on the web. That being said, I’m very thankful to oscarvarto on the IRC channel for pointing us towards a little library called MathJax.

We will be using this to produce proper documentation for math formulae. I believe that this is a good step forward for our CIlib documentation effort. As a teaser of the formulae that will be available, the standard PSO velocity update equation is given below (this includes the inertia component):

This should provide us with better tools going forward :)

Niching Makeover: Part 1

The niching package has recently had a major refactor. This post and a few later ones will explain the changes and how to use them.

Simplified Domain String Grammar

The need to change domain string grammar

Defining a domain for use within a simulation is allowed within CIlib as a simple string, such as:

R(-10.0,3.0)^7,Z(0,1),B^2,R(0.0,5.0)


The notation is simple enough, but it is unfortunately difficult to work with because the ‘,’ token is overloaded to be both a separator for individual dimensions within the domain definitions as well as being the separator for lower and upper bound definitions within the dimension as well.

Recent Changes in Master

A couple of patches recently made their way into the master branch of CIlib which affect the way CIlib is used. The changes were made to the stopping conditions, topologies and control parameters.