Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
Mathematics
General TopicsResearchOperations ResearchStatisticsMathematical LogicNumerical AnalysisUndergraduate MathAlgebra HelpRecreational Math
Math Software
MapleMathematicaMATLABScilabSASSPSS

Math Forum / Mathematics / Operations Research / October 2008



Tip: Looking for answers? Try searching our database.

MPL, AMPL, or OPL?

Thread view: 
Enable EMail Alerts  Start New Thread
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
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.