Lingo编程基础:集合函数与优化模型解析

需积分: 42 13 下载量 138 浏览量 更新于2024-08-21 收藏 2.03MB PPT 举报
"集合函数特征-Lingo的基本编程方法" 在Lingo编程中,集合函数特征是构建模型的关键组成部分,它们允许用户定义和操作集合中的数据。集合函数通常涉及到对集合元素的计算,比如求和、最大值、最小值等。下面我们将深入探讨Lingo的基本编程方法及其相关知识点。 1. **集合函数**: Lingo中的集合函数通过`@函数( 下标集 (下标变量) | 下标限制条件 : 变量表达式);`这样的语法来定义。例如,`@SUM( I( i) | i #LE# k: a( i))`表示对集合I中所有满足i小于等于k的元素a(i)求和。这里的`I`是集合名称,`i`是下标变量,`#LE#`是比较运算符,`k`是限制条件,`a(i)`是与集合元素关联的变量表达式。 2. **Lingo软件介绍**: Lingo是由Lindo Systems Inc开发的优化问题求解软件,主要用于解决线性、非线性以及整数规划问题。它拥有一个用户友好的界面,包括模型窗口、状态行和工具栏,方便用户输入和管理LINGO程序。 3. **算术运算符**: Lingo支持多种算术运算符,如乘方(^),乘(*), 除(/),加(+), 和减(-)。一元运算符是取反(--),可以用于求一个数的相反数。 4. **数学函数**: Lingo内置了丰富的数学函数,如绝对值函数`@abs(x)`,正弦函数`@sin(x)`,余弦函数`@cos(x)`,正切函数`@tan(x)`,指数函数`@exp(x)`,自然对数函数`@log(x)`,伽马函数的自然对数`@lgm(x)`,符号函数`@sign(x)`,以及取整函数`@floor(x)`等。 5. **变量定界函数**: 这些函数用于设定变量的取值范围,例如: - `@BND(L,X,U)`确保变量X的值在L和U之间。 - `@BIN(X)`限制X只能取0或1,模拟二进制决策变量。 - `@FREE(X)`取消对X的符号限制,允许其取任意实数值。 - `@GIN(X)`强制X取整数值。 6. **编程注意事项**: - Lingo不区分大小写,但变量和行名长度限制在8到32个字符之间,且须以字母开头。 - 所有变量默认被视为非负。 - 每个语句以分号结尾,提高代码可读性,可以通过缩进来展示语句的嵌套层次。 - 以感叹号(!)开头的语句是注释,用于解释代码。 以奶制品为例,假设我们有一个牛奶和酸奶的生产模型,其中包含成本、产量等变量。我们可以使用Lingo的集合函数特征来定义总成本或总产量,如下所示: ```lingo @SETS: Products {1..2}: Cost, Production; // 定义集合Products,包含Cost和Production两个属性 @PARAMETER: Cost_Milk = 1.5, Cost_Yogurt = 2.0; // 成本参数 @VARIABLES: Milk, Yogurt >= 0; // 生产量变量 @EQUATIONS: Objective "Total Cost" @SUM(Products(i): Cost(i)*Production(i)); // 总成本 Supply "Production Constraint" Milk + Yogurt = 1000; // 生产总量约束 ``` 以上就是一个简单的Lingo模型,利用集合函数特征计算总成本,并设置了生产总量的约束。