A Free, Open-Source Programming Language for Reasoning under Uncertainty
Charles River Analytics, a developer of intelligent systems solutions, announces the release of Figaro 3.0, a probabilistic programming language that enables developers to create tools that help people make better decisions in the face of uncertainty. Figaro supports the development of rich probabilistic models and provides reasoning algorithms to draw useful conclusions from the available “noisy” evidence.
“Reasoning under uncertainty requires taking what you know and inferring what you don’t know,” explained Dr. Avi Pfeffer, Principal Scientist at Charles River. “A well-established approach for reasoning under uncertainty is probabilistic reasoning. Typically, we create a probabilistic model over all the variables we’re interested in, observe the values of some of these variables, and query the model for values of other variables of interest. There are a huge number and variety of approaches to doing this, and new approaches are being developed constantly. Figaro is designed help build and reason with the wide range of probabilistic models.”
Dr. Pfeffer continued, “Developing a new probabilistic model normally requires developing a representation for the model and a reasoning algorithm that can draw useful conclusions from the evidence. In many cases, an additional algorithm is used to learn aspects of the model from the data. These can be challenging tasks, making probabilistic reasoning require significant effort and expertise. Furthermore, most probabilistic reasoning tools are standalone and difficult to integrate into larger programs.” Dr. Pfeffer added, “Figaro supports a new kind of model-development process by simplifying the challenging task of creating probabilistic models that determine a situation’s unknown facts from its known facts. It does this by combining the expressive power of functional programming with the ease of use of object-oriented programming.”
Figaro helps address the issues of model development, reasoning algorithm development, and integration into useful applications. It provides a rich library of model templates and provides ways to extend this library to create custom templates. It also comes with a library of extensible built-in reasoning algorithms that further simplify model development and that can be applied automatically to new models. Users can create their own reasoning algorithms through Figaro’s tools. Figaro provides both regular and anytime reasoning algorithms so users can get answers when they need them and do not have to wait for a long reasoning process to complete. Because Figaro models are data structures in the Scala programming language, which is interoperable with Java, models can be constructed, manipulated, and used directly within any Scala or Java application program.
Figaro 3.0 includes a number of new features, including:
- A collections library
- New algorithms
- Improvements to existing algorithms
- Features to make programming easier
- New element classes in the library
Figaro is free and is released under an open-source license. For more information or to download Figaro, visit our Figaro page.