Topics about getting started or leveling up as an AIMMS developer. Datalinks, AIMMS language, building apps...
- 623 Topics
- 1,357 Replies
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”. Lots more to explore [url=https://how-to.aimms.com/Articles/135/135-UTF8-Encoding.html]here[/url]
[url=https://how-to.aimms.com/Articles/170/170-memory-in-use.html]Investigate Memory in Use[/url] discusses the different tools available in AIMMS to investigate the memory usage. This article discusses an approach to log the memory used while executing a procedure to identify any possible memory leaks. Find out more, [url=https://how-to.aimms.com/Articles/134/134-Monitoring-Memory-Use.html]here[/url]
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 de-allocation 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. We will discuss a couple of the tools available in AIMMS to investigate memory usage. [url=https://how-to.aimms.com/Articles/170/170-memory-in-use.html]Here[/url]
The time spent by AIMMS applications can be divided into AIMMS execution time ( including evaluation parameters with definition, executing procedures, generate matrix for solvers, etc), the time spent by solvers, and the I/O time. [url=https://how-to.aimms.com/Articles/125/125-execution-efficiency.html]Here [/url]you find some examples.
There are situations where you would like to know how long the execution of something in AIMMS took. When you are working as an AIMMS developer, one of the tools you have for this is the AIMMS profiler. This profiler will provide you with information about how long each statement in an execution took, as well as how long the evaluation of the definition of a parameter took. More information about the profiler can be found in the [url=https://documentation.aimms.com/_downloads/AIMMS_user.pdf]AIMMS The User’s Guide[/url] Chapter “Debugging and Profiling an Aimms Model”. When running in End-user mode, the profiler is not available. To still be able to give the end-user feedback on how much time certain steps took, you can create a ‘stopwatch’ in AIMMS code. Read [url=https://how-to.aimms.com/Articles/144/144-Stopwatch.html]here [/url]how this can be achieved.
For the past couple of years, we have worked on improving the compiler and execution engine in AIMMS. We’ve done this in a way that minimizes problems in existing models. During this process, we have encountered issues in the existing code that are not in line with the Language Reference. We struggled with the handling of subsets of integers in an expression in particular. Read [url=https://how-to.aimms.com/Articles/112/112-Integer-properties.html]here[/url]
Very often, you will find yourselves having to define a certain property for an item based on its category. For example, cost($) of an item based on the size of that item (small, medium, or large). This is similar to using lookups in Excel to create a map from the size-cost table to the list of items. This article will show you how to model such a category mapping in AIMMS. Find a use case and more information [url=https://how-to.aimms.com/Articles/17/17-category-mapping.html]here[/url]
I would like to know how to get the sensitivity analysis of a constraint shadow price. For example, say we have the following constraint: x+y ≤ c and its shadow price "SP". How do I get the relationship between c and SP ? In other words, the sensitivity analysis of SP according to c. I would appreciate if you can show me how to achieve this in AIMMS. Thank you very much for your assistance!
Set in AIMMS can 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. [url=https://how-to.aimms.com/Articles/121/121-set-index-element-parameter.html]Here[/url]
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 [url=https://how-to.aimms.com/Articles/133/133-External-Functions-InputData.html]blog [/url]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. [url=https://how-to.aimms.com/Articles/133/133-External-Functions-InputData.html]Here[/url]
When constructing AIMMS models, we are usually able to handle repetition and structure by adding indexes. For instance, if we have built a model for the conversion process of a single machine, we do not have to duplicate the relevant model code when given an extra machine. Instead, we can use an extra index over a set of machines. However, there are situations where adding an extra index is not an option. This blog post will provide an example of such a situation, illustrating how the issue can be tackled using the AIMMS Model Query and Model Edit functions Here is a [url=https://how-to.aimms.com/Articles/132/132-Repetive-Patterns-Model-Edit.html]link [/url]to the blog
If your model contains multiple calls to these functions, you will need to have this “Option Seed” statement only before the very first call and not all the other calls. Find out why, [url=https://how-to.aimms.com/Articles/119/119-Reproducible-Random-Sequence.html]here[/url]
An introduction to the Email Client library with an example project. [h2] [/h2]The Email Client library provides you with an API to create and send emails from within your AIMMS project. The library does not require any external programs to be installed and can be used from both AIMMS Developer and AIMMS PRO. It is also available on AIMMS Cloud. You can use this feature, for example, to send emails containing the results of your optimization model to other users in your organization. Supported features: [list] [*]template files with related attachments (such as images) [*]placeholders in templates (to be replaced by data specified in AIMMS identifiers) [*]downloadable file attachments [/list] Read [url=https://how-to.aimms.com/Articles/104/104-using-email-client-library.html]here[/url]
The Email Client library supports the use of template files in HTML and TXT formats. You can set up templates with placeholders to be replaced by values from identifiers in your AIMMS project. Read [url=https://how-to.aimms.com/Articles/111/111-creating-email-templates.html]here[/url]
Although both the traditional AIMMS Windows UI and the new AIMMS Web UI offer excellent data visualization capabilities to view the data present [i]within[/i] 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. [url=https://how-to.aimms.com/Articles/124/124-tableau-integration.html]Here[/url]
n AIMMS versions 4.40.1 and higher, WebUI is the default user interface. When creating a new project, AIMMS gives you the option to select a default UI and if WinUI is not selected, the [i]Page Manager[/i] will not be available in your project. This article outlines how to re-enable the [i]Page Manager[/i] in your AIMMS project. [url=https://how-to.aimms.com/Articles/95/95-change-default-ui.html]Here[/url]
A download widget in the WebUI is able to point only a unique file name. Thus if you need to download multiple different files, you would need multiple download widgets. However, you may use ZIP files (or equivalent compressed format, such as TAR files on Linux). The question is, how to automatically generate a zip file out of several files thanks to AIMMS, such that your end-user would be able to download it from the End-user mode (WebUI) in one click? In developer mode, on PRO or on the AIMMS Cloud ? [url=https://how-to.aimms.com/Articles/download-compressed-files/download-compressed-files.html]Here[/url]
[url=https://rosettacode.org/wiki/Haversine_formula]Haversine code[/url] in various computer languages is publicly available to compute the distance between locations. In this article, we use it as an illustration of how to create an external function using [url=https://visualstudio.microsoft.com/]Microsoft Visual Studio[/url]. Find out how, [url=https://how-to.aimms.com/Articles/153/153-external-haversine.html]here[/url]
Say you have a wonderful AIMMS application, that needs to link a Database Table identifier (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 it to read your SQLite database. This blogpost presents how to: [list=1] [*]Install the SQLite driver, [*]Connect your SQLite database and [*]Verify that you can access it through AIMMS. [/list] [url=https://how-to.aimms.com/Articles/118/118-Connect-SQLite.html]Here [/url]you can read the blog
The AimmsXLLibrary can communicate with Excel files in server environments where Excel is not installed. This library is especially useful when building WebUI apps for AIMMS PRO in a server environment. Find out how to use it, [url=https://how-to.aimms.com/Articles/85/85-using-axll-library.html]here[/url].
For solving Mixed Integer Nonlinear Programming (MINLP) problems AIMMS offers, besides the solvers BARON and KNITRO, the AIMMS Outer Approximation algorithm, or AOA for short. [url=https://how-to.aimms.com/Articles/192/192-solve-minlp-with-outer-approximation.html]Here [/url]is the article.
Depending on which solvers are allowed by your AIMMS license, you might have multiple solvers capable of solving a given type of mathematical program (e.g. LP, MIP). In this case, you can instruct AIMMS in a variety of ways which solver should be used to solve a problem of a specific type. [url=https://how-to.aimms.com/Articles/178/178-change-default-solver.html]Here [/url]is explained how to change the default solver
Already have an account? Login
Please use your business or academic e-mail address to register
Login to the community
No account yet? Create an account
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.