Although 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
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.
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?
As 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.
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?
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.
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.
The 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.
Encryption 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.
The 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.
AIMMS started life as a desktop product. Users were mostly individually responsible for looking after their applications, managing the changes, making back-ups, etc. Unwanted incidents such as bugs, accidental project deletion and hardware failures usually had a very limited local impact. Of course mission-critical AIMMS applications were already managed more rigorously.
The advent of AIMMS PRO is introducing new application management challenges as many more users and/or business operations potentially depend on a single PRO platform for performing their tasks. We see our clients looking for ways to professionally operating their PRO platforms. Purpose of this blog post is to provide you with some aspects to consider in this context. We are not proposing anything novel, but merely pointing out some common practices of application management. Continue reading »