Here, in approximate order, are my criteria.
- Do I need a provably optimal solution (which rules out metaheuristics, other than to generate an initial feasible solution)?
- Is this something CPLEX can handle (since I have a license for CPLEX and I'm familiar with it)?
- If CPLEX can handle it, should I consider a heuristic, metaheuristic or constraint solver to generate a first feasible solution? (This gets determined empirically in most cases, by running CPLEX and seeing how long it takes to a get a "good" incumbent.)
- Assuming that I'm still shopping for an approach at this point, does the problem have a structure that might favor a constraint solver? In my case, given that I have CP Optimizer but am not nearly as familiar with it as with CPLEX, that usually means there's a scheduling aspect to the problem.
- If I'm looking for heuristics, is there something in the problem that suggests a likely problem-specific heuristic? If so, go that route. If not, I'll likely go with a GA, since I have experience with GAs and not so much with other metaheuristics.
One other consideration that does not fit neatly into that list: am I doing this for myself or for someone else? If it's for someone else, and they don't have moderately deep pockets (to pay for a solver license), I'll probably switch to a heuristic/metaheuristic and code it myself. I know about the COIN-OR solvers, but they're mainly for C/C++/Python programmers, and I have not kept tabs with progress (if any) adding Java APIs.
來源
分享
創建於2019-06-05T21:02:53Z2019-06-05T21:02:53Z prubin