Topics about getting started or leveling up as an AIMMS developer. Datalinks, AIMMS language, building apps...
- 620 Topics
- 1,353 Replies
Hi all, I am going to run the AIMMS with many different scenarios(case data) automatically. In case the solver may not find the optimum solution in some of the scenarios, I wonder is there any parameter or index (such as 0 or 1) I can get after solving each case to indicate if the solver has got the optimum solution?
Let me first start with one remark: The openAPI client generation is one awesome addition!!! 😀With a bit of a simple workaround I was able to create relatively easy an AIMMS library that was able to import a rather large and complex JSON file that had a quite deep nested structure in it.Now that I have the data in an AIMMS library, I know am trying to write the code that parses the information from the library into the actual AIMMS sets/parameters that I will use in a model.For this part, one of the problems of the nesting is that the generated library works on lots of subsets of integers that restart counting from 0 every time In the following example (that hopefully illustrates it enough)Locations property (contains list of locations):Element 1 in locations list (will map to i_locations=1 in aimms library) LocationName: Location A Products (contains list of products) Element 1 in productions list (contains dictionary of name/color, maps to locations::product::i_product=1 in aim
The ROGO puzzle, [url=http://www.rogopuzzle.co.nz/]rogopuzzle[/url], challenges players to find a good path on a board, pick up treasures, and avoid pitfalls. This puzzle, and its corresponding iPhone app, were originally developed in New Zealand. In this post, I’ll explain a method for solving ROGO puzzles using constraint programming in AIMMS. Find out how to solve it [url=https://how-to.aimms.com/Articles/138/138-ROGO.html]here[/url]
Dear AIMMS-community,first, I’d like to thank you for the great software. I think AIMMS is great. About the problem. It's probably easy for the experts among you to solve. So far, I haven't found the right solution. I am developing a model to analyze cost efficient pathways for the ramp-up of production plants for renewable fuels over several periods (t). I consider different plant generations (g), where a lant of a newer generation has "better" characteristics than the ones of the older generation.The addition of plants into the system is defined by a free variable "PLANT_COMMISSIONING(t,g)". Based on this, the overall plant infrastructure is defined with various other variables and constraints. I would now like to integrate the "behaviour" that a new plant generation can only be built if plants of the previous generation have been built beforehand (upscaling), e.g. if a minimum number of plants of the previous generation have been built beforehand. I am looking for an MIP approach fo
A database table may not always match the data in the related AIMMS model. In addition, we may want to write all possible elements explicitly, or just a predetermined selection of rows instead of just the non-zeros. Last but not least, from the context in the application, it may be clear that all of the data is changed, or just one or a few rows. This is why it is important to select the number of rows to be written (all or few) and there are several tactics available to help you make this selection. We discuss the following tactics in this article: Writing non-zeros directly to the database table. Writing all possible elements to the database table. Writing a selection of rows to the database table. Insert a single row into a database table. Read more...
Like one day have 24 hours, I need to calculate the variables for 24 periods, but these variables are defined by 25 points, so I define the index t as “25”. For example variable A contains 24 elements, A(1) = B(2)-B(1)…...A(24)=B(25)-B(24). If I define an index “t” as 25, I can simply define the B as B(t) using t (1 to 25) as the domain. But How can i define A which only contains 24 elements, actually from 1 to 24, can I use part of t domain from 1 to 24?
AIMMS functions and procedures use local identifiers to hold the values of arguments. The model editor functions that form the basis of runtime libraries operate on elements of AllIdentifiersThese functions create, modify, and delete corresponding global identifiers in the model. In other words, they do not operate on local identifiers. This short tutorial by @Chris Kuip teaches you to add local identifiers to AIMMS procedures and functions that are created at runtime.
Hi, I was using the GeoFindCoordinates function in AIMMS to map a given city name to a lat/lon combination and received an error message all of the time. Then I remembered I was on VPN and maybe there was an issue with the connectivity, so I disabled my VPN connection and tried again and the GeoFindCoordinates was able to execute without a problem.Whenever I am connected to the VPN connection at work, all my outgoing connections must go via a proxy server. Almost all programs I am working use the standard http_proxy and https_proxy environment varaibles, but it looks like GeoFindCoordinates is not doing this.I know there was a possibility to provide proxy settings for activating a license, but I can’t seem to trigger that option (as this seems to use my IE proxy settings).Is there any other way that I can set the proxy settings for this function? Also, could there be a potential for any other functions (like calling webservices, etc) that make outside HTTP(S) connections that they do n
The variable X is with the index domain i, while the variable Y is with the index domain j. The number of element in j is twice that of i, which means J = 2*I when seeing these two index as number.Now I want to write a constraint:X(i) <= Y(2*i)How can I do this in AIMMS?
By default, AIMMS asks you whether you want to save changes to data when you close your project. This behavior depends on which data categories and case type are currently active. You can also use the data change [b]monitor[/b] functions to check when there are changes in a given subset of identifiers in your model since the last time you checked, based on a data category and case type. [url=https://how-to.aimms.com/Articles/250/250-monitoring-identifiers-for-changes.html]Read more...[/url]
Goodafternoon, In the figure below the result of a solver session is given. Is their a way to figure out what the program status and solver status imply? I used the CPLEX for solving the model.If more information is needed, don't hesitate to contact me.Kind regards,Ieke Schrader Progress window
An AIMMS library can be reused in other projects. To solve an optimization problem in a library we’re dealing with two abstraction mechanisms: Procedures where sets transferred via the arguments have different meanings. Declare global variables and constraints with a fixed index domain within the library, and use subsets of AllConstraints and AllVariables locally within that library. These two abstraction mechanisms do not work together naturally. This article explains how we can bring these two abstraction mechanisms together using element parameters. We’ll use an example based on the Transport Problem. Read more...
Many models involve some time-based notion. This article explains how using Calendars in AIMMS can make working with time a lot easier. Find out [url=https://how-to.aimms.com/Articles/189/189-using-calendars-in-aimms.html]here[/url]
When you need input data from JSON files, you first need to convert JSON files to XML files to make the data compatible with AIMMS. Here we provide a conversion tool in the form of a custom AIMMS library. It contains a two-way conversion AIMMS library between XML and JSON files: [list] [*]ConvertFromJsonToXML [*]ConvertFromXMLToJson [/list] [url=https://how-to.aimms.com/Articles/283/283-convert-json-to-xml.html]Read more...[/url]
In the context of the AIMMS environment, a library is an AIMMS project that can be included in/added to other AIMMS projects. Each library in AIMMS contains a subset of project files. You can divide a large project into smaller sub-projects, enabling multiple developers to collaborate easily by sharing parts which are relevant to the entire project. Read [url=https://how-to.aimms.com/Articles/84/84-using-libraries.html]here [/url]how to add a new libary to the current project
As a modeler, you can find detailed logs to analyze an issue before reporting it to support or on the community. AIMMS comes with loggers, a logging feature somewhat similar to the log4j technology. A good tactic for analyzing these logs is to scan for [ERROR] or [WARN]. When an error or warning is related to the issue you are analyzing, check the lines just above it. This article provides two files that are templates in creating this information. Read more...
I want to express “State_CHP=0 when Input_energy(t,conv)=0” and “State_CHP=1 when Input_energy(t,conv)>0”, but there always some errors. I have checked the help manual, but there is no specific example of how to explain it.Thank you very much. You will be of great help to me. Thanks.
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
Existing successful applications often have several features. To realize all these features there is a significant body of code.An application developer may be faced by a small change that causes significant differences in runtimes.Examples of such small changes are:a change in data, a code hotfix, a switch of computing environment, or two different persons operating the application.The location of the code where these performance differences manifest themselves may not be obvious. Facilitating the adage: measuring is knowing: the AIMMS engine provides the diagnostic tool: AIMMS Profiler.The AIMMS application ProfilerRunCompare is a small tool to compare two profiler runs. Come and check it out here.
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]
Hello,I am trying to use database procedure function to extract some data from a HANA view database.Unfortunately, table name has dots (“.”), so it seems like AIMMS cannot parse it for SQL query properly. For example, the table name is something like xx.yy.zz/pp, where you can see some dots between xx, yy, and zz. Can you help us to figure out proper syntax to write sql query with this type of name?Thank you!
I encountered this error when running the model. The model is fine, since it works with another set of input data. But with this particular data set, it gets stuck in the Presolving phase, and returns nothing. After force exciting the model, This is the message that it shows in the .err file. Have the same issue when running on the cloud as well.
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.