1 绪论
当我们面对一个问题时,先从给定的数据建立科学的数学模型,然后使用Cplex进行问题求解,输出我们想要的结果。
OPL语言是ILOG的优化语言,可以用来编制模型文件和数据文件。
包含的文件类型及作用:
项目文件:组织模型和数据的文件,并提供一种方便的方法来维护相关文件和运行选择之间的关系
模型文件:声明数据项目,但是不需要提供数据的初始化工作
数据文件:包含了在模型中声明的数据初始化
设置文件:当你决定一个或多个数学规划和其他的缺省值,该文件保存用户定义的值
运行配置:为了运行的目的而根据项目进行的设置;在一个项目中,可以根据自己的需要定义多个运行配置
模型文件包含以下四个部分:数据、决策变量、目标函数、约束条件;这也是数学建模的四个必备要素。
示例代码:
参考文档
1.3.2 IBM CPLEX Studio IDE
下载完成后的官方示例路径:你的路径\opl\examples\opl
示例运行方式在下文介绍
1.3.3 Cplex with Concert Technology
直接以编程语言的API建立模型并求解,此处可参见我之前的博客文章
运筹优化学习09:一个示例带你入门如何使用C++、C#、Java、Python、Matlab调用Cplex
2 官方gas示例演示
导入之后,可以看到的文件结构如下:
约束展开:
示例还提供了一个将数据在mod文件中直接进行赋值的模型文件,详情如下:
{string} Products = { "gas", "chloride" };
{string} Components = { "nitrogen", "hydrogen", "chlorine" };
float Demand[Products][Components] = [ [1, 3, 0], [1, 4, 1] ];
float Profit[Products] = [30, 40];
float Stock[Components] = [50, 180, 40];
dvar float+ Production[Products];
maximize
sum( p in Products )
Profit[p] * Production[p];
subject to {
forall( c in Components )
sum( p in Products )
Demand[p][c] * Production[p] <= Stock[c];
}
运行结果与之前的一致
gasn.dat的数据是带#的,因此其中的数据顺序是可以随意指定的,只要带上正确的变量名即可。
上述的gasn.dat文件我们对数据顺序进行了调整,变化如下图所示
然后,将gas.mod拷贝一份,重命名为gasn.mod,使用默认配置运行;可以看到左下角的数据仍然是正确的数据。