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.
A North Star Alliance Roadside Wellness Centre, located in Emali, Kenya. (Photography by Dave Chidley)
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.
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”.
Wednesday July 31 will be Guido’s last day at AIMMS. He will start a new challenge at one of the big consultancy firms.
Guido has been the driving force behind this AIMMS Blog. With great enthusiasm and energy, he has written the vast majority of our Blogs. Often his blogs were linked to this other ‘baby’ of Guido: the AIMMS Google Group.
Using his forum, I’d like to thank Guido for putting his knowledge, energy and wit to work to make such a success out of the AIMMS blog.
And….an open invitation to Guido to return to this forum and write a guest blog from time to time!
CEO of AIMMS
One of the nice things of the pivot table in AIMMS is that you can easily display a large number of identifiers. Especially after the feature to select specific elements of a set to be displayed, this really allows for end-users to perform so-called slice-and-dice to get insights in data/results.
Normally, if you want to display multiple identifiers in a page object in AIMMS (for the ones that support this), you have to explicitly add each of these identifiers in the contents tab of the page property. Especially when the number of identifiers is large, this can take quite some time. Fortunately, the pivot table in AIMMS also has the option to work with a so-called implicit identifier set.
Estimation – Credits: XKCD
Whenever your projects become larger, certain steps in the execution might start to take some more time. For example, if your project needs to retrieve its input from multiple sheets in multiple Excel spreadsheets, it can take a couple of seconds before all the input data has been read.
For most users, it is actually not a big problem if execution of certain steps in your project take some time, as long as they know that something is actually happening. If you don’t provide any feedback to the user about what is currently happening, the user might think that the application is hanging.
One possibility you have in AIMMS is to use a progress bar dialog indicating the progress via a graphical progress bar combined with a string describing the status.