Formulas as Data

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

Repetitive Patterns captured by Model Query and Model Edit Functions

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

Modeling the forest: Ontario’s Ministry of Natural Resources takes us through decades of effective forest management

SCI_MNR_logo_bronzeForest ecosystems are highly complex and influenced by a diversity of factors. Sustainable forest management is therefore an ongoing and constantly evolving process which requires an integrated approach. Government bodies, such as The Ontario Ministry of Natural Resources (OMNR), must conform to provincial policies and standards, while taking economical and ecological considerations into account to arrive at optimal forest management policies. OMNR manages 27 million ha of Ontario’s public forest and has been using an AIMMS-based model for this purpose since 1994. The Strategic Forest Management Model, or SFMM, enables foresters to analyze the relationships between forest condition, silvicultural practices, wood supply and potential wildlife habitat. This analysis enables them to understand how a forest develops through time and explore alternative forest management strategies and trade-offs. Today, nearly 2 decades after its launch, we spoke with Dirk Kloss, OMNR’s Resource Modeling Specialist, to find out where SFMM stands today and what their experience using AIMMS has been like.

Continue reading

Using external functions for data input

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

Monitoring memory use

Memory module

Memory module

Analytic applications may involve a lot of data and subsequently a lot of computer memory. AIMMS hides the technicalities related to memory management from the model developer. These technicalities include, for instance, the allocation and deallocation of memory for individual data items. Still, the memory usage of applications created with AIMMS grows as the amount of data related to these applications grows. At some point during model development, the memory usage of your application becomes interesting. AIMMS offers tools to monitor and investigate the memory usage of your application.

This blog post will delve into some of these tools.

Continue reading

Using operations research to solve pressing global issues: the mathematical story behind North Star Alliance’s POLARIS

More than 35 million people worldwide are infected with HIV or are living with AIDS, and approximately 70% live in Sub-Saharan Africa. Mobile populations, such as long distance truck drivers, are particularly at risk of contracting and transmitting the virus. In 2007, TNT Express and the United Nations World Food Programme joined forces to form North Star Alliance (North Star) – a public-private partnership that is working to increase access to health services along major transport corridors in sub-Saharan Africa. ORTEC, a longstanding AIMMS partner, joined North Star in 2008 to design their award-winning Corridor Medical Transfer System (COMETS), which enables North Star staff to access and monitor patient health data across boarders and throughout its network of clinics. ORTEC has also contributed to North Star by developing POLARIS, an innovative application built on the AIMMS optimization platform that helps the organization improve their planning and decision-making on the ground. In this blog post, we will explore the POLARIS Supply Chain Model developed by Harwin de Vries while at ORTEC.

Continue reading

Top 5 Reasons Math Modelers Should Use AIMMS

Professors, students, and practitioners of operations research can choose from a variety of tools when conducting research and delivering results. When it comes to solving math programs and optimization problems, there are many options, such as using a math modeling tool, a generic programming language with an API, or a solver directly.

As someone who is new to AIMMS and has done all of the above for doing research and providing solutions, there are several reasons why I prefer to use AIMMS. Here are the top 5 reasons:
Continue reading

Past the size limit of old data manager files

By Vladimir Shioshvili

By Vladimir Shioshvili

During the evolution of an application, the amount of data it is capable of handling tends to grow. The number of areas in which it can be deployed does as well. When a single data manager file is used to store all this data, the file will grow significantly – even if the data is stored in a compressed form. For applications created with AIMMS 3.12 or earlier versions, there is a 4Gb size limit to data manager files. For applications handling a lot of data, this limit needs to be addressed. Versions of AIMMS from 3.13 onward, use another format for data manager files to which this limit no longer applies. Even though AIMMS 3.13 can read cases from old data manager files and store new cases therein, AIMMS 3.13 does not automatically convert old data manager files to the new format. Luckily, this conversion can be coded in AIMMS. I will demonstrate how in this blog post.

Continue reading

Units of measurement – localized interaction with numeric data

mm inch ruler

mm inch ruler

Optimization applications deal with numeric data. Interpreting these numeric values is easier when they are presented according to familiar units of measurement, hereafter abbreviated as units. For instance, I’m used to calculating distances in km and need to consciously re-interpret them when I get a distance measurement in miles. Some of my American colleagues, however, are used to miles for measuring distance.

When we are aware that we are dealing with an unfamiliar unit, we need to put in a little extra effort in its interpretation. Not being aware, we run the risk of encountering serious errors resulting from incorrect unit assumptions. And I mean horror stories, such as loss of spacecraft.

This begs the question: which units should be chosen and how do we make a given choice clear when we’re dealing with applications that have an international audience? Such applications should be smart enough to adapt the units depending on the user.

Continue reading

Support of UTF8 and Other Encodings

German Enigma Machine

German Enigma Machine

A text is a sequence of characters. A text file contains such a text whereby the characters are represented by numbers. The mapping between these characters in a text and these numbers in a file is called an encoding. Confusion arises when people or programs communicate using different encodings :-( . For instance, a text file containing the following bytes (hexadecimal): “48 65 6c 6c 6f 20 57 6f 72 6c 64 2e”, would be interpreted using the IBM284 encoding, a Spanish variant of EBCDIC, as: “çÁ%%?€ï?Ê%À”, but using UTF16LE encoding, it would be interpreted as “效汬潗汲”. Finally, using an ASCII encoding, it would be interpreted as: “Hello World”.

Continue reading