§4 LINGO函数 说明: 有了前几节的基础知识,再加上本节的内容,就能够借助于LⅠNGO 建立并求解复杂的优化模型。 函数类型(9种) 1.基本运算符:算术运算符、逻辑运算符、关系运算符 2.数学函数:三角函数和常规的数学函数 3.金融函数:两种金融函数 4.概率函数:大量概率相关的函数 5.变量界定函数:定义变量的取值范围 6,集操作函数:对集的操作提供帮助 7.集循环函数:遍历集的元素,执行一定的操作的函数 8.数据输入输岀函数:允许模型和外部数据源相联系, 进行数据的输入输出 9.辅助函数:各种杂类函数
说明: 有了前几节的基础知识,再加上本节的内容,就能够借助于LINGO 建立并求解复杂的优化模型。 函数类型(9种): 1.基本运算符:算术运算符、逻辑运算符、关系运算符 2.数学函数:三角函数和常规的数学函数 3.金融函数:两种金融函数 4.概率函数:大量概率相关的函数 5.变量界定函数:定义变量的取值范围 6.集操作函数:对集的操作提供帮助 7.集循环函数:遍历集的元素,执行一定的操作的函数 8.数据输入输出函数:允许模型和外部数据源相联系, 进行数据的输入输出 9. 辅助函数:各种杂类函数 §4 LINGO 函数
4.1基本运算符 4.1.1算术运算符 二元运算符(五类):^乘方、*乘、/除、+加、-减 取反函数:-(唯一的一元算术运算符) 优先级由高到底: 高-(取反) 低 运算次序:从左到右按优先级高低执行。 运算的序可用圆括号“()”改变。 例4.1算术运算符示例。 2-5/3,(2+4)/5等等
4.1 基本运算符 4.1.1 算术运算符 二元运算符(五类):^乘方、﹡乘、/除、﹢加、﹣减 取反函数:﹣(唯一的一元算术运算符) 优先级由高到底: 高 ﹣(取反) ^ ﹡/ 低 ﹢﹣ 运算次序:从左到右按优先级高低执行。 运算的序可用圆括号“()”改变。 例4.1 算术运算符示例。 2﹣5/3,(2﹢4)/5等等
4.1.2逻辑运算符 说明: 主要用于集循环函数的条件表达式中,控制在函数中哪些集成员被包含, 哪些被排斥。在创建稀疏集时用在成员资格过滤器中 9种逻辑运算符: #not#否定该操作数的逻辑值,一元运算符 #eq#若两个运算数相等,为true;否则为 flase #ne#若两个运算符不相等,为true;否则为 flase #gt#若左边运算符严格大于右边运算符,为true;否则为 flase #ge#若左边运算符大于或等于右边的运算符,为true;否则为 flase #1t#若左边运算符严格小于右边运算符,为true;否则为 flase #le#若左边运算符小于或等于右边运算符,为true;否则为 flase #and#仅当两个参数都为true时,结果为true;否则为 flase #or#仅当两个参数都为 false时,结果为 false;否则为true 运算符的优先级由高到低: 高井not #ea##ne##gt##ge##lt##le# 低井and##Or# 例4.2逻辑运算符示例2#gt#3#and#4#gt#2,结果为假(0)
说明: 主要用于集循环函数的条件表达式中,控制在函数中哪些集成员被包含, 哪些被排斥。在创建稀疏集时用在成员资格过滤器中。 9种逻辑运算符: #not# 否定该操作数的逻辑值,一元运算符 #eq# 若两个运算数相等,为true;否则为flase #ne# 若两个运算符不相等,为true;否则为flase #gt# 若左边运算符严格大于右边运算符,为true;否则为flase #ge# 若左边运算符大于或等于右边的运算符,为true;否则为flase #lt# 若左边运算符严格小于右边运算符,为true;否则为flase #le# 若左边运算符小于或等于右边运算符,为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true 运算符的优先级由高到低: 高 #not# #eq# #ne# #gt# #ge# #lt# #le# 低 #and# #or# 例4.2 逻辑运算符示例 2 #gt# 3 #and# 4 #gt# 2,结果为假(0)。 4.1.2 逻辑运算符
41.3关系运算符 说明:主要用在模型中,指定一个表达式的左边是否等于、小于等于 或大于等于右边,形成模型的一个约束条件。 关系运算符与逻辑运篁符井eq#、#e#、#ge排区别:截然不同,前者是模 型中该关系运算符所指定关系的为真描述,后者仅仅判断一个该关系是 否被满足:满足为真,不满足为假。 关系运算符(三种):“=”、“<=”、“>=”。 说明:还能用“<”表示小于等于关系,“”表示大于等于关系。 不支持严格小于和严格大于关系运算符 若需要严格小于和严格大于关系,比如让A严格小于B:A<B, 则可把它变成如下的小于等于表达式 A+ε<=B,ε是一个小的正数,其值依赖于模型中A小于B多少才算不等。 三类操作符的优先级: 高#nOt# (取反) #eg##ne##gt##ge##lt##le# #and##or# 低
说明:主要用在模型中,指定一个表达式的左边是否等于、小于等于、 或大于等于右边,形成模型的一个约束条件。 关系运算符与逻辑运算符#eq#、#le#、#ge#区别:截然不同,前者是模 型中该关系运算符所指定关系的为真描述,后者仅仅判断一个该关系是 否被满足:满足为真,不满足为假。 关系运算符(三种):“ = ” 、 “<=” 、 “>=” 。 说明:还能用“<”表示小于等于关系,“>”表示大于等于关系。 不支持严格小于和严格大于关系运算符。 若需要严格小于和严格大于关系,比如让A严格小于B:A<B, 则可把它变成如下的小于等于表达式: A+ε<=B,ε是一个小的正数,其值依赖于模型中A小于B多少才算不等。 三类操作符的优先级: 高 #not# ﹣(取反) ^ ﹡ / ﹢﹣ #eq# #ne# #gt# #ge# #lt# #le# #and# #or# 低 <= = >= 4.1.3 关系运算符
42数学函数 标准数学函数: @abs( 返回x的绝对值 @sin(x 返回x的正弦值,x采用弧度制 @ COS (X): 返回x的余弦值 @tan(x 返回x的正切值 @exp(x): 返回常数e的x次方 @|og(x): 返回x的自然对数 @Igm x): 返回x的 ganna函数的自然对数 (即(x-1)!的自然对数) @sign(x: 如果x<0返回-1;否则,返回1 @f loor (x) 返回x的整数部分。 x>=0时,返回不超过x的最大整数; x<0时,返回不低于x的最大整数 @smax(x1,x2,…,xn):返回x1,x2,…,xn中的最大值 @smin(x1,x2,,xn):返回x1,x2,…,xn中的最小值
标准数学函数: @abs(x): 返回x的绝对值 @sin(x): 返回x的正弦值,x采用弧度制 @cos(x): 返回x的余弦值 @tan(x): 返回x的正切值 @exp(x): 返回常数e的x次方 @log(x): 返回x的自然对数 @lgm(x): 返回x的gamma函数的自然对数 (即(x-1)!的自然对数) @sign(x): 如果x<0返回-1;否则,返回1 @floor(x): 返回x的整数部分。 x>=0时,返回不超过x的最大整数; x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn):返回x1,x2, … ,xn中的最大值 @smin(x1,x2,…,xn):返回x1,x2, … ,xn中的最小值 4.2 数学函数