In our current AIMMS 4.0 release we have introduced a number of fundamental, and sometimes breaking changes in managing the project sources, about which we got a lot of questions. In this blog post, I will describe these changes and also explain the rationale behind them.
Binary versus text-only source files
In AIMMS 3, all project sources were stored in a binary format. Originally, we introduced these binary files in AIMMS 3 to reduce the total number of files associated with a project. However, over time it turned out that a major drawback of this approach was that the binary format made it very hard to effectively collaborate on an AIMMS 3 project, because the binary files make it really cumbersome to combine the changes made by multiple developers into a new version of the project.
For many years, our larger customers have asked us to address this problem, and we partially mitigated it by introducing libraries in AIMMS 3. This allowed multiple developers to work on separate libraries, thus facilitating a limited form of collaboration.
A 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?
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.
Forest 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.
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.
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.
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.
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:
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.
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.