Tech Blog

Tips and Tricks for AIMMS Users

The benefits of Agile for developing AIMMS applications

As a software company with over 25 years in the industry, we’ve experienced the evolution of IT development first hand. In the past, like all software developers, we worked using the ‘waterfall’ method. In 2014, we decided to adopt Agile/SCRUM for our product development. Agile methodologies focus on user value and encourage rapid and flexible response to change as well as adaptive planning, instead of long-term planning and sequential design. We’ve seen several improvements since we adopted this approach: output has gone up a lot, transparency has increased, we get a lot more feedback on our development, the dialogue with internal stakeholders and customers has improved, and our overall sense of progress and job satisfaction has gone up.

Seeing what Agile has brought to our internal development process, I thought it would be valuable to share more about our experience in order to inspire you to consider Agile methodologies when developing AIMMS applications.

Continue reading »

This entry was posted in Agile, AIMMS, App development, SCRUM on by .

How to integrate AIMMS with Tableau

TableauAlthough both the traditional AIMMS Windows UI and the new AIMMS Web UI offer excellent data visualization capabilities to view the data present within an AIMMS application, many of our customers have expressed the wish to be able to view and work with AIMMS data in Tableau (and other BI tools such as

Data in Various AIMMS WebUI Views

Data in Various AIMMS WebUI Views

QlikView, or Spotfire). This allows a much wider audience within a company to track KPIs on dashboards based on the results from an AIMMS application, using a wider range of graphical capabilities to drill down into the data presented, and to cross analyze these results against data from various other corporate data sources.


Continue reading »

This entry was posted in AIMMS, Data on by .

Data Modifications Invoking Procedures

Skaters showing Newtons third law

Skaters showing Newtons third law

There are various relations between identifiers. On the one hand, when one identifier is functionally dependent on other identifiers, a parameter definition can be used to state such a relation. On the other hand, when several identifiers are mutually dependent, a constrained optimization problem can be formulated to search for the optimal solution. However, there are also use cases whereby a small group of identifiers are mutually dependent and a simple procedure exists to update the “other” identifiers in that group when one of them changes.
A small example is an arrival/departure time dialog:

  • when you know the arrival time, you can compute the necessary departure time, or
  • when you know the departure time, you can compute the resulting arrival time.

In such a use case, you want to invoke a procedure to handle the modification of the value of an identifier.

A validation rule to check the mutual consistency of selected input identifiers is another use case.

Adding buttons to the application UI to handle these situations is not a proper solution; your users run the risk of pressing the wrong button, or forgetting to press it.

So how can we specify in AIMMS that the proper procedures are run upon modifying the data of selected identifiers?

Continue reading »

This entry was posted in Uncategorized on by .

Join our hackathon at the INFORMS Annual Meeting on October 31

b5a180f1-150831-hackathon-image-427x338As you may have heard, AIMMS and Booz Allen Hamilton have formed a partnership to accelerate Operations Research and Decision Science. Booz Allen is a leading management consulting and technology services provider and we are thrilled to work together towards this exciting task. To kick-off our partnership, we are co-sponsoring a unique hackathon experience with Southwest Airlines at the upcoming INFORMS Annual Meeting in Philadelphia.

The hackathon will tackle a real world problem presented by Southwest Airlines, encouraging students and recent grads to use advanced analytics in order to solve pressing challenges. There will be a prize, snacks, networking, coffee, t-shirts, and a lot of fun! The hackathon will take place on October 31, 2015 from 9am to 7:30pm.

Continue reading »

This entry was posted in INFORMS, Operations Research on by .

Styling elements in a table using annotations

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 .

Tweaking the WebUI linechart widget using CSS

This is a short blog on tweaking a WebUI line-chart widget to capture forecasting data focusing on the use of CSS for visualization tuning. My preference for visualizing forecasting data is to have the observations as separate points, and the estimates connected via lines.

Continue reading »

This entry was posted in Uncategorized on by .

Solving a TSP using lazy constraints

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, Modeling on by .

Progress Window Updating Changes

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

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

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 .
  • Sign up

  • Recent Comments

  • Recent Posts

  • Categories

  • Archives