CPLEX & OPL建模语言从入门到放弃(一)

OPL是ILOG团队为运筹学研究者定制的一种优化建模语言,语法相对简单,接近运筹学研究者习惯的数学表达。

导航地址

OPL建模语言从入门到放弃(一) 基本组成

OPL建模语言从入门到放弃(二) 数据结构

OPL建模语言从入门到放弃(三) 数据源

OPL建模语言从入门到放弃(四) 决策变量

OPL建模语言从入门到放弃(五) 表达式

OPL建模语言从入门到放弃(六) 约束条件

OPL建模语言从入门到放弃(七) 参数

OPL建模语言从入门到放弃(八) 预处理语句

下文描述了OPL建模语言的基本组成,以及用OPL语言建模的方法。

注释

多行注释

/* 
This is a 
multiline comment 
*/

单行注释

dvar int cost in 0..maxCost; // decision variable

模型

一个模型应当包括以下几个部分:

变量声明(必须)

// dvar 表示决策变量
dvar float+ x;
dvar float+ y;
// dexpr 表示决策表达式
dexpr float cost = 0.12*x + 0.15*y;

预处理指令(可选)

execute {
  writeln('start reducing') 
}

问题描述(必须)

// 最小化
minimize cost;
subject to {
  60*x + 60*y >= 300;
  12*x + 6*y >= 36;
  10*x + 30*y >= 90; 
}

后处理指令(可选)

execute {
  if (cplex.getCplexStatus() == 1) {
    writeln('reduced cost of x= ', x.reducedCost)
    writeln('reduced cost of y= ', y.reducedCost)
}

在CPlex中使用OPL

右键文件窗口,新建 - OPL项目,新建一个项目文件夹。

新建项目

右键运行配置文件夹,新建 - 运行配置,新建一个运行配置。

运行配置

右键项目文件夹,新建 - 模型,新建一个模型,并编写代码。

// 变量
dvar float+ x;
dvar float+ y;
execute {
	writeln('start reducing') 
// 声明
dexpr float cost = 0.12*x + 0.15*y;
// 模型
minimize cost;
subject to {
  60*x + 60*y >= 300;
  12*x + 6*y >= 36;
  10*x + 30*y >= 90;