ORMS Today
August 2000

AIMMS 3

New version of Advanced Integrated Multidimensional Modeling System provides fully integrated application development environment

By Dan Streiffert


AIMMS 3 is the most recent version of the Advanced Integrated Multidimensional Modeling System (AIMMS) developed by Paragon Decision Technology (PDT). This new version is a major rewrite of the previous version (AIMMS 2.20) that this reviewer has been using for the past five years in the development of power system applications for electric utilities.

AIMMS provides an all-round development environment for advanced Decision Support Systems (DSS), which are usually interactive systems with a strong emphasis on advanced computational techniques. These systems frequently make use of mathematical optimization methods for finding optimal solutions to complex resource allocation problems. Alternative solutions to these problems should be readily accessible through "what-if?" type analysis.

The development environment includes tools for building a sophisticated graphical end-user interface (GUI) which is highly integrated with the modeling environment. This makes it possible to quickly create complex graphics for presentation of study results. Figure 1 (taken from one of the examples delivered with AIMMS 3) illustrates an example page containing such complex graphics. It uses the new network object (with zooming capabilities) that is included in the system. This object has arcs and nodes whose color, size and location can be programmatically controlled to provide the user with an excellent visual representation of study case results.

Figure 1

Figure 1: Network object.

It is the complete integration of software development and end-user presentation graphics that sets AIMMS 3 apart from the few competitors in this field. The package enables you to build everything from a simple prototype model to a sophisticated DSS system that interacts with large database systems, all under one development environment. This allows you to start with an idea and to keep building on this idea until you have an application. It's the kind of tool that puts the fun back into software development.

Costs and Risks


License costs for commercial use of the AIMMS system run from $795 for a "Basic" system without solvers to $13,500 for a fully functional "Business" system (including the CPLEX solver). AIMMS is only available for PCs running Windows 95/98, Windows NT 4.0 or Windows 2000. PDT offers a variety of volume discounts and recently initiated a rental program to allow evaluation of the product. More information can be found on their Web site (http://www.aimms.com).

For academic use, PDT offers an unlimited academic network version along with the right to freely distribute a size-restricted (300 x 300) student version among the students of the faculty that acquired the academic license. The price of an academic license is $3,600.

A major concern in starting a new software project is the reliability and availability of any third-party software used in developing your product.

In our case, the fact that Paragon Decision Technology is a relatively small company turned out to be a significant benefit, as we found them more than willing to work with us to provide special functionality and even on-site support when critical software milestones were approaching. We were using the AIMMS modeling language in conjunction with CPLEX solvers.

We found the AIMMS 2.20 product very reliable and have had few problems. On the other hand, the initial AIMMS 3.0 release was very buggy. This has improved dramatically with the recent AIMMS 3.1 release; however, and I would not expect any major problems with future releases. Throughout all of our dealings with PDT, we have found the company quite responsive to bug reports and willing to listen to new ideas and suggestions for improving their product. This is one of the pleasures of working with a small company that has not become burdened with bureaucratic roadblocks.

My first exposure to AIMMS 3 was in trying to convert a large, existing AIMMS 2.20 model to work under AIMMS 3. This was a very complex process and the conversion took much longer than I expected. Part of my problem throughout this process was that I repeatedly incorporated new features of version 3 into my model as I did the conversion. As a result, I spent a lot of time learning and experimenting with different ideas, rather than simply getting the model to run. On the other hand, experimenting is part of the fun of working with a tool like AIMMS 3; the kind of fun that keeps you at your computer late into the evening when you should be working on the list of craft projects that your spouse is patiently waiting for you to complete.

AIMMS 3 Overview


Perhaps the most significant difference between AIMMS 2.20 and AIMMS 3 is a change in focus from an enhanced modeling language to a fully integrated application development environment. This integrated environment makes it possible to fully develop a complex end-user application using a single tool and programming language.

AIMMS 3 is much more than just another programming language, however. PDT has incorporated numerous state-of-the-art concepts into this product. These include:
  • Extensive use of tree structures to provide visual structuring of the model, displays and other project entities.

  • Storage of source code in a source database, rather than ASCII text files.

    Some advantages of this are:

  • Model identifiers can be used before being declared. This allows you to store identifiers where you think they belong, rather than in the position the model dictates.

  • Incremental compilation of code is supported. This allows you to re-compile and re-run the model without re-loading data cases, saving enormous amounts of time in debugging models.

  • Flexible movement of parts of the model throughout the model tree.

  • Incorporation of the end-user GUI into the modeling environment. This means you can create an end-user application from within the AIMMS modeling environment. This includes the ability to display model input and results, create user-menus and other navigation aids, create graphical views of data, create and retrieve save cases of case studies and perform case comparison functions.


In the remainder of this review, I will attempt to restrict my review to elements of the system that I have found particularly innovative and useful. Numerous other features of this product will not be covered.

AIMMS Modeling Tools


An AIMMS project consists of three basic parts: a model, (end-user) pages and data. In the model, you can describe and solve a mathematical problem. Pages can be used to display and change data, as well as to let the user execute (part of) the model. Data is used to save (and load) data sets for future reference.

AIMMS has user-friendly tools to construct projects. A model can be built with the model explorer tool, and the identifiers in the model can be viewed using the identifier selector and view manager tools. Pages can be constructed with the page manager tool and enhanced with the template manager and menu builder tools. The data manager and data management setup tools should be used to save and load data.

Once you have constructed a project in AIMMS in developer mode, you can let others use the project in end-user mode. This allows you to hide the model source and prevent accidental changes to the model.

In the following sections I will give a brief overview of the model explorer, identifier selector, page manager, template manager and data manager tools.

Model explorer. The model explorer provides a simple graphical model representation. All relevant information is stored in the form of a tree, referred to as the model tree, which can be subdivided into named sections to store pieces of similar information in a directory-like structure. The leaf nodes of the tree contain the actual declarations, procedures and functions that make up the core of a modeling application.

The significance of this feature only becomes apparent as your model increases in size and complexity. Programs that consist of two pages of source code can generally be viewed and understood quite easily. When the source code grows to 1,000 or 10,000 lines of code, it becomes very difficult to view and understand the relationships of the various modules and data structures. With AIMMS 3, you build a model in a source database; it can be readily transformed and viewed in alternative ways.

The model explorer in AIMMS lets you partition and structure a model as you create it. Individual model components (identifiers) are entered using forms, which reduces syntax errors. Most forms include built-in wizards to assist in filling out the forms. Figure 2 illustrates the model explorer along with a sample form for defining a multidimensional parameter. Also shown is the unit wizard for assisting in defining the Unit attribute.

Figure 2

Figure 2 - Model explorer with parameter form.

Using the toolbar on the parameter form provides shortcuts to various common tasks such as viewing the current data of the parameter, traversing the model tree, showing the location of the parameter in the model tree and various methods of (partially) compiling and saving the contents of the form. Buttons on the form in front of the various attribute fields provide access to wizards that assist in entering information on the form.

Within the attribute fields, AIMMS provides a number of right-mouse button actions, in addition to the standard cut/copy/paste operations, which you can use to readily access the attribute form or current data values for any identifier your mouse is on. This provides a convenient way to navigate directly to identifiers without having to traverse the model tree. Also, whenever you need to enter a parameter of variable name in the model, you only need enter the first few characters. Pressing "ctrl-space" activates auto-name completion and provides a list of items that begin with these characters so you may select the item you desire.

Some language features new to AIMMS 3 include:
  • Defined parameters and sets. AIMMS allows you to specify a definition for parameters and sets. These defined parameters and sets are then updated automatically by AIMMS whenever necessary. This is very much like what occurs in spreadsheet operations, where the spreadsheet automatically keeps all results up-to-date. By using defined parameters, you can create spreadsheet-like operations within your model. These are useful for calculation of results that are not needed at every execution of your program. If these results are shown in the AIMMS GUI, then they are only calculated when you actually open the display page to view them. Defined parameters are also useful for calculating input parameters that are algebraic sums of other quantities.

  • External procedures and functions. Although AIMMS provides capabilities for coding both procedures and functions, there are times when you may want to incorporate capabilities from other languages or projects. AIMMS provides this through external procedures and functions definitions. These allow utilization of Fortran 90 or C code that has been compiled into dynamic link libraries (DLL). From within an external program you can make calls to an AIMMS model (as a component) through the AIMMS API. The AIMMS API provides access to those parts of the model that can also be accessed from within the end-user GUI. We have used external procedures primarily to gain speed in executing certain functions. For example, some of our applications make use of dynamic programming models. These are very computational intensive, so they are coded in FORTRAN 90.

  • ODBC capabilities. Database procedures can be used to interface with ODBC data sources. ODBC (open data base connectivity) provides a common interface for accessing databases for which an ODBC-compliant driver is available. The form for defining these procedures includes wizards for defining the data source, accessing the desired queries or stored procedures, and defining mappings between database elements and AIMMS parameters. Once these are defined, data can be read or written to these data sources using simple AIMMS read/write statements.

  • Horizons and calendars. AIMMS provides a number of built-in concepts to deal with time-based models, and the associated aggregation and desegregation of data involved with such models. Use of these facilities helps reduce the time needed to implement a time-based model.


Identifier selector. One of the really nice features of AIMMS 3 is the ability to access model components in a variety of ways (i.e., no restriction to a single, sequential view of a model). The model explorer provides one view that represents the primary developer's idea of how the model should be organized. Frequently, you may want to "query" the model for alternative views. For example, you might want to view all constraints with a certain domain index, all string parameters, or all variables in a specific node of your model.

The identifier selector tool allows you to create various alternative views in a hierarchical manner and save them for later use. These views are fully functional in that you may edit the model and perform incremental compilations from within these views. Views may also be printed and are automatically formatted. These can be used to provide documentation for your model, and thus form an ideal tool for model audits.

I strongly believe that these alternative views may be one of the most powerful features of the language. In practice, however, I have not actually made much use of this feature. I expect this is primarily due to old habits acquired from years of editing sequential source files.

Page manager. The page manager tool lets you organize all existing pages in an AIMMS application in a tree-like fashion. The single tree in the page manager holding all pages is called the page tree. Relative to a particular page in the page tree, the positions of the other pages define common page relationships such as parent page, child page, next page or previous page.

Based on the hierarchy of pages in the page manager, AIMMS offers several navigational interface components that can be added to a page or end-user menu such as navigation objects, navigation menus and navigation-related button actions. These components allow for easy navigation to the parent, child, next or previous pages with respect to either the current page or a fixed page in the page tree.

Figure 3 illustrates a section of the page manager from one of our own applications.

Figure 3

Figure 3: Page manager.

The sample page shown in figure 4 includes a number of navigation objects that are used to automatically create buttons on the right-hand side of the page, the pull-down menu and the page title directly from the hierarchical arrangement of the pages in the page tree. These kinds of features will substantially reduce future maintenance costs for your model.

Figure 4

Figure 4: Sample page with navigation object.

Other capabilities included in the page manager include:
  • Report generation. This is a simple mechanism for converting an end-user page into a multi-page printable report.

  • Resizing of pages. This unique feature makes it possible to define the behavior of a page when it is resized. Resizing can be done automatically, so that pages resize to fill the computer screen. The ability to resize ends the need to keep modifying your GUI as screen sizes and resolutions change.


Template manager. Complementary to the page manager (and the page tree), the template manager (and the template tree) makes sure that all pages have the same size and possess the same look and feel. This is done by creating template pages and letting other pages depend on these template pages.

Data manager. AIMMS 3 can create multiple save cases for storing both model inputs and results. Built-in case comparison features are also provided so that you may readily view differences from a number of "what if"-type analyses. Advanced features include the capability to define data categories (groups of related data) and save them in datasets.

The data manager offers various commands to work with a large number of cases and datasets stored together in a single data file. You can:
  • Load, save and manipulate the collection of cases and datasets in a data file.

  • Switch to another data file (containing a totally different tree with cases and datasets).

  • Export and import cases and datasets between data files.

  • Select multiple cases and datasets, to be used in multi-case overviews or calculations.

  • Run a batch of selected cases and datasets.


Other Features


Extended search and find operations. Within each component of the AIMMS project, standard search and replace capabilities are provided. Extended search and find operations are also provided between AIMMS components. For example, dragging any item from the model explorer window to the page manager window causes the mouse pointer to change to a binocular icon, indicating a search operation is to be performed.

Releasing the mouse button results in highlighting all pages that contain references to the item. Similar search and find operations can be performed between other model components.

These are powerful concepts that can be of great assistance in model maintenance. This is also one of the many benefits that comes from using a tool that integrates both modeling and end-user GUI development into a single environment.

Figure 5

Figure 5: Extended search.

Units of measure and conventions. Many applications include parameters and variables with different units of measure (i.e., distance, time, volume, mass). Often there are conversions from one quantity to another in your application. Other times, you may want to present your results in alternative units (i.e., meters vs. feet). AIMMS includes a built-in dimensional analysis capability that allows you to associate units of measure with each identifier. These units may be shown in the GUI and can be quite helpful to the user in understanding your model. In addition, units you specified for the variables and constraints within a model will be used to automatically scale a mathematical program before it is sent to a solver.

AIMMS checks your model for unit consistency during compilation and issues error messages when it detects problems. You can also define unit conventions for different localities. You can then automatically change your result pages from one convention to another.

One word of caution. This is not something that you can do halfway. Once you start applying units to your model, AIMMS will keep issuing error messages until everything is unit-consistent. This can be a very pervasive and painful exercise if you are working on a large model. On the other hand, if you start using units of measure when you begin developing your model, unit association will probably be very helpful in terms of getting your model correct.

VAR licensing. Having spent considerable time developing a model, most companies would like to protect their investment. AIMMS 3 includes the ability to encrypt a model (or submodels) and license individual components for a limited amount of time or to specific AIMMS users. Such encryption and licensing is dependent on a special encryption code added to each AIMMS license that is unique to any value-added reseller (VAR). Uniqueness of VAR encryption codes ensures that you are the only one able to license your projects.

Unicode AIMMS version. Along with the ordinary AIMMS 3 version, PDT also distributes a unicode version of AIMMS 3 to support the use of, for instance, Japanese or Korean characters in both the model and end-user interface. This version also contains various tools to assist in automatically preparing the end-user interface for multiple languages. We used this version to distribute one of our models to a customer on the Asian market.

I have always found it difficult to assess a package like AIMMS when looking at someone else's application. The best way to get a feel for this tool is to buy or rent a copy from PDT and start experimenting. I would suggest starting with a small project that you thoroughly understand and can get working in a short amount of time. You can then experiment with enhancing the model and the user interface. Before you know it, you will be demonstrating your creativity to customers (and your boss) and committing to deadlines that you can't possibly meet.

AIMMS 3 is distributed by:
Paragon Decision Technology B.V.
P.O. Box 3277
2001 DG Haarlem
The Netherlands

Phone: +31 (23) 5 511 512
Fax: +31 (23) 5 511 517
E-mail: info@paragon.nl
Web: www.aimms.com

Pricing
Prices range from $795 for a basic system without solvers to $13,500 for a fully loaded business system. Network and academic versions are available.
Documentation
The printed documentation for AIMMS consists of three books: "AIMMS-The User's Guide," "AIMMS-The Language Reference" and "AIMMS-Optimization Modeling." In addition, there is an online function reference, as well as extensive online help files and wizards for assisting the user in model development. Printed documentation may be downloaded from: http://www.aimms.com/Documentation/index.html.



Vendor's Comments
Editor's note: It is the policy of OR/MS Today to allow software developers an opportunity to clarify and/or comment on the review article. Following are comments provided by Johannes J. Bisschop, managing director of Paragon Decision Technology.

To make AIMMS' high-level modeling environment accessible to a wider range of developers, our forthcoming AIMMS 3.2 release (due during the summer of 2001) will improve the usability of AIMMS models as optimization components in other applications such as spreadsheets and e-commerce packages. An intuitive COM object library, which can readily be used in languages such as Visual Basic and VBScript, will provide easy access to all the model entities and data within an AIMMS model. AIMMS 3.2 will also include an Excel add-in, enabling the advanced modeling capabilities of AIMMS to be used in a point-and-click manner within the familiar Excel spreadsheet interface. In addition, two brand new development tools will be introduced, namely a debugger and a profiler.






Dan Streiffert of ALSTOM ESCA Corporation develops operations research applications for electric utilities. His primary area of interest is economic operation of power systems. He has been using AIMMS for more than five years.





  • Table of Contents

  • OR/MS Today Home Page


    OR/MS Today copyright 2001 by the Institute for Operations Research and the Management Sciences. All rights reserved.


    Lionheart Publishing, Inc.
    506 Roswell Street, Suite 220, Marietta, GA 30060, USA
    Phone: 770-431-0867 | Fax: 770-432-6969
    E-mail: lpi@lionhrtpub.com
    URL: http://www.lionhrtpub.com


    Web Site Copyright 2000 by Lionheart Publishing, Inc. All rights reserved.