I'm about to employ my master thesis work soon towards optimization and I have some questions regarding the limitations of AMPL.
My tutors seems confident that AMPL will handle mostly all situations when a full license of for instance Gurobi solver is used (which my university has).
Yet, in most current thesis works I see that most people still use genetic algorithms and heuristics in other languages such as C, C#, Python etc. Is it preferable to implement your own heuristics in other languages or are there setting to provide this for you in AMPL provided that you have a full license of some solver?
Thus far my university has not had any practical problems when your own heuristics must be employed so it'll mean I have to study these alongside my last courses until the thesis work is about to start.
Thanks in advance! Cenderze
It is possible to implement heuristic methods using AMPL and many people do so using AMPL's scripting features or embedding it in other languages. This allows working on a higher level than the one provided by solver APIs and allows implementing methods that are solver-independent (AMPL provides access to many solvers).
Another possibility is implementing your method as an AMPL solver which also has its advantages as you won't need to worry about writing your own input methods or limitations of legacy formats such as MPS. SSDSolver is an example of this approach. It implements a cutting-plane algorithm for solving problems with second-order stochastic dominance constraints and uses another AMPL solver (e.g.
cplex
) to solve subproblems.