I can't address the specifics of Python, Pyomo, Gurobi or GAMS, but I can address the general question of using a modeling language (such as GAMS) versus building the model directly in a general programming language (such as Python) via a solver API.
Models written in a modeling language (say GAMS) tend to be easier to read and easier to relate to a problem description than are models coded in a programming language (say Python). That implies a few potential advantages:
- it is easier to explain the GAMS model to a non-coder than it is to explain the Python model;
- the GAMS model may be less prone to errors (specifying the wrong variable, reversing the direction of an inequality, indexing errors) than the Python model would be, in part because such errors are more obvious to the human eye;
- similarly, it may be easier to find errors in the GAMS model (should they creep in) than in the Python model; and
- the GAMS model may be easier to maintain, particularly if it is handed off to someone other than the person that wrote it.
To me, the main advantages of going straight to a programming language are:
- you only have to be proficient in one language, rather than two;
- your code can be used (by other people) without needing a library from the programming language (and associated license);
- if you are customizing an algorithm for the model (doing something beyond what the solver and GAMS directly support), you are likely going to need "low level" access to model components, which you may not be able to get from the GAMS model.
Your second paragraph ("fast feedback" etc.) does not sound at all correct to me. I use Java rather than Python and CPLEX rather than Gurobi, but I have no difficulty finding out whether a model instance is infeasible (and, if so, which constraints are involved in the infeasibility). Assuming a problem is feasible, whether it can be solved (within time and memory limits) is always an empirical question (try and see).