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.