Topics about getting started or leveling up as an AIMMS developer. Datalinks, AIMMS language, building apps...
- 618 Topics
- 1,349 Replies
Applications that are around for a while clearly have value to an organization. However, some identifiers within the application, such as sets, parameters, variables, and procedures, may no longer be used over time.Cleaning up these unused identifiers has some advantages:It lowers the case size, as the memory used for the data of the unused identifiers is no longer stored in the cases. It prevents confusion among model developers that have to maintain the application.In this how-to, we present a small library that will help you find any unused identifiers in your application. If you have any questions about the article, contact @Chris Kuip or leave a comment below.
Hey. I am trying to implement a plot in a WinUI that displays simulation progress. In this plot, I am showing a variable value changing with simulation iteration (simulation continues until the iteration value has reached a limit). The variable is not in a math program, hence, I believe I can not obtain its value using callback (using RetrieveCurrentVariableValues procedure). Anyways, the variable gets updated at the end of every iteration. Presently, the plot between the variable value vs iteration does not show when the simulation in in progress (or when procedure is running) and appears after the procedure is over. Is there anyway to update the plot when the procedure in running? Thanks. Here is the structure of the procedure I am running: while (iteration limit is reached) solve Mathematical program1; solve Mathematical program2;Update Plot Variable using variables from math programs 1 and 2; (Plot variable to display in plot)iteration = iteration + 1;endwhile;
Solutions from rostering applications affect the daily life of the people rostered. Therefore, the application developers and planners iteratively improve the rostering applications and the quality of the solutions, often based on the feedback of those affected by the rosters created. The close link between the modeling language and GUI pages in AIMMS makes it easy to study the solutions and (re)formulate constraints. Read about it [url=https://how-to.aimms.com/Articles/137/137-Small-Rostering.html]here[/url].
This article explains how you can control settings for errors and warnings within AIMMS. In AIMMS, the difference between errors and warnings is summed up: [list] [*][b]Errors[/b] indicate that something is not correct. [*][b]Warnings[/b] indicate that something might not be completely correct. [/list] AIMMS has options that allow you to control almost every warning in AIMMS. These options have the following possible values: [list=1] [*]Off [*]Warning Collect [*]Common Warning Default [*]Warning Handle [*]Strict Warning Default [*]Error [/list] [url=https://how-to.aimms.com/Articles/265/265-settings-for-errors-and-warnings.html]Read more...[/url]
This article explains how to minimize an objective which contains a binary [code]min[/code] operator. The idea of using this binary [code]min[/code] operator was to introduce a ceiling to the contribution of a variable to the objective. For example, let’s take a minimization objective containing the following term: [code]50 * min( p_par, v_var). [/code] [url=https://how-to.aimms.com/Articles/247/247-minimize-objective-min-operator.html]Read more...[/url]
Does AIMMS store the information after an user triggers multiple upon change procedures.For example, 2 parameters are in a UI table and an user uses block editing to change both parameter , both wiht their own upon change procedure.Can you know as a developer during the first one that called that also a second will be called later.(i know the order depends on the model tree)
I am trying to open a project that was written in AIMMS 4.37 with AIMMS 4.88. Upon opening it, the window shows ‘compiling’ at the bottom for a few seconds before crashing and closing down. Is this to be expected?Is AIMMS 4.88 compatible with projects written in older versions?Should I expect to see an error message instead of the whole program crashing? Any help would be much appreciated! Thanks,, Sandip
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
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]
Hi,I am trying to create a variable in librarymodule2 which uses index based on sets declared in librarymodule1. It throws an error saying: “The index “lm1::i” is not present in the interface of Librarymodule “librarymodule1” and therefore cannot be referenced from within variable “lm2::var”. I am new to AIMMS but my colleagues have done this sort of thing many times and never encountered this error. It is not clear how to resolve this. BestVikram
When you deploy your application, AIMMS uses a standard [b]splash screen[/b] at startup. However, you have the option to provide your own custom [b]splash screen[/b]. The procedure is surprisingly simple! [url=https://how-to.aimms.com/Articles/221/221-adding-a-custom-splash-screen.html]Read more...[/url]
I recently published a “how-to” article that provides an example of Python code that can be used to publish a project, run a specific task on it and delete the published project. Use case?“When using a CI/CD pipeline” you may want to test the app as follows: Publish Run scenario Cleanup (including removing the app) https://how-to.aimms.com/Articles/571/571-publish-run-delete.html
Hi, when I solve an optimization problem (which is convex), though there should be only one optimum solution theoretically, I can get nearly the same objective value but totally different decision variables under different solvers and even within the same solver under multi run.Now I want to reduce the precision on the variables. Currently the continuous variables may search into 20 digits after the decimal point, how can I limit it into maybe the first two digits after the decimal point? Can AIMMS do this?Thanks a lot.
Hi,I would like to save a section of my model to a case using the new data management style “Disk files and Folders” (https://documentation.aimms.com/functionreference/data-management/case-management/casefilesave.html)However I get the following error: I made sure my section is part of AllCaseFileContentTypes, and it does work if i use CaseCommandSaveAs, just not for CaseFileSave (or CaseFileSectionSave), but obviously I don’t want to always manually save it. Could you help me out with this error?
Recently one of our customers encountered a REST API that didn't accept Json UTF8 files starting with a Byte Order Mark (BOM). By default, the PUT files created by AIMMS are UTF8 files with a BOM at the start to mark these files as UTF8 files.There are some ways to circumvent this issue:Set the hidden AIMMS Project Setting "Default output character set” to UTF8NoBom. Use the function dex::ConvertFileToEncoding(inputFile, inputEncoding, ouputFile, outputEncoding, noBOM) to convert a file. The .json files created using dex::WriteToFile(dataFile, mappingName, pretty) are UTF8 files without a BOM.
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]
A mathematical formula is considered data within an application when it is read in as a string during the application’s runtime, and subsequently used in the construction of selected assignments and constraints. The concept “Formulas as Data” can be applied to several optimization apps, for instance those that deal with “Blending on Specification” and “Asset Management.” In these types of applications, the benefit of the end-users is that they do not have to share these formulas with anyone else, including the developers of the apps. For such apps, good formulas are expensive to develop and having good formulas provides a competitive edge to these end-users. In AIMMS, formulas can be used in the following way ... [url=https://how-to.aimms.com/Articles/131/131-Formulas-as-Data.html]here[/url]
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.