IBM®ILOG OPL 包括用于 OPL 的IBMILOG 脚本扩展类,可在脚本语句中使用。 IBMILOG Script for OPL 是一种嵌入式JavaScript™实现,可提供 OPL 的 "非建模 "表达能力。 因此,它符合ECMA-262 标准。
为了更好地理解IBMILOG 脚本与 OPL 的集成,你可以把 "execute或 "main块看作是嵌套在作用域中的。 该范围等同于
var scope = new Object();
scope.thisOplModel= // 此 .mod 文件的IloOplModel实例
scope.cplex= // 用于实例化IloOplModel的IloCplex实例
与 (scope) {
withthisOplModel) {
// 执行块或主块放在这里
}
}
欲了解更多信息,特别是基本概念,请参阅
本概述提供了以下方面的初步信息:
并非所有的类在所有情况下都能提供相同的功能。 下表列出了每个作用域可使用的属性和方法的类。
预处理 |
PostProcessing |
流量控制 |
全局函数 |
|---|---|---|---|
下表列出了哪些类型支持哪些分配。
内容? |
支持 |
不支持 |
|---|---|---|
为数组项赋值 |
元组 标量:整数、浮点数、字符串 |
其余所有(均为设置项目) |
为模型元素或数据元素赋值 |
标量:整数、浮点数、字符串 |
所有剩余值 |
为元组组件赋值 |
标量:整数、浮点数、字符串 |
其余:集合、数组、子元组 |
使用新名称创建新数据元素 |
标量:整数、浮点数、字符串 |
所有剩余值 |
| 警告 |
end() 方法时,需要特别小心。 在相互依存的对象上以错误的顺序调用 "end()可能会导致应用程序崩溃。 |
每个类的文档结构如下:
脚本中的类名,后跟继承路径。
本节包括
相应的 OPL 建模类型。
在适用的情况下,"属性摘要 "表会列出该类对象可用的已命名属性,并链接到后面的单个说明。 在 "可用"主题中,"全部 "表示 "可用于预处理、后处理和流量控制('main关键字)"。 明确提到了可供分配(书写)的属性。
同样,"方法摘要 "表列出了该类对象上可用的方法,并链接到后面的单个说明。
本节介绍了给定类型的对象在属性迭代上下文中的使用方式。
for(var p inmyObject)
说明报告了 "p的对象。 默认行为是遍历所有已命名属性的名称。
本节说明了对象将如何回答带有属性 "p的索引请求:
myObject[p]
默认情况下,字符串索引会作为命名属性(如果有的话)进行解析。 在所有其他情况下,将返回特殊值 "undefined。
本节说明了每种方法:
构造函数被记录为一个名为 "(constructor)的方法。 其名称如下
varmyObject= newMyClass();