The RISO Project
``Think locally, compute globally''

Welcome to the RISO project home page. RISO is an implementation of distributed belief networks in Java. Contact Robert Dodier ( with any questions or comments.

RISO Project Summary page -- download, project status, etc.

RISO wiki -- feel free to visit; not much there yet

Powered by:
SourceForge Logo

The outstanding features of RISO are these:

  1. An attempt is made to handle any kind of conditional probability distribution (not just the usual discrete and conditional Gaussian). This has two aspects:
    • Inference algorithms are phrased in general terms using monotone cubic splines and Gaussian mixtures as approximations to densities, and numerical integration (QAGS in one dimension, quasi-Monte Carlo in two or more) to compute partial results and posterior distributions.
    • However, for some combinations of partial results, there are much faster special algorithms available. RISO tries to determine whether a special algorithm is applicable by examining the types of partial results at run time. A catalog of the special cases exploited by RISO may be found in Appendix C of my dissertation.
  2. RISO supports distributed belief networks, that is, belief networks running on different hosts which are unified into a single larger belief network. The communications medium is the Internet, and the protocol is Java Remote Method Invocation (RMI). A distributed belief network comprising networks in the U.S., Germany, and Turkey was successfully tested. Distributed belief networks make excellent models of functionally or geographically distributed systems.
The motivation for distributed belief networks with arbitrary conditional distributions was to meet the needs of engineering applications. Distributed systems are common, and the conditional distributions involved should be described in the terms used by experts in the field, not whatever is most convenient to the software developer. Several successful applications of RISO to engineering problems are described in my dissertation.

At this time, only polytree networks are supported. I am considering implementing conditioning algorithms or loopy inference for networks which have loops.

RISO supports "afterthought" programming -- interesting applications can be written to execute queries and other operations on belief networks in already-running contexts, by obtaining a remote reference to the belief network of interest; it is not necessary to reload a belief network in order to execute some new operation. This is especially important in distributed applications, in which various belief networks may be under the control of various parties, and it may be inconvenient or impossible to reload a belief network for any specific operation. This "afterthought" style is, of course, similar to the mode of operation of ordinary relational databases -- applications come and go, while the database remains.

Download software

The RISO source code is released under the GNU Public License. See the RISO project page for rpms and tar files containing the source code, compiled classes, documents, and examples.

On the off chance that you arrived here looking for for LBFGS, you can download just the LBFGS Java translation. LBFGS is a limited-memory (i.e., it stores a low-rank approximation instead of the entire Hessian matrix) quasi-Newton method for minimization. The original LBFGS Fortran implementation is at

Dissertation of Robert Dodier

Here are the transparencies from my defense, 4 per page, PDF. These give a summary of what RISO is about.

The RISO project is more completely described by my dissertation, "Unified prediction and diagnosis in engineering systems by means of distributed belief networks" (PostScript, PDF).

Technical papers on aspects of the RISO project can be found in the documents directory.

Online documentation for RISO software

Example RISO belief networks

My dissertation refers to these belief networks.

  • Chapter 1, "An intercontinental belief network."
  • Chapter 4, "Overview of the RISO belief network system." A simple example of a distributed monitoring system. combine refers to the status variables in monitor1, monitor2, and monitor3. The distributed belief network implemented by these four isn't a real application. (Neither is the example from Chapter 1, but you knew that.)
  • Chapter 6, "Belief network idioms for sensors and so on."
    • strange-magnitude.riso, a small belief network which helps answer, "Is the magnitude of a variable larger or smaller than expected?"
    • alt-group.riso, a belief network which shows variables grouped in different ways.
    • simple-sensor.riso, a simple sensor model.
    • predictable-sensor.riso, a model of a variable which is measured, and also predictable by time.
    • redundant-sensors.riso, a model of three sensors which measure the same variable.
    • TRH.riso, a model of two related variables, temperature and relative humidity.
    • learn-ar-w-sensor.riso, a model of a sensor with autoregressive noise. The parameters of the sensor model appear as belief network variables, so they can be updated.
  • Chapter 7, "Application: Selecting rates to minimize energy and demand costs."
  • Chapter 8, "Additional belief network applications."
    • Tdblvg.riso, a belief network model of part of a refrigeration system.
    • damper-tbn.riso, a temporal belief network model of a mixing box damper.
The paper, ``An algorithm for inferences in a polytree with heterogeneous conditional distributions,'' refers to this belief network. The paper, ``RISO: An implementation of distributed belief networks,'' refers to these belief networks. These are the same ones which appear in Chapter 4 of the dissertation.

Send email to Robert Dodier
Last update sometime before $Date: 2006/10/18 05:07:29 $