

.. index:: System Requirements

.. _System_Requirements:

System Requirements
===================

To use the HUGIN Development Environment (if not a special version - see the :ref:`Versions section<versions>`) you need:
 	
* Windows: Microsoft Windows 7/8/10 (x86/x64)

* Linux: Red Hat Enterprise Linux 7, Ubuntu 18.04 LTS, Ubuntu 22.04 LTS (x64), and compatible distributions (x86/x64)

* macOS: macOS Monterey, macOS Ventura

The Java API and the Graphical User Interface requires Oracle's JVM to run. On macOS, Oracle's JVM is only available in 64 bit.

Memory Requirements
-------------------

The complexity (both in terms of space and time) of making inference
in a Bayesian network or a LIMID model can be quite large. For most
applications, however, the complexity is moderate.

The time and memory required for making inference depends on the
number of variables, the number of states of the variables, and the
structure of the network. Among these three factors, it is the
structure of the network that is the most important. As an example, an
early version of the TREAT network (a decision support system for
treatment of severe bacterial infections) developed at Aalborg
University contains more than 1400 variables, but still requires less
than 2 Mbytes of memory (using optimal triangulation). On the other
hand, one can easily construct networks with less than 50 variables
where the complexity of inference gets prohibitive. Note that by using
the :ref:`compression<compress>` and :ref:`approximation<approximate>`
facilities of the HUGIN compiler, memory requirements can be vastly
reduced. Also, using the :ref:`optimal triangulation feature<compile>`
when compiling a network can be very useful in minimizing the
complexity of inference.

Please note that the memory requirements mentioned above assume that
we are using the standard single-precision HUGIN API. (Using the
double-precision version will double that amount.) If we are using the
HUGIN Graphical User Interface, there will also be a memory overhead from
running Java and representing the variables as Java objects,
etc.

In most cases, when our customers experience problems with lack of
memory, the problems were caused by inappropriate structures in the
models which could be solved by optimizing the representation.

See the section on :ref:`junction trees<junction_tree>` for a more detailed discussion of how inference is performed and what causes the potential high complexity.

Application Programming Interfaces
----------------------------------

Application Programming Interfaces (APIs) for the HUGIN Decision
Engine (HDE) are provided for the C, C++, Java, Python, and C# (.NET
Core 2.0) programming languages for all supported platforms (Windows,
Linux, and macOS). Additionally, a web service API is provided for all
supported platforms.

For the Microsoft Windows platform, APIs for C# (.NET Framework 2.0
and 4.0) and Excel (COM) are also provided.

For macOS and iOS, library frameworks for the Swift programming
language are provided.

For the Microsoft Windows platform, DLLs for C/C++ are provided for
use with Visual Studio 6.0, Visual Studio .NET 2003, Visual Studio
2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012,
Visual Studio 2013, Visual Studio 2015, Visual Studio 2017, and Visual
Studio 2019.

For the Linux platform, two software packages are available: One
compiled on Red Hat Enterprise Linux 7 (RHEL7), and one compiled on
Ubuntu 18.04 LTS (64-bit only). Most Linux software distributions
should be compatible with at least one of these packages. If you
experience problems, please contact HUGIN Expert A/S.

The packages have been compiled using the default system compiler. For
RHEL7, this is gcc/g++ 4.8.5, and for Ubuntu 18.04 LTS, this is
gcc/g++ 7.4.0. The APIs may not work with other compilers (including
the version of the compiler). This is most likely to be the case for
the HUGIN C++ API.

For macOS/iOS, all libraries have been compiled using Xcode 10.3.

The HUGIN Java API is compatible with Java 1.4.2 and newer versions from Oracle.

The HUGIN Web Service API requires Java 8 or newer on the server.

The HUGIN Python API works with Python 2.7 and Python 3.x.

If you have special requirements (e.g., operating systems, compilers, or hardware) you would like to see supported, please contact HUGIN Expert A/S. If possible, we will be happy to produce special HUGIN API versions on request.
