如何在 Java API 和 运行 模型 GAMS 中 运行 GPR 文件

How to run a GPR file in Java API and run a model GAMS

我有一个带有 GMS 扩展名的模型。当我 运行 使用 Gams studio 建立模型时,它 运行 非常完美并且我获得了预期的结果。 我曾尝试 运行 GMS 模型与 Gams IDE 但我遇到了很多错误,所以,我尝试了一些不同的东西。我打开了一个带有 GPR 扩展名的文件,之后我导入了 GMS 模型,当我 运行 项目时一切正常。 我想我需要使用 Gams Java API 做同样的事情,但我不知道如何将 GPR 文件导入到我的工作区。 在这一刻,我只有下一个代码:

        GAMSWorkspace workspace = new GAMSWorkspace();
        workspace.setDebugLevel(DebugLevel.KEEP_FILES);
        GAMSJob jobGams = workspace.addJobFromFile("fileModelGms");
        jobGams.run();

当我 运行 该代码时,我得到一个错误:

GAMS process returns unsuccessfully with return code : 2 [there was a compilation error]. Check \_gams_java_gjo1.lst] for more details.

gpr 文件的格式只有 GAMSIDE 才能理解。您不能将它传递给任何 API。如果您从 API 而不是从 GAMSIDE 调用您的模型时出错,您可能已经使用 IDE 设置了某些选项,您现在应该通过 API 设置这些选项以及。虽然,没有看到确切的错误,很难给出进一步的提示。

我已经用Lutz的帮手解决了这个问题。我需要在模型使用的输入中包含一个目录。

这是我的代码,每行注释一行,以了解 API Gams 的工作原理。我也使用了一个特定的工作区,因为 API 在您 运行 一个新作业时会在临时文件中创建一个文件夹。我确实也将 GDX 用于数据库 运行 我的模型。

       //specific workspace information is created example: C:/Desktop/Workspace
        GAMSWorkspaceInfo workspaceInfo = new GAMSWorkspaceInfo();
        workspaceInfo.setWorkingDirectory("specificPathWorkspace");
        //A new workspace is created with workspaceInfo.
        GAMSWorkspace workspace = new GAMSWorkspace(workspaceInfo);
        workspace.setDebugLevel(DebugLevel.KEEP_FILES);
        //Options where you're going to set input file data.
        GAMSOptions options = workspace.addOptions();
        //Set path with input Data example: C:/Desktop/InputDate
        options.IDir.add("PathWithInputData");
        //Using a database where is data to be processed example: db.gdx
        GAMSDatabase gdxdb = workspace.addDatabaseFromGDX("db.gdx");
        // Creating a JOB to execute the model.
        GAMSJob jobGams = workspace.addJobFromFile(entradasModeloGamsDTO.getPathModeloGams());
        //Running model
        jobGams.run(options,gdxdb);