Tech Blog

Tips and Tricks for AIMMS Users

Category archives: AIMMS

How to link AIMMS with an SQLite database (in Windows 10)

Posted on November 18, 2016 by Leave a replysqlite

Say you have a wonderful AIMMS application, that needs to link a Database Table identifier database (an AIMMS identifier) to one SQL data base of yours. Your amazing SQL data base is, however, an SQLite database. Thus, to be able to read it, AIMMS needs the appropriate “driver”, which enables him to read your SQLite database. This blogpost presents how to:

Continue reading »

This entry was posted in AIMMS, Beginner, Data on by .

Set, Subset, Index and Element Parameter in AIMMS

Posted on September 23, 2016 by Leave a reply


Do you know Set is a god of the desert, storms, disorder, violence and foreigners in ancient Egyptian? So it is totally possible that his disturbance power influenced mathematical world, which is considered employing set theory as foundation system. From 5th century Greek in west India in the east to today’s modern society, there are struggles, debates, paradoxes around set theories. You can find lots of readings about them, or if reading history sounds boring, there will be a little fun video to watch at the end of this blog.

Set in AIMMS can also be confusing for new AIMMS users. We often get questions regarding how to use set, subset, indices, mappings, etc. While working on my own Fantasy Football project, I think it might be helpful to share how I started building one of my models to clarify some of the ambiguity by this example.

Continue reading »

This entry was posted in App development, Beginner, Modeling 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 .

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 .

Solving a TSP using lazy constraints

Posted on May 26, 2015 by Leave a reply

The famous travelling salesman problem (TSP) deals with the following problem: given a list of cities and the distances between each pair of cities, a salesman has to find the shortest possible route to visit each city exactly once while returning to the origin city. One way to formulate the TSP is as follows:

        min    sum( (i,j), c(i,j)*x(i,j) )
(1)     s.t.   sum( i, x(i,j) + x(j,i) ) = 1   for all j
               x(i,j) binary                   for all i > j

Here x(i,j) equals 1 if the route from city i to city j is in the tour, and 0 otherwise. Note that this is the formulation for the symmetric TSP in which the distance from i to j equals the distance from j to i. This formulation is not complete as it allows for subtours. One way to exclude these subtours is by using subtour elimination constraints (SECs for short):

        sum( (i,j) | i in S and not j in S, x(i,j) + x(j,i) ) >= 2   for all S, 1 < |S| < n

Here S is a subset of cities while n denotes the number of cities. This SEC enforces that at least one route is going from a city in set S to a city outside S.

Continue reading »

This entry was posted in Advanced, CPLEX, GUROBI, Modeling on by .

Progress Window Updating Changes

Posted on April 01, 2015 by Leave a reply

pwThe progress window, which can be opened by pressing CTRL-P, allows you to monitor AIMMS during compilation, execution and solving. For example, while solving a MIP problem, AIMMS will display the number of iterations and nodes, the best bound and the best solution in the progress window. So far, progress updates during a solve have been based on the number of iterations used by the solver. By default, the progress window is updated every 100 iterations. This frequency is controlled by the general solvers option Progress Solution.

Continue reading »

This entry was posted in Intermediate on by .

How to protect the Intellectual Property in your AIMMS 4 model

Posted on March 06, 2015 by Leave a reply

encryption2Encryption is typically used to protect the intellectual property (IP) in your AIMMS model and libraries. Access to your application can also be restricted in both AIMMS 3 and AIMMS 4; though the methods differ between the two AIMMS versions.

In AIMMS 3, you had the option to encrypt your project in such a way that it was always stored encrypted, even during development. The benefit is that you could send everything you had to an end-user and you didn’t have to worry about them getting access to the source. Alternatively, you could send them just one or two encrypted libraries. Of course, the disadvantage in AIMMS 3 is that you had no option to do code comparison and/or version control.

As of AIMMS 4, all project sources are text-based. This allows you to use version control software. As a result, the model is no longer stored encrypted and explicit steps are needed to create encrypted code.

This blog posts illustrates how you can create an encrypted project out of the source. The steps required to create an encrypted library will be discussed here as well.

Continue reading »

This entry was posted in AIMMS, Technical on by .

Under control: managing errors and warnings within AIMMS

Posted on November 24, 2014 by Leave a reply

molumen_Exclamation_icons_1The goal of this article is to explain how you can control errors and warnings within AIMMS. Namely, we will walk you through some useful tips that can help you manage errors and warnings in the best possible way to create better models.

Continue reading »

This entry was posted in Beginner, Modeling on by .

Installing 32-bit and 64-bit Microsoft Access Drivers next to each other

Posted on October 27, 2014 by Leave a reply

32_bit_vs_64_bitSome years ago, before Microsoft Office 2010, life was – in some sense – easier for developers: Office was 32-bit, period. In our days, since the release of Microsoft Office 2010, things are a bit more complicated, as users can now have a machine with a 64-bit native version of Office installed as well. This means, for instance, that a 32-bit application using an ODBC driver to connect to an Access database might not work anymore, since the 32-bit ODBC driver might not exist on a machine with a 64-bit Office installation. In such a case, even though the user has a valid Office installation on his or her machine, the application may still display an error regarding the installation or the registration of the proper drivers on the local machine. Continue reading »

This entry was posted in Intermediate, Technical on by .

Investigating infeasible nonlinear problems

Posted on October 20, 2014 by Leave a reply

sherlockThe AIMMS webinar of August (2014) dealt with “Analyzing infeasible Problems in AIMMS”. In case you missed it, the recording can be found here. As shown in the webinar, one way to investigate an infeasible problem is by calculating an Irreducibly Inconsistent System (IIS). An IIS is a subset of all constraints and variables that contains an infeasibility. The “Irreducibly” part implies that the subset is as small as possible. Unfortunately, the IIS could only be calculated for linear (and quadratic) problems. So how about nonlinear problems?

Continue reading »

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

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

  • Categories