<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://docs.optrix.com.au/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>ARDI Documentation - model</title>
        <description></description>
        <link>https://docs.optrix.com.au/</link>
        <lastBuildDate>Wed, 27 May 2026 01:25:14 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://docs.optrix.com.au/_media/wiki:dokuwiki.svg</url>
            <title>ARDI Documentation</title>
            <link>https://docs.optrix.com.au/</link>
        </image>
        <item>
            <title>AddCalc</title>
            <link>https://docs.optrix.com.au/model:addcalc</link>
            <description>AddCalc

The AddCalc function is part of the model object.

It&#039;s used to add new calculations to your model. These are very similar to outputs, however the results aren&#039;t published.

Syntax

model.AddCalc(Name,Lambda Expression,Dependencies)

Parameters

Name: A string containing the human-readable name of this point. As this point is not published, it&#039;s only use is when performing internal binding (ie. when you&#039;re referencing this calculation from a different model).</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>AddConstant</title>
            <link>https://docs.optrix.com.au/model:addconstant</link>
            <description>AddConstant

The AddConstant function is part of the model object.

It&#039;s used to add new constants to your model.

Syntax

model.AddConstant(Name,Default)

Parameters

Name: A string containing the human-readable name of this point. This name will appear everywhere the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>AddInput</title>
            <link>https://docs.optrix.com.au/model:addinput</link>
            <description>AddInput

The AddInput function is part of the model object.

It&#039;s used to add new inputs to your model.

Syntax

model.AddInput(Name,Default,Source)

Parameters

Name: A string containing the human-readable name of this point. This name will appear everywhere the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>AddOutput</title>
            <link>https://docs.optrix.com.au/model:addoutput</link>
            <description>AddOutput

The AddOutput function is part of the model object.

It&#039;s used to add new outputs to your model.

Syntax

model.AddOutput(Name,Lambda Expression,Dependencies)

Parameters

Name: A string containing the human-readable name of this point. This name will appear everywhere the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Calculations</title>
            <link>https://docs.optrix.com.au/model:calc</link>
            <description>Calculations

Calculations are a type of data point that are used to calculate values that you don&#039;t want or need exposed to the users of your system.

This might be for several reasons, such as....

	*  The value simply isn&#039;t of any use or interest to your users,</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Connecting a Model to Data</title>
            <link>https://docs.optrix.com.au/model:connect_our_model_to_data</link>
            <description>Connecting a Model to Data

The AddInput command has an optional third parameter that controls where it gets its data from.

If left None, it will simply wait for the data to be directly updated by the user, usually through OPC-UA.

If given a string, it can link a couple of different data sources.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Constants</title>
            <link>https://docs.optrix.com.au/model:constant</link>
            <description>Constants

Constants are a type of data point that represents the values that are needed in the equations of your model. 

Unlike inputs - which are expected to change often - constants are expected to remain quite static and not change frequently.

If you&#039;re ever considering adding a number to one of your equations that represents something real-world (such as the maximum speed limit of your machines, the weight of your product etc.), it&#039;s better to define it as a</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Creating a Model in Python</title>
            <link>https://docs.optrix.com.au/model:creating_a_model_in_python</link>
            <description>Creating a Model in Python

Building the Basics

First, create a new blank Python file. You can name it anything you like, but it should end with the .py extension if you&#039;re running on a Windows machine.


import ardimodel as mdl

host = mdl.ModelHost(5225) #This is the port number that OPC-UA will run on

# Add Models Here

host.ardiurl = &quot;localhost&quot;
host.ardisite=&quot;default&quot;
host.Run()</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Data Points</title>
            <link>https://docs.optrix.com.au/model:data_points</link>
            <description>Data Points

Your model is made up of data points.

These data points can be inputs, constants, outputs or calculations.

Each point usually contains a single numeric or text value. However, calculations can break this rule and store Python objects. 

Every data point other than calculations are available through</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Adding Logic to Equations</title>
            <link>https://docs.optrix.com.au/model:fixing_and_upgrading_the_model</link>
            <description>Adding Logic to Equations

In our example, we created a very simple model telling us how many seconds of water we have stored in our tank.

Handling Divide-By-Zero

If you&#039;re doing anything with rates and speeds, you&#039;ll likely come up across a divide-by-zero error at some point.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>GoalSeek</title>
            <link>https://docs.optrix.com.au/model:goalseek_function</link>
            <description>GoalSeek

The GoalSeek function is part of the model object.

It&#039;s used to find the ideal value of one measurement to result in a particular value of another.

For example, you might have made a model that calculates the size of a balloon from a specific pressure of air.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Goal Seeking</title>
            <link>https://docs.optrix.com.au/model:goalseek</link>
            <description>Goal Seeking

Goal-seeking is a function available in many analytics packages (for example, it&#039;s part of What-If Analysis in Excel).

It asks the question “What do I need to change &#039;A&#039; to so that &#039;B&#039; is equal to &#039;C&#039;”?

In our example, we used it to determine what the level of our tank needs to be to ensure that we have at least 60 seconds of water available.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Input Only Models</title>
            <link>https://docs.optrix.com.au/model:input-only_models</link>
            <description>Input Only Models

In some cases, there might be a large number of models that use the same inputs.

When this happens, you might want to consider an Input-Only Model.

This is a model that only exists to be a source of information to other models. If you were working on a production line for example, the</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Inputs</title>
            <link>https://docs.optrix.com.au/model:input</link>
            <description>Inputs

Inputs are a type of data point that represents the values that are fed into your model. 

The values are expected to vary frequently, both based on real-world data and because they&#039;ll be part of your &#039;what if?&#039; questions you want to ask the model later.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Models</title>
            <link>https://docs.optrix.com.au/model:model</link>
            <description>Models

Models are sets of data points that translate one or more inputs and constants into outputs and calculations.

Complex systems - those with several distinct pieces - will often be broken up into several smaller models. This is because it&#039;s much easier to develop, test, debug and sign-off on individual pieces of the system than it is to try and build the entire thing at once.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Monitoring a ModelHost Model</title>
            <link>https://docs.optrix.com.au/model:monitoring_the_model</link>
            <description>Monitoring a ModelHost Model

If you want to monitor the status of a ModelHost model, there are a few OPC-UA points you can use.

Service Running

First, if the model isn&#039;t running at all, you won&#039;t be able to connect to the OPC-UA server. 

Process Responding</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Multiple Return Values from a Function</title>
            <link>https://docs.optrix.com.au/model:multiple_return_values_from_a_function</link>
            <description>Multiple Return Values from a Function

The Problem

In some cases, you might have a Python function that returns multiple values. 

This is very common when you&#039;re trying to balance several different inputs or outputs.

The difficulty is that each output can only return a single value - so how do you make sure that you get</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>OPC-UA</title>
            <link>https://docs.optrix.com.au/model:opc-ua</link>
            <description>OPC-UA

OPC Unified Architecture (simplified to OPC-UA) is an industrial communication protocol which allows different brands of equipment to connect to one-another using a consistent protocol.

Many industrial systems already communicate through OPC-UA, and for those that don&#039;t there are a range of protocol converters that allow it.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Outputs</title>
            <link>https://docs.optrix.com.au/model:output</link>
            <description>Outputs

Outputs are a type of data point that contain the values that are produced by your model. 

Calculations are very similar to outputs, but they aren&#039;t published (made available to users).

Outputs are available but not writable from OPC-UA.

Example</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Publishing</title>
            <link>https://docs.optrix.com.au/model:published</link>
            <description>Publishing

Published data points are the points that are available to the user, usually through the Modular Output System.

Every kind of data point other than calculations are published.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Flipping Your Model with Goalseek</title>
            <link>https://docs.optrix.com.au/model:reverse-engineering_with_goalseek</link>
            <description>Flipping Your Model with Goalseek

Although it is possible to figure out how to solve equations for different variables, it can become incredibly complex to do when there&#039;s a lot of variables or calculations involved.

Based on our example - where we determine how many seconds of water we have left in the tank - we want to determine</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Running a Model</title>
            <link>https://docs.optrix.com.au/model:running_a_model</link>
            <description>Running a Model

Models are Python scripts - you can run them from a Windows command-line or Linux terminal.

For instance, in Linux you&#039;d run a command similar to the one below...


python3 mymodel.py


And in Windows you&#039;d have something like below, with</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Running Multiple Model Processes</title>
            <link>https://docs.optrix.com.au/model:running_multiple_model_processes</link>
            <description>Running Multiple Model Processes

If you are going to run several different Python models in different processes (for example, you might have different modelling teams working on different areas of your plant), you will need to take some extra steps during setup.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>ModelHost</title>
            <link>https://docs.optrix.com.au/model:sidebar</link>
            <description>ModelHost

Introduction 

Basic Structure 


Intro

Your First Model 

Adding Logic 

Connecting to Data 

Goal-Seeking

Functions

AddCalc 

AddConstant 

AddInput 

AddOutput 

GoalSeek 


More

Tips and Tricks 

Running a Model</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>ARDI ModelHost</title>
            <link>https://docs.optrix.com.au/model:start</link>
            <description>ARDI ModelHost

ModelHost is a small Python library that allows you to create and host models of your system(s) that can be run, modified and tested on-the-fly.

In this context, a model is a system that takes one or more input values, and produces one or more output values - they often calculate the physical limits on machines or perform analytics and classification on your data.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>The Structure of Hosted Models</title>
            <link>https://docs.optrix.com.au/model:structure_of_a_mathmodel</link>
            <description>The Structure of Hosted Models

ARDI ModelHost actually allows you to run several models concurrently.

To make it easy to work with and write, we normally suggest spreading complex systems into several distinct models. Having your compressed-air system distinct from your electrical system, or your boilers distinct from your chillers, will help you compartmentalise your work.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Tips and Tricks</title>
            <link>https://docs.optrix.com.au/model:tips_and_tricks</link>
            <description>Tips and Tricks

Below you&#039;ll find some tricks, techniques and guides to working with ModelHost models.

Multiple Return Values from a Function 

Input Only Models 

Running a Model 

Running Multiple Model Processes 

Monitoring a ModelHost Model 

Working With Time</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
        <item>
            <title>Working With Time</title>
            <link>https://docs.optrix.com.au/model:working_with_time</link>
            <description>Working With Time

While most ModelHost models only need to respond to changes in data, some models are time-sensitive (such as forecasting models, running averages/standard deviations or time-series AIs).

You can force an output to update once every second by making the output depend on the internal ModelHost clock.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 18 Dec 2025 22:50:17 +0000</pubDate>
        </item>
    </channel>
</rss>
