第二章:OPL 语言
五、其它函数及关键字
常用函数:sum,max,min 常用关键字:assert,in,forall,all
all all是用来定义表示一组数组的关键字。 其语法为: all (XXX in YYY) 表达式 表示:可以翻译为“对于每一个(满足 括号内的条件)来说的所有“表达式” 集合。
Sum 语法: 形式一:sum (XXX in YYY ) 表达式; 表示含义是:对YYY中的所有元素进行求 和; 如: sum( p in Products ) Profit[p] *Production[p]; 形式二:sum (XXX in YYY:条件表达式 ) 表 达式 表示含义是:对YYY中的所有满足条件表 达式的元素进行求和。 如: forall(j in md_nod) sum(<k,j>in arcs:k!=j)x[<k,j>]sum(<j,k>in arcs:k!=j)x[<j,k>]==0;
assert
语法: 形式一:assert 关系表达式; 说明:用来断言关系表达式必须要成立。 形式二:assert (XX in YY); 说明:其中XX是一个具体元素,YY是一个已经定义的变量 名,此形式用来断言XX是在YY中的一个元素。如: assert(1 in s1); 形式三:assert forall (XX in YY) XX in ZZ; 说明:其中YY和ZZ都是已经定义的变量名。 如在最短路问题中: assert forall(i in md_nod) i in nodes;
数据文件中的语法规则
3. 如果是tuple定义的 语法: tuple 变量名 {数据定义函数1 数据变量名 1; 数据定义函数2 数据变量名2;…;} 例如: tuple Arc{string o; string d; }
数据文件中的语法规则
4. 如果用{int}定义的 数据文件中也要用{} 例: 模型文件中:{int} st_nod=...; 则数据文件中:st_nod={1};
三、目标函数和约束条件定义相关关键
字及其用法
算术运算符:
* + / %
乘 减 加 除 取余
目标函数和约束条件定义相关关键 字及其用法
关系运算符: 小于 < 小于等于 <= 大于 > 大于等于 >= 等于 == 不等于 !=
目标函数和约束条件定义相关关键 字及其用法
OPL 语言
一、数据定义相关关键字及其用法 二、决策变量定义相关关键字及其用法 三、目标函数和约束条件定义相关关键字 及其用法 四、数据文件中的语法规则 五、其它函数及关键字
一、数据定义相关关键字及其用法
数据的定义包括已知参数的定义和其他一些关键数据的定义。 string 字符串函数。在OPL中一般用在数组(一组变量)的定义中。 语法: {string} 变量名= {"AAA", "BBB",..}; 或: {string} 变量名= …; 注意: (1)要打引号 (2)结束要打分号 (3)字符串之间用逗号隔开 (4)...表示在相应的数据文件有相应的数据。
数据定义相关关键字及其用法
range 这是OPL语言中用来定义一段连续的整数数 据。语法: range 变量名 = a..b ; 其中a和b是两个整数。表示为a、b间的所 有整数,包括a和b。
二、决策变量定义相关关键字及其用法
dvar 语法: dvar 数据类型关键字 变量名; (数据类型包括float or int)
数据定义相关关键字及其用法
ห้องสมุดไป่ตู้
float 用于表示浮点数据,即用来表示数学中的 实数。 语法: float 变量名 = 数值; 或 float 数值型数组变量名[对应的关键字数组 变量名]=[数值1 数值2 ….数值n];
数据定义相关关键字及其用法
int 用来定义整型数据,即数学中的整数。 语法规则: int 变量名 = 数值; int 数值型数组变量名[对应的关键字数组变 量名]=[数值1 数值2 ….数值n];
目标函数 定义完决策变量后紧接着要定义目标函数, 目标函数的定义一般要用maximize或者 minimize这两个关键字分别表示求最大和 最小。
目标函数和约束条件定义相关关键 字及其用法
约束条件 约束条件用subject to 来定义 语法: subject to {约束条件1的名称:约束条件1的 具体约束;约束条件2的名称:约束条件2 的具体约束;….;约束条件n的名称:约束 条件n的具体约束;}
数据文件中的语法规则
2、如果是数值型,其语法为: (1) 数组变量名称 = [数值1 数值2…数值n]; (2) 数组变量名称 = #[ 变量名1: 数值1 变量名2: 数值2 … 变量名n: 数值n ]#;
数据文件中的语法规则
说明: (1)用方括号框起来; (2)各个数据间用空格或者逗号分开,且空格数 目可以是任意的; (3)加井号与不加的语法规则不一样; 第一种前面不加井号,此时不能有变量名,且顺序 要与之前的顺序一致不能改变顺序。 第二种加井号,此时必须要有变量名,因此顺序可 以任意改变。 (4)结束用分号结束。 (5)注:变量名称后面不能跟[]。
四、数据文件中的语法规则
数据文件即以扩展名为“.dat”的文件。 因为数据文件都有模型文件与之对应,在模型 文件中涉及…的变量都需要在数据文件中给出 具体的数据,其语法规则一般是: 1、如果是字符串型数据,其语法为: 数组变量名称 = {字符串1 字符串2 …. 字符串 n}; 说明:(1)用大括号框起来;(2)各个数据 间用空格或者逗号分开;(3)各数据可以加 也可以不用加引号。[与直接模型文件不一致] (4)结束要以分号结束;