Topics about getting started or leveling up as an AIMMS developer. Datalinks, AIMMS language, building apps...
- 525 Topics
- 1,136 Replies
I am back with the insider's view of our internal demo sessions for new developments. Let me share impressions: Some interesting developments in the AIMMS Presolver, namely the dual reductions. This new development (which can seek and eliminate unnecessary variables) can significantly improve memory usage during the solve phase. If that is your case, I would definitely take a look at it here. Webui has continued to evolve our combination chart with some very nice looking charts to add on top of the bar chart: line, scatter, area, spline… Very helpful for analyzing data and customizing for end-users. And, on top of that, some added functionality to coloring, based on indexes and with transparency. To me, it looks great! Finally, some additions to our Pro Account Manager. This should facilitate managing accounts in our Pro environments from a programmatic pov. Was this useful ? Do you like any of the above news? Let me know!
If you have two versions of an AIMMS project in which you solve a math program then it can sometimes happen that you get two different solutions (after running) while you expected that both versions would return the same solution. Assuming that you are using the same solver (and version), and the solver does not hit a time limit, this usually means that the math programs generated by AIMMS are different. One approach to find these differences is described below.First create the constraint listings for both project versions by setting the following Solvers General options:'Constraint Listing' to 'At every solve' (or 'At first solve') 'Constraint Listing Variable Values' to 'Print variable values'By setting the second option AIMMS will not only print the level values of all variables in the generated math program, but also their upper and lower bounds.The constraint listing will be printed at the end of the solve (by default) but you can also generate it at the beginning of the solve by
Today I participated in an internal demo to showcase some new internal developments. I want to share with the community my impressions: We have continued to evolve our OAuth capabilities on PRO/CLOUD with DEX and OpenAPI. If this is something you need, see that it was part of our release notes: DEX - Release notes Another very nice development that will help our team to replicate our Linux build agents we have a Dockerized Linux Environment. Much easier and guaranteed. (PD&I team was happy!) If your thing is automation, you will be happy to know that we have been working on allowing the Linux environment to build the .aimmspack for a project. This will be available in the AIMMS Command Line Tool. WebUI showed off some quality of life improvements for widget wizards. Even more exciting were the new features with the Combination Chart Widget that will be accessible in the experimental features. Bar chart, legends, zoom,… so many things! Our newest colleague (Vlad) also d
Hi folks, just taking a moment to share some good reads from the OR and optimization space that are making the rounds here... Optimization: From Its Inception by Thomas L. Magnanti Algebra: the maths working to solve the UK’s supply chain crisis by Michael Brooks You (also) need Mathematical Optimization in your organization … now! by Baris Cem Sal Art meets Operations Research — Menu Planning at HelloFresh by Robert Dochow Operations Research Analyst: The Fastest-Growing Job You've Never Heard Of by Edward Rothberg …feel free to share anything good you come across too!
Hi,Is there an pre-defined SAP integration? I am having issues (being approved by the IT for such access) to get SAP ODBC driver. Looking for alternatives, I found that using the SAP integration suite, companies have built APIs to access data from SAP. I wanted to know if AIMMS has such APIs available, or is the ODBC driver the only approach? Thanks
In this new How-To article, we explain the basics of the Data Exchange Library (DEX) and how to integrate a dataset (in our example: JSON) automatically into your AIMMS model by using a mapping file.This article is the start of a How-To series on the DEX. Let us know if you have any questions about using the DEX and/or suggestions for follow-up articles! Go to article: How to integrate the Data Exchange Library
I have downloaded the example model of VRP and going through it.I was not completely able to interpret the Subset code.I have few questions as specified belowwhat the while loop is doing.Below code how please help me understand CurrentSubset(CurrentPosition) := 1; CurrentSubset(c | CurrentPosition < c) := 0;Finally in the if statement line SubsetIndicator(comb, c) := CurrentSubset(c);
I need to fill the 6*6 matrix as shown in the above.Here (i,j) is from 0 to 6So I used below code to achieve the matrix as shown above Here my question is I am trying to achieve this constraint x(i,j)=1 if either i or j =0 or 6Is there a better way to use Index domain to achieve that
Hello All!I wanted to start a thread in the community to discuss implementations and solutions to the Kaggle X-Mas challenge. For those of you who don’t know, Kaggle it is a site intended for promoting data science through courses and challenges. Every X-Mas they have a special optimization challenge. You can find more information below on this years challenge in the link below:https://www.kaggle.com/c/santa-2021/overviewA quick summary is: “Santa is creating a new streaming service and will play a 24/7 loop of 7 films. He would like the showing sequence to be optimal. Hence 3 groups of elves are watching all possible sequences (7! = 5040) of 7 movies to evaluate what is the best sequence.So, it has to do with permutations and TSP’s. Permutations, because we need to identify all possible combinations of sequences. And TSP’s because the problem can be transformed to a multi Traval Salesman Problem. Every salesman in this case is a group of Elves, and every city is a sequence of (7) film
In a new How-To series, @Chris Kuip details how to model composite objects without including compound sets. Using the Reference Element approach (compared to the Component approach) led to the nice surprise that the clearer approach is often also the more efficient one! Articles in the series:Modeling composite objectsExchanging data of composite objectsReporting data over composite objectsDeploying AIMMS set functionality to composite objectsHierarchical composite objectsModeling styles for using reference elements
Using WinUI, The user can select the time granularity in the model (4,8,12,24 hours). Everything works, except the Gannt chart in which the “X-axis ->Unit of Measurement” cannot be a reference to a parameter. Is there a way to solve this issue so the Gantt chart can also be responsive to different time granularities? Thanks
Dear All,I'm designing an optimization model to determine the power generation capacity from local energy sources. If the local energy sources are not sufficient, the need for electrical energy that cannot be met from local energy sources is met by importing electrical energy from other regions.I'm currently using an imported electrical energy variable (Imp_Electricity) in the energy balance constraint function. However, after using the price of imported electrical energy, the optimization results show that all electrical energy needs are met by imported electrical energy and no generating capacity is required. This is because importing electrical energy is cheaper than having to build a power plant. And when the Imp_Electricity variable is assigned a value of ZERO, the model is not feasible because the energy balance constraint function is violated.The result I expect from the model that I am currently designing is that the model can prioritize the construction of power plants to dete
Dear community, I am implementing a structure change in my database declaration and keep coming across the error below. It occurs when mapping database columns to variables, using the DatabaseTable function. The change I have made is in adding an index "st”, and the column names in the data source Access Database.The error:The index "uc" present in Ramp_rate(uc, yr, ct) is not present in the previously generated entry (WorkingH2(i, yr, st)) of this read statement. AIMMS generates communication links when they are not explicitly specified between the keywords read/write and from/to. These entries are constructed by considering the column names in the database, the identifier names in the model and/or the database table mapping attribute.The variable Ramp_rate has little connection to the read statement where the error occurs. Has anyone encountered this error before, and do you have an idea what problem this error most likely hints towards? Thank you kindly for your help in advance,Sa
Hello! I am facing an issue with my model. I have a variableA(index1,index2,index3,index4)and I am defining another variableB(index2,index3,index4) as max(index1, A(index1,index2,index3,index4))However, while running the model, it gives an error that the the model become non linear. Is there a way to work around this? Regards,Vishwesh Patil
Hello everybody,I have a problem with around 3000 suppliers, each supplier is independent. Our Aimms runs in a loop solving a MIP model for each supplier with around 800 variables and a gap of 2%. Each model runs very quickly at around 5-6 seconds, but the entire run of 3000 suppliers takes around 30-40 min. We need to improve the time of the model and I would like some sugestions. Options we are already thinking:a) Merge the models in batchs of suppliers, creating a bigger model and pass it to the solver.b) Performance tunning of the CPLEX optionsIs there any other suggestion? Is there some way to run the models in parallel for example?
Dear AIMMS experts, it would be great if there is a working example related to calling AIMMS from python using the latest release REST API.Also, following on other recent python-AIMMS questions here, could you kindly clarify the following questions:is the method of calling AIMMS using 'win32com' in python still valid? (as seen in the office github repo example in 'examples/Functional Examples/Calling AIMMSCOM/RunAIMMS.py ' ? is the previous method of calling python using 'subprocess' module and command line still valid for the recent version of AIMMS ? does the ways of calling AIMMS in python subject to the type of license I have (I have both free and paid academic licenses) ?
Hi, I seem to have difficulties with defining the number of decimals when rounding my parameters . The function description tells me I should define a positive integer for defining the number of decimals on the right of the decimal point, but this function gives me a different number of decimals. I use Units of Measurement and I think the ‘internal’ unit is rounded instead of my defined unit for the specific parameter (which differs in order 6 (10^6) ). Do more people encounter this problem?
@Gertjan @MarcelRoelofs I’m wondering: is the DataExchange library the recommended way to read Excel files from now on, for new apps? I think I understood that from earlier conversations and also the replies above, but I’m hesitating since the AXLL library is mentioned as a best practice here: https://how-to.aimms.com/Articles/85/85-using-axll-library.html.
I need to impose a time limit for AOA and after the time limit is reached, the value of the incumbent is returned.MPOuterApprox::TimeLimit :=500;GMPOuterApprox::IsConvex := 1;GMPOuterApprox::DoOuterApproximation( GMPRO );BestAOA := GMP::Instance::GetObjective( GMPRO ) ;ProgAOA := GMP::Solution::GetProgramStatus( GMPRO, 1 );display BestAOA , ProgAOA; GMP::Instance::Delete( GMPRO ); in the progress window I can see a value to the “best solution” is assigned and the gap is around 30% but when the time limit is reached, the values assigned to BestAOA , and ProgAOA are as follows: bestAOA := na ; progAOA := 'IntermediateInfeasible' ;I appreciate any help in advance.
Dear staff,I would like to receive your help with linearizing the following constraint. Given the indexes i, j, c, a I have the following variables and parameters: x (i,j,a) continuous variabley (i,j,a) continuous variableR (i,j,c,a) binary variableA (i,j) parameterB (c) parameter The constraint that I need to write is the following: y(i,j,a) = (x(i,j,a) / A(i,j)) * (1 - sum((c,a1)|ord(a1) <= ord(a), R(i,j,c,a1))) + sum((c,a1)|ord(a1) <= ord(a), (x(i,j,a) / B(c)) * R(i,j,c,a1)) forall i, j, a I am struggling in particular with the linearization of the second part:sum((c,a1)|ord(a1) <= ord(a), (x(i,j,a) / B(c)) * R(i,j,c,a1)) Please note that there are already other constraints imposing that sum((c,a), R(i,j,c,a)) <= 1 forall i, j, therefore the summation of sum((c,a1)|ord(a1) <= ord(a), R(i,j,c,a1)) is always either 0 or 1. Thank you,Kind regards,
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.