GAMS接口

GAMS 是一款针对数学规划问题的商业高级建模系统,支持多种 商业和开源求解器, 可用于求解线性规划、非线性规划及整数规划等多种优化问题,并且提供了 丰富的扩展功能,有着广泛的商业及学术用户群体。为了方便用户在GAMS建模环境中使用杉数求解器, 我们提供了GAMS接口,本章将介绍如何在GAMS中使用杉数求解器。

配置GAMS接口

在GAMS中调用杉数求解器求解之前,用户需要正确安装与配置GAMS和杉数求解器,详情可参考 如何安装杉数求解器 。请按照下述说明配置杉数求解器的GAMS接口。

Windows

对于Windows系统,假定GAMS安装路径为:"C:\GAMS\win64\27.3",杉数求解器安装路径为: "C:\Program Files\COPT",则杉数求解器的GAMS接口文件在杉数求解器安装路径的子目录 "lib\gams" 下。请用户将该目录下的 cptcclib64.dll 文件复制到GAMS安装路径下, 然后打开子目录 config 中的 gmscmpNT.txt 文件,复制其中的全部内容粘贴至 GAMS安装路径下的 gmscmpNT.txt 文件中。

Linux

对于Linux系统,假定GAMS安装路径为:"/opt/gams" ,杉数求解器安装路径为: /opt/copt71 ,则杉数求解器的GAMS接口文件在杉数求解器安装路径的子目录 "lib/gams" 下。请用户将该目录下的 libcptcclib64.so 文件复制到GAMS安装路径下, 然后打开子目录 config 中的 gmscmpun_unix.txt 文件,复制其中的全部内容粘贴至 GAMS安装路径下的 gmscmpun.txt 文件中。

MacOS

对于MacOS系统,假定GAMS安装路径为:"/Applications/GAMS27.3" ,杉数求解器安装路径为: /Applications/copt71 ,则杉数求解器的GAMS接口文件在子目录 "lib/gams" 下。 请用户将该目录下的 libcptcclib64.dylib 文件复制到GAMS安装路径的子目录 sysdir 下,然后打开子目录 config 中的 gmscmpun_osx.txt 文件,复制其中的 全部内容粘贴至GAMS安装路径的子目录 sysdir 下的 gmscmpun.txt 文件中。

功能介绍

用户按照上述说明配置GAMS接口后,可通过执行下述操作检查是否配置成功。

以命令行下调用GAMS接口求解为例,打开命令行,执行下述命令:

gamslib trnsport

获取GAMS自带的LP示例 trnsport.gms

然后执行命令调用杉数求解器的GAMS接口进行求解:

gams trnsport.gms lp=copt

观察GAMS的输出,若求解正常,则表示用户已正确配置好杉数求解器的GAMS接口。

杉数求解器的GAMS接口支持求解 LPMIPRMIP 类型的优化问题。对于 MIP 类型的优化问题,支持 SOS1SOS2 类型约束、支持Indicator约束。

对于参数文件 copt.opt 的格式要求,与杉数求解器的参数文件格式一致。

对于模型的Indicator约束信息,由参数 indicatorfile 设置。例如,从文件 COPT.indic 中读取模型的Indicator约束信息,则在参数文件 copt.opt 中添加如下参数即可:

indicatorfile COPT.indic

关于GAMS对于Indicator约束的支持,详见官方文档 GAMS中实现Indicator约束

对于获取整数规划模型的解池信息,由参数 solnpool 和参数 solnpoolMerge 设置。 若设置参数 solnpool ,则将解池中的解依次写入 soln_copt_p1.gdx 等文件, 其中数字编号表示解池中解的编号。若设置参数 solnpoolMerge ,则将解池中的解合并后 写入指定的文件中。