Topics about getting started or leveling up as an AIMMS developer. Datalinks, AIMMS language, building apps...
- 608 Topics
- 1,334 Replies
AIMMS has the possibility to retrieve/store data from/into any ODBC or OLEDB datasource. You could provide a UDL file (in case of OLEDB) or a System/User/File DSN (in case of ODBC). [url=https://how-to.aimms.com/Articles/185/185-connect-to-access-database.html]This article[/url] shows how to generate a connection string to connect to an Access database via the ODBC layer. (However, you can use a similar approach to connect to any database, also via the OLEDB layer.)
Some years ago, before Microsoft Office 2010, life was – in some sense – easier for developers: Office was 32-bit, period. In our days, since the release of Microsoft Office 2010, things are a bit more complicated, as users can now have a machine with a 64-bit native version of Office installed as well. This means, for instance, that a 32-bit application using an ODBC driver to connect to an Access database might not work anymore, since the 32-bit ODBC driver might not exist on a machine with a 64-bit Office installation. In such a case, even though the user has a valid Office installation on his or her machine, the application may still display an error regarding the installation or the registration of the proper drivers on the local machine. [url=https://how-to.aimms.com/Articles/129/129-MSACCESS-32bit-64bit.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
CSV files are a de facto standard for communication of data. AIMMS provides the libraries [code]DataLink[/code] and [code]CSVProvider[/code] for the serializing of CSV files. In this [url=https://how-to.aimms.com/Articles/csv/read-write-csv.html]article [/url]an example is provided for reading data from a CSV file.
The AimmsXLLibrary was introduced in AIMMS 4.20. You can deploy your AIMMS project to more platforms with less restrictions, because this library can communicate with Excel files in server environments where Excel is not installed. For instance, while running AIMMS through a WebUI on PRO or on Linux. The AimmsXLLibrary doesn’t require Excel to be installed in order to read from or write to an Excel (.xls/.xlsx) file. You first need to add the system library `AIMMSXLLibrary` to your model, and then you can use the predefined `axll::` functions. [url=https://how-to.aimms.com/Articles/85/85-using-axll-library.html]Read more...[/url]
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
The AIMMS webinar of August (2014) dealt with “Analyzing infeasible Problems in AIMMS”. In case you missed it, the recording can be found [url=https://aimms.com/english/developers/resources/webinars/webinars-demand/analyzing-infeasible-problems-aimms/]here[/url]. As shown in the webinar, one way to investigate an infeasible problem is by calculating an [b]Irreducibly Inconsistent System[/b] (IIS). An IIS is a subset of all constraints and variables that contains an infeasibility. The “Irreducibly” part implies that the subset is as small as possible. Unfortunately, the IIS could only be calculated for linear (and quadratic) problems. So how about nonlinear problems? [url=https://how-to.aimms.com/Articles/130/130-Infeasible-Nonlinear-Problems.html]Here [/url]'s the article
Unfortunately, when modeling things hardly ever go as planned at the first try and more than once you end up with results that you did not expect. At first glance everything in the symbolic model (i.e. the variables, constraints, and parameters in the model tree) might look OK, but still you are getting results that do not make sense or the solver concludes that your model is either infeasible or unbounded. Luckily, for these cases, AIMMS provides a couple of tools that allow you investigate what is actually being sent to the solver (i.e. the complete generated problem). Investigating the information from these tools, allow you to figure out what part of your model is causing the unexpected results. [url=https://how-to.aimms.com/Articles/136/136-Infeasible-Unbounded.html]Here's [/url]more
The latest version of CPLEX, version 12.7, supports Benders decomposition. Benders decomposition is an approach to solve mathematical programming problems with a decomposable structure, including stochastic programming (SP) problems (it is also known as the L-shaped method). Computational results by IBM, see this [url=http://www.slideshare.net/xnodet/ibm-cplex-optimization-studio-127-benders-modeling-assistance-etc?cm_mc_uid=18650205168313994945525&cm_mc_sid_50200000=1480695733]slide show[/url] by Xavier Nodet, show that Benders decomposition is faster than traditional branch-and-cut for 5% of their nontrivial MIP models. That number might not seem impressive but for certain type of MIP problems Benders decomposition is much faster than other methods. Read more [url=https://how-to.aimms.com/Articles/116/116-Benders-CPLEX.html]here[/url]
In his blog post [url=http://orinanobworld.blogspot.com/2012/04/k-best-solutions.html]K Best Solutions[/url], Paul Rubin provides some information on how to obtain the [b]K best[/b] solutions for a MIP model. One of the approaches he discusses is the solution pool functionality of CPLEX. In this article, we demonstrate how to use the solution pool feature of CPLEX in AIMMS using the the same binary knapsack problem used by Paul. Find out more, [url=https://how-to.aimms.com/Articles/177/177-alternative-mip-solutions-with-cplex.html]here[/url]
Some of the solvers in AIMMS, including the CP Optimizer solver for Constraint Programming problems, support not only returning a single (optimal) solution, but also a pool of feasible solutions. Read [url=https://how-to.aimms.com/Articles/139/139-Multiple-Solutions.html]here[/url]
When you solve a Mathematical Program in AIMMS, the default behavior is that AIMMS will let the solver solve the problem to (local) optimality. There might be situations where you want to stop the solve procedure after a set time period, or once a solution within a given percentage of the best value is available. This article will show you how to apply different stop criteria to a 'solve' statement in AIMMS. [url=https://how-to.aimms.com/Articles/172/172-use-stop-criteria.html]Read More...[/url]
In the simplest form solving a Mathematical Program identifier is done by using the intrinsic [b]solve[/b] statement of AIMMS: [code]solve MathProgram ; [/code] [b][img]https://clipboardjs.com/assets/images/clippy.svg[/img][/b] For the majority of the AIMMS modelers, this suffices for their needs. Whenever you want to have more advanced control over what happens, you have to start working with Generated Mathematical Programs (GMP). With GMP’s, you have full control over the constraint matrix: you can edit coefficients and add new constraints and variables. read more [url=https://how-to.aimms.com/Articles/147/147-GMP-Intro.html]here[/url]
Solvers can share information about the solution process up to a very detailed level. To avoid overhead in generating information that is not inspected anyway, the AIMMS IDE defaults to not sharing any information. [url=https://how-to.aimms.com/Articles/13/13-Solver-Logging-IDE.html]Here[/url]
How to check whether a given combination of value assignments for the variables in your model satisfy all the constraints to produce a feasible solution.
This article explains how to check whether a given combination of value assignments for the variables in your model satisfy all the constraints to produce a feasible solution. You could add an assignment constraint for each of your variables that fixes the variable to the given value and then solve the model again. If the solver returns with the status infeasible, you know that these variable values do not satisfy all constraints. [url=https://how-to.aimms.com/Articles/193/193-check-if-variables-satisfy-constraints.html]Here[/url]
This article explains how to check whether a given combination of value assignments for the variables in your model satisfy all the constraints to produce a feasible solution. You could add an assignment constraint for each of your variables that fixes the variable to the given value and then solve the model again. If the solver returns with the status infeasible, you know that these variable values do not satisfy all constraints. Click [url=https://how-to.aimms.com/Articles/193/193-check-if-variables-satisfy-constraints.html]here[/url]
The identifier types ACTIVITIES and RESOURCES, and the scheduling intrinsic functions as part of the AIMMS constraint programming component are very useful in modeling construction projects and optimizing the makespan of those projects. [url=https://how-to.aimms.com/Articles/140/140-Scheduling-Project-Planning.html]Here [/url]you can find out more.
The purpose of this example is to illustrate a few features of the AIMMS identifier types [i]ACTIVITIES[/i] and [i]RESOURCES[/i]. In the example used, we model the intuition that smaller jobs get a more narrow time window in which they are to be scheduled. In addition, the time needed between jobs, the change over time, increases with the difference in jobs. Read some more [url=https://how-to.aimms.com/Articles/142/142-Narrowing-Time-Windows.html]here[/url]
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].
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]
Sometimes there are parts of a model that you would like to re-use in another AIMMS model. If it is a very generic component, you could choose to create an AIMMS library or an AIMMS module out of it. Please see the chapter “Organizing a Project Into Libraries” in the [url=https://documentation.aimms.com/_downloads/AIMMS_user.pdf]AIMMS The User’s Guide[/url] for more information about this. In the cases that you only want to quickly export/import a set of identifiers once, you can also use the export/import functionality in AIMMS. Also, on this blog we will provide the AIMMS code where applicable as .ams files. You can import these into your existing projects with the instructions found below. In some cases where the whole project is needed (and not only some snippets), we will provide the whole project as an a .zip file. Read it [url=https://how-to.aimms.com/Articles/145/145-import-export-section.html]here[/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
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.