GAMS and Python

Hello,

I’m trying to run my model through python. I installed the python API and the transport1.py model works. If I however change the ws.add_job_from_file(“trnsport.gms”) to my model file it gives me a gams return code (2). If I open my sankey.gms file directly through the gams gui then everything works correctly. What am I doing wrong?

Thanks!

from __future__ import print_function
from gams import *
import os
import sys

version = GamsWorkspace.api_version
sysdir = "c:\\GAMS\\win64\\" + version[0:4]


if __name__ == "__main__":
#    if len(sys.argv) > 1:
#        ws = GamsWorkspace(system_directory = sys.argv[1])
#    else:
    ws = GamsWorkspace(system_directory =sysdir)
    t1 = ws.add_job_from_file("C:\\GAMS\\win64\\24.9\\TEST\\sankey.gms")
    opt = ws.add_options()
    opt.all_model_types = "cplex"
    t1.run(opt)
    print("Ran with cplex:")

David,

The return code you receive indicates a compilation error. When an instance of GamsWorkspace is created, the working_directory is set to a temporary directory. The GamsJob.run() call runs the model in this directory. If your model relies on certain other files like include or GDX files, the GAMS process might not find them due to the temporary location. A quick solution for this is to set the working_directory of the GamsWorkspace to the directory of your model (e.g. the current directory):

ws = GamsWorkspace(working_directory=".")

Note that also all temporary files are written to the specified working_directory.

If this does not solve the problem, you can do some debugging. Specify the debug argument of the GamsWorkspace and get the actual working_directory:

ws = GamsWorkspace(debug=DebugLevel.KeepFiles)
print(ws.working_directory)

Then have a look at the content of the working directory. You will most likely find a .lst file which has certain information about your model and reveals the cause of errors.

Best,
Clemens

Wow that works beautifully !

Thank you very much!

cmislib API suets me as a developer from implementation details, although it provides an intuitive way to work … Hopefully, the compilation error will be eliminated, I gonna take this review,thanks