Tech Blog

Tips and Tricks for AIMMS Users

Author Archives: Chris Kuip

Chris Kuip

About Chris Kuip

Chris Kuip is a AIMMS and Optimization specialist in the Algorithmic Capabilities and Client Support team.

Modeling for secure apps deployed on AIMMS PRO – Part 3: securing file access in AIMMS PRO storage

Posted on December 20, 2016 by Leave a reply

This blog post is the last in a series of thee to enable AIMMS app developers to model file sharing in a secure manner.  In the first post, we covered authorization of AIMMS PRO users, and in the second, we covered transferring files. In this blog post, we will cover granting and denying access to files in AIMMS PRO storage.

AIMMS PRO storage organizes access per entity, whereby an entity is a user or a group of users. We start with retrieving the set of entities and the group or user names associated with them. This can be done via the following call to system library AimmsProGUI:

Continue reading »

This entry was posted in Data on by .

Modeling for secure apps deployed on AIMMS PRO – Part 2 Uploading and Downloading files

Posted on November 21, 2016 by Leave a reply

This blog post is the second post in a series of three to enable AIMMS app developers to model necessary file sharing in a secure manner. In our first blog post, we covered AIMMS PRO User groups and how they can be used to authorize access to information within your AIMMS Apps. This blog post explains how you can upload and download files to and from AIMMS PRO Storage.

Continue reading »

This entry was posted in AIMMS on by .

Modeling for secure multi-user AIMMS Apps deployed on AIMMS PRO – Part 1 User Groups

Posted on September 27, 2016 by Leave a reply

AIMMS PRO is a multi-user environment, designed to host several Apps used by several end-users. Information is shared by these users via these applications. Depending on the role of the app user in the organization, selected information may or may not be accessible. For instance, a planner may change the production plan, that plan can be inspected by management, but is not accessible to the HRM staff.

This blog post is the first post in a series of three to enable AIMMS app developers to model necessary file sharing in a secure manner. The topics of the three posts are:

1. Identify the user of the AIMMS PRO App and the AIMMS PRO groups they belong to

2. Upload files to AIMMS PRO Storage and download files from AIMMS PRO Storage

3. Grant access, via authorization strings, as appropriate to files in AIMMS PRO Storage

Continue reading »

This entry was posted in AIMMS, App development on by .

Using AIMMS WebUI Forms to Create and Edit Data

Posted on March 10, 2016 by Leave a reply

The AIMMS WebUI is well known for its capability to create a UI for inspecting and analyzing data in a browser and for modifying existing data. However, as a model developer, you also want your users to be able to:

  • Create new data,
  • Modify existing data, and
  • Detect invalid data as soon as possible

Consider the picture below:

Continue reading »

This entry was posted in App development, Intermediate, Technical on by .

Data Modifications Invoking Procedures

Posted on October 15, 2015 by Leave a reply
Skaters showing Newtons third law

Skaters showing Newtons third law

There are various relations between identifiers. On the one hand, when one identifier is functionally dependent on other identifiers, a parameter definition can be used to state such a relation. On the other hand, when several identifiers are mutually dependent, a constrained optimization problem can be formulated to search for the optimal solution. However, there are also use cases whereby a small group of identifiers are mutually dependent and a simple procedure exists to update the “other” identifiers in that group when one of them changes.
A small example is an arrival/departure time dialog:

  • when you know the arrival time, you can compute the necessary departure time, or
  • when you know the departure time, you can compute the resulting arrival time.

In such a use case, you want to invoke a procedure to handle the modification of the value of an identifier.

A validation rule to check the mutual consistency of selected input identifiers is another use case.

Adding buttons to the application UI to handle these situations is not a proper solution; your users run the risk of pressing the wrong button, or forgetting to press it.

So how can we specify in AIMMS that the proper procedures are run upon modifying the data of selected identifiers?

Continue reading »

This entry was posted in Uncategorized on by .

Styling elements in a table using annotations

Posted on July 31, 2015 by Leave a reply

The AIMMS WebUI pivot table displays all numbers, including zeros, always in light blue and on a white background. However, HTML allows us to style each cell in a grid individually to communicate more effectively. How can we leverage this power of communication in an easy to use manner?

Continue reading »

This entry was posted in Intermediate on by .

Tweaking the WebUI linechart widget using CSS

Posted on June 01, 2015 by Leave a reply

This is a short blog on tweaking a WebUI line-chart widget to capture forecasting data focusing on the use of CSS for visualization tuning. My preference for visualizing forecasting data is to have the observations as separate points, and the estimates connected via lines.

Continue reading »

This entry was posted in Uncategorized on by .

Formulas as Data

Posted on August 21, 2014 by Leave a reply

mathematics-327488_150A mathematical formula is considered data within an application when it is read in as a string during the application’s runtime, and subsequently used in the construction of selected assignments and constraints. The concept “Formulas as Data” can be applied to several optimization apps, for instance those that deal with “Blending on Specification” and “Asset Management.” In these types of applications, the benefit of the end-users is that they do not have to share these formulas with anyone else, including the developers of the apps. For such apps, good formulas are expensive to develop and having good formulas provides a competitive edge to these end-users. In AIMMS, formulas can be used in the following way:

  • String parameters – a formula is a sequence of characters, and such sequences can be stored and manipulated via string parameters. Such manipulation is executed at AIMMS run time.
  • Macros – a formula is a mathematical expression and this expression is created during AIMMS compilation time.

The two identifier types, string parameter and macro, effective at different times as far as the AIMMS system is concerned, need to be combined in order to support the concept “Formulas as Data.” How do we go about this? Continue reading »

This entry was posted in Uncategorized on by .

Repetitive Patterns captured by Model Query and Model Edit Functions

Posted on May 08, 2014 by Leave a reply
Der Maler - Honoré Daumier - from Rheims Museum of Fine Arts

Der Maler – Honoré Daumier – from Rheims Museum of Fine Arts

When constructing AIMMS models, we are usually able to handle repetition and structure by adding indexes. For instance, if we have built a model for the conversion process of a single machine, we do not have to duplicate the relevant model code when given an extra machine. Instead, we can use an extra index over a set of machines. However, there are situations where adding an extra index is not an option. This blog post will provide an example of such a situation, illustrating how the issue can be tackled using the AIMMS Model Query and Model Edit functions. Continue reading »

This entry was posted in Intermediate, Technical on by .

Using external functions for data input

Posted on January 21, 2014 by Leave a reply
Make connection

Make connection

Data exchange is an essential part of every application. AIMMS supports various industry standards for data exchange, such as ODBC for databases, XML Files and spreadsheets. But what if the data is not stored according to one of these standards? In order to read data from an arbitrary data source, AIMMS offers access to self-developed or third party functions. This blog post provides an overview of the steps you need to take to create a data exchange link between a proprietary data format and AIMMS. The process is illustrated by using a concrete modeling exercise from the Constraint Programming example library CSPLIB. Continue reading »

This entry was posted in Technical on by .
  • Customer Reviews

    Read more AIMMS reviews
  • Review AIMMS on G2 Crowd
  • Recent Posts

  • Categories