For a test problem, check manually (outside GAMS) that the solution satisfies all constraints. If not, your GAMS model may be wrong. If all constraints are satisfied, try using a different solver and see if the same objective value is achieved. If the other solver gets a better result, your current runs may be stopping short of optimality. If the objective ...
Collecting things in a parameter is actually very simple.
set run /.../;
solve m ....
objresult(run,"obj") = m.objval;
objresult(run,"bestbound") = m.objest;
objresult(run,"absgap") = abs(m.objval-m.objest);
You cannot loop over include files ($include is compile-time, while loop is execution- time, this is similar to say C where you cannot loop over #include). One could loop over complete GAMS models (call gams inside a loop), or over reading data from GDX (GAMS data) files. But often a better approach is the following.
I would just read in all problem data in ...
There is a good description of different problem instances here. From the link:
...benchmark problems (Solomon, 1987) composed of six different problem types (C1,C2,R1,R2,RC1,RC2). Each data set contains between eight to twelve 100-node problems. The names of the six problem types have the following meaning. Sets C have clustered customers whose time ...