Make-Believe (R12): Continuous Improvement

Ack! The previous version I posted had broken the ability to enter evidence, and due to an extended period of busyness, I didn’t notice until now. (No regression tests yet — I do this for fun.) Oh well, thankfully no-one is paying attention.

Given the long period since the last update, I thought I’d try adding something a bit more interesting this time — initial support for continuous nodes. The support I’m providing will match what GeNIe supports as closely as possible. This release includes support for Uniform, Bernoulli, and Normal. It also supports arithmetic operators (e.g. +, *, etc.) as well as the ternary operator (i.e. <if-cond> ? <then> : <else>).  To be clear, that’s just because I’m handing things over to JavaScript. 🙂 I’ll continue to do that because it’s probably the approach with the best performance, but I’ll validate inputs in future. (Just in case people do start loading .xdsl files from suspicious locations.)

It’s also worth pointing out how limited the overall support is at the moment. You can’t enter evidence into a net with continuous nodes. You can’t use the continuous nodes with worker threads. The Normal sampling is very crude. The distributions that are displayed are just histograms up to a maximum of 10 bins. I also haven’t thought about performance yet. As I’ve noted, I do this because I enjoy it, so I’m not rushing things — there’s no need to scoff down the whole dessert at once.

From now on, I’ll put each release in its own folder, so that there’s at least a working version to go back to if I break things again! Here’s Release 12:

Changes:

  • Fixed entering of evidence
  • Improved robustness of saving a bit (note: can’t save continuous nodes at all yet, and probably many other types of node)
  • Initial support for continuous nodes

Make-Believe (R11)

I’ve added a very crude view of node CPTs — just double-click a node. (No support for deterministic nodes yet.) I expect I’ll be improving this in the next iteration. Also, moving nodes around is no longer quite so awful, with arrows updating as you move.

Changes:

  • Arrows update continuously as you move nodes
  • Added viewing of a CPT by double-clicking node

Make-Believe (R9)

Another small update, this time adding a control in the toolbar for the number of iterations that the likelihood weighting algorithm performs. At some point I’m going to need to clean up the toolbar.

Changes:

  • Control to allow changes to the number of iterations of the inference algorithm

Make-Believe and a Late R8

I missed the R8 release from two weeks ago — partly because I forgot, and partly because I was busy — so here it is now. Sadly, there isn’t too much to excite in this release. The main change is the ability to do automatic layout using the dagre.js library. I haven’t tweaked the defaults at all, so the layouts it creates right now aren’t ideal.

Changes:

  • Auto layout using the dagre.js library

Make-Believe R7

The work on R6 allowed me to add an experimental worker thread implementation in this release. Unfortunately, I’m seeing absolutely no performance gain at this stage from it on a multi-core system, so it’s off by default. No other changes in this release.

Changes:

  • Added experimental worker threads (currently worse perf)

Make-Believe R6

For this version, I focused on making some improvements to the backend, disentangling the .xdsl format from the internal BN representation. I also added a crude and experimental save to .xdsl function — expect it to work for basic networks only, and even then less often than not. Here it is:

I’ve also finally put the code on GitHub.

Changes

  • Backend rewrite to remove dependencies on .xdsl format for BN representation and display
  • Extremely experimental .xdsl saving (basic networks only)

Decisions, Decisions

I decided to add some basic support for decisions and utilities in this iteration. Searching for good policies really only works with small decision node sets at this stage (i.e. not too many decision combinations):

Changes:

  • Support for decision nodes
  • Support for utility nodes
  • Expected value calculations for current network
  • Limited search for best set of decisions
  • Status bar shows time taken for last belief update
  • Animated belief bars
  • Performance improvements

Next release: Jan 3rd, 2015

Not Quite Keeping Promises

Ok, so I missed doing the update on the 6th. In my defence, I had no internet connection. (Let’s ignore that I could have planned things better). Release and changelist below.

Make-Believe (R3)

  • Cleaned up the status bar and toolbar so that they work a little more nicely.
  • I also just added a zoom.

I should note that I’m developing and testing in Firefox only, but I occasionally test in other browsers. Next release: 20th December.