MPL, AMPL, or OPL?
|
|
Thread rating:  |
opresearchman - 31 Jul 2008 20:49 GMT I would be thankful for any help. After struggling with java, Concert, and lp-files (see below for details), I'm about to give up and recommend that my company purchase Maximal's MPL, AMPL, or ILOG's OPL. Does anyone have benchmarking data (memory and speed) for these algebraic modeling languages? I've heard that OPL is slower and more memory hungry than MPL and AMPL, but I couldn't find any supporting evidence after searching the web. I used AMPL when I was a student, and I suspect that learning and using OPL and MPL is just as easy as learning and using AMPL.
************ Don't read the rest of this unless you are wondering about the details *************
I am struggling with getting large instances of a mixed integer programming model sent to a CPLEX solver (using java and CPLEX Concert on a Windows XP machine with 2GB of memory), but I keep getting "out of memory" errors. I'm simply reading in an lp-file using java and CPLEX Concert. I don't run out of memory reading the file, but I run out of memory during CPLEX's presolve phase. We have some old C++ code that is linked to an older version of CPLEX using Concert. This doesn't run out of memory until much later, but this isn't an issue. I can simply start the solver back up with the best solution found so far and repeat until I solve the problem (although I have to admit there must be a better way to do this). Since I don't have a c++ compiler and I am not a very good c++ programmer, I can not update this old CPLEX code to link with the latest version of CPLEX. It's hard for me to understand why the java version of Concert runs out of memory so quickly compared to the C++ version (even when I use the - Xms1000M and -Xmx1000M options when running the java program).
A.L. - 31 Jul 2008 21:16 GMT >I would be thankful for any help. After struggling with java, >Concert, and lp-files (see below for details), I'm about to give up >and recommend that my company purchase Maximal's MPL, AMPL, or ILOG's >OPL. Does anyone have benchmarking data (memory and speed) for these >algebraic modeling languages? No serious benchmarking, but I tried briefly AMPL and rather extensively OPL and MPL. I decided to stay with MPL. No problems with defining large problems, supports all possible solvers in the world and is really fast.
Most important issue - vendor (Maximal Software) is pretty stable and provides good support
A.L.
sbmack7@gmail.com - 31 Jul 2008 22:38 GMT > On Thu, 31 Jul 2008 12:49:54 -0700 (PDT), opresearchman > [quoted text clipped - 14 lines] > > A.L. I use MPL and agree it's fast. Note though, that if you want total control of the modeling environment, you'll have to buy the Optimax Object Library and maybe the Database Connection too. I really like the developer Bjarni Kristjansson, (we are both in Arlington VA). But he has not released a major upgrade in 5 years, which makes me ask myself why we kept paying annual maintenance. So that's another thing to consider. But at any rate, it is a very good system.
However, if your biggest problem is memory usage then the cheapest thing to do is buy more memory. Or even a new machine with more memory. That would still be only 30% of the cost of MPL/Optimax. Although once you have a model manager, you never want to go back to writing code. So perhaps buy both.
Good Luck.
SteveM
P.S. you figure out a bunch of tricks using MPL. My favorite is to develop the formulation piece-wise and then Parse the model into a format the converts your formulation to Standard Form. I use XA format. That allows you to look at your variables, constraints and RHS to make sure they are written out properly.
GdL - 01 Aug 2008 17:32 GMT On Jul 31, 2:38 pm, sbma...@gmail.com wrote:
> > On Thu, 31 Jul 2008 12:49:54 -0700 (PDT), opresearchman > [quoted text clipped - 40 lines] > > - Show quoted text - Can I please suggest you have a look at AIMMS as well. AIMMS has no issue w/ extremely large models and features are more rich than the languages you refer to. As suggested, more advanced hardware is always a good suggestion: we offer 64-bit version as well that remove the limit of 2GB of 32-bit machines, or you could change your 32-bit machine boot up and allow CPLEX to use 3GB. See also knowledge base article on this: http://www.aimms.com/aimms/knowledgebase/kb000022.html
Nice addition of AIMMS that it gives you various diagnostic tools for your model that include insight of memory usage, size of your model and model parts (elements, sparsity etc), a dynamic math program inspector and more. Ideal tools to support and improve model development. See also: http://www.aimms.com/aimms/product/diagnostic_tools.html
Thanks,
Gertjan Paragon Decision Technology Developers of AIMMS, www.aimms.com
Optimize_guru - 02 Aug 2008 06:35 GMT If you have plenty of semi-integer and semi-continuous variables, I'd recommend using XPRESS instead of CPLEX to avoid additional binary vars introduced for each semi. If almost all variables are semi- continuous (it makes sense in some problems), then instead of for example million columns, you may get the column count close to half- million. I solved a couple of huge problems with XPRESS that CPLEX couldn't handle on a 32-bit server, because of introducing extra binary per semi variable.
ddebarbieux@nordnet.fr - 29 Sep 2008 17:03 GMT Can I please suggest you have a look at OptimJ.
OptimJ is an extension of the Java programming language with language support for writing optimization models and powerful abstractions for bulk data processing. The language is supported by programming tools and language-aware editing under the Eclipse environment.
More information: http://www.ateji.com/optimj.html
--- Denis Debarbieux OptimJ Product Manager
Mike - 03 Oct 2008 03:58 GMT On Sep 29, 9:03 am, ddebarbi...@nordnet.fr wrote:
> Can I please suggest you have a look at OptimJ. > [quoted text clipped - 8 lines] > Denis Debarbieux > OptimJ Product Manager I used GAMS and AMPL for 3 years. Later I used MPL of Maximal.
Certainly I would vote for MPL of Maximal. It is ultra fast, neat, efficient, and with OptiMax I created a powerful tool that won a national award in 2006.
Mike
Bob Fourer - 03 Oct 2008 20:17 GMT > On Sep 29, 9:03 am, ddebarbi...@nordnet.fr wrote: > [quoted text clipped - 18 lines] > > Mike It's worth taking a hard look at several systems, considering what you are trying to model and implement, and how you prefer to go about it. There are great differences among applications and among the people who design them, and arguably there are equally great differences among the available modeling systems. Thus an excellent choice in one situation may be mediocre in another. For example what seems like a powerful modeling language or environment to some people may seem klunky and unintuitive to others who have different backgrounds and are doing different things.
Bob Fourer AMPL Optimization
bob - 07 Oct 2008 19:10 GMT I have been using AIMMS for about 4 years now. I believe may be more expensive than other tools, but for someone who is creating a large scale mixed integer model like you, the AIMMS+CPLEX duet may be worth checking out. The guys have a free 30 day trial, with full functionality, that can help you make up your mind. One of our MIP applications here runs on a x64 bits platform and is very memory intensive (just the data takes about 3GB of memory). AIMMS handles it very well and its speed is amazing. Also there are a lot of development tools that can surely help you tune up your model, by identifying useless data or a inefficient calculation.
best, Sergio Bruno
JDB - 08 Oct 2008 17:08 GMT > I have been using AIMMS for about 4 years now. I believe may be more > expensive than other tools, but for someone who is creating a large [quoted text clipped - 9 lines] > best, > Sergio Bruno There is a side by side comparison of each modeling language (AMPL, GAMS, MPL, OPL, Xpress-Mosel) modeling an mrp formulation model in:
"Intro to Computational Optimization Models for Production Planning in a Supply Chain" by Stefan Voss (VoB) and David L Woodruff ISBN number 3-540-29878-9 Springer 2005
JDB
jdb - 10 Oct 2008 21:26 GMT Actually all examples are listed at:
http://faculty.gsm.ucdavis.edu/~dlw/scm.html
JDB
There is a side by side comparison of each modeling language (AMPL, GAMS, MPL, OPL, Xpress-Mosel) modeling an mrp formulation model in:
> "Intro to Computational Optimization Models for Production Planning in > a Supply Chain" [quoted text clipped - 3 lines] > > JDB Patrick Viry - 15 Oct 2008 10:21 GMT > CPLEX Concert. I don't run out of memory reading the file, but I run > out of memory during CPLEX's presolve phase. We have some old C++ > code that is linked to an older version of CPLEX using Concert. If this happens within CPLEX, it's probably unrelated to the fact of having used a Java API or a C++ when stating the model. I'd guess the difference comes from using different versions of Concert.
A few hints if this can help:
1) Buy memory, it's cheap
2) If you're reading from an LP file, I understand that you problem is linear? In this case you can bypass Concert and directly target the CPLEX callable library. This makes a huge difference in terms of memory usage.
3) -Xmx1000M : This will give Java a maximum of only 1GB from the 2GB available on your machine. But as I mentionned, this is probably not much relevant for your problem.
Speaking of modeling languages, an important difference in terms of memory consumption is whether they do the core of their job at run-time or at compile-time. We'll be providing two versions of the CPLEX link for OptimJ : - one based on Concert, that lets you access Concert objects for advanced features, but subject to this kind of memory problems because the work is done at run-time - and one that bypasses Concert entirely, doing all the work at compile-time, but then obviously without the possibility to access Concert objects.
-Patrick www.ateji.com
|
|
|