lingo运筹学实训指导书(编辑修改稿)内容摘要:
ex(amp。 2) eq 0: friend。 !男学生和女学生的友好程度大于 的集。 linkmf2(linkmf) | friend(amp。 1,amp。 2) ge : x。 endsets data: sex,age = 1 16 0 14 0 17 0 13。 friend =。 enddata 用竖线( |)来标记一个成员资格过滤器的开始。 eq是逻辑运算符,用来判断是否 “相等 ”,可参考 167。 4. amp。 1 可看作派生集的第 1 个原始父集的索引,它取遍该原始父集的所有成 员; amp。 2 可看作派生集的第 2 个原始父集的索引,它取遍该原始父集的所有成员; amp。 3, amp。 4, …… ,以此类推。 注意如果派生集 B 的父集是另外的派生集 A,那么上面所说的原始父集是集 A向前回溯到最终的原始集,其顺序保持不变,并且派生集 A的过滤器对派生集 B 仍然有效。 因此,派生集的索引个数是最终原始父集的个数,索引的取值是从原始父集到当前派生集所作限制的总和。 (3)数据输入部分 ① 数据部分以关键字 “data:”开始,以关键字 “enddata”结束。 在这里,可以指定集成员、集的属性。 其语法如下: object_list = value_list。 对象列 ( object_list)包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开。 一个对象列中至多有一个集名,而属性名可以有任意多。 如果对象列中有多个属性名,那么它们的类型必须一致。 如果对象列中有一个集名,那么对象列中所有的属性的类型就是这个集。 数值列 ( value_list)包含要分配给对象列中的对象的值,用逗号或空格隔开。 注意属性值的个数必须等于集成员的个数。 看下面的例子。 【例 】 sets: set1/A,B,C/: X,Y。 15 endsets data: X=1,2,3。 Y=4,5,6。 enddata 在集 set1 中定义了两个属性 X 和 Y。 X 的三个值是 2 和 3, Y 的三个值是 5 和 6。 也可采用如下例子中的复合 数据声明 ( data statement)实现同样的功能。 【例 】 sets: set1/A,B,C/: X,Y。 endsets data: X,Y=1 4 2 5 3 6。 enddata 看到这个例子,可能会认为 X 被指定了 4 和 2 三个值,因为它们是数值列中前三个,而正确的答案是 2 和 3。 假设对象 列有 n 个对象, LINGO 在为对象指定值时,首先在 n 个对象的第 1 个索引处依次分配数值列中的前 n个对象,然后在 n个对象的第 2个索引处依次分配数值列中紧接着的 n个对象, …… ,以此类推。 ② 参数 在数据部分也可以指定一些 标量变量 ( scalar variables)。 当一个标量变量在数据部分确定时,称之为参数。 看一例,假设模型中用利率 %作为一个参数,就可以象下面一样输入一个利率作为参数。 【例 】 data: interest_rate =0 .085。 enddata 也可以同时指定多个参数。 【例 】 data: interest_rate,inflation_rate =。 enddata ③ 实时数据处理 在某些情况,对于模型中的某些数据并不是定值。 譬如模型中有一个通货膨胀率的参数,我们想在 2%至 6%范围内,对不同的值求解模型,来观察模型的结果对通货膨胀的依赖有多么敏感。 我们把这种情况称为 实时数据处理 ( what if analysis)。 LINGO 有一个特征可方便地做到这件事。 在本该放数的地方输入一个问号( ?)。 【例 】 data: interest_rate,inflation_rate = .085 ?。 enddata 每一次求解模型时, LINGO 都会提示为参数 inflation_rate 输入一个值。 在 WINDOWS 操作系统下,将会接收到一个类似下面的对话框: 16 直接输入一个值再点击 OK 按钮, LINGO 就会把输入的值指定给 inflation_rate,然后继续求解模型。 除了参数之外,也可以实时输入集的属性值,但不允许实时输入集成员名。 ④ 指定属性为一个值 可以在数据声明的右边输入一个值来把所有的 成员的该属性指定为一个值。 看下面的例子。 【例 】 days /MO,TU,WE,TH,FR,SA,SU/:needs。 endsets data: needs = 20。 enddata LINGO 将用 20 指定 days 集的所有成员的 needs 属性。 对于多个属性的情形,见下例 : 【例 】 sets: days /MO,TU,WE,TH,FR,SA,SU/:needs,cost。 endsets data: needs cost = 20 100。 enddata ⑤ 数 据部分的未知数值 有时只想为一个集的部分成员的某个属性指定值,而让其余成员的该属性保持未知,以便让 LINGO去求出它们的最优值。 在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。 两个逗号间可以有空格。 【例 】 sets: years/1..5/: capacity。 endsets data: capacity = ,34,20; enddata 属性 capacity 的第 2 个和第 3 个值分别为 34 和 20,其余的未知。 ⑥ 模型的初始部分 初始部分是 LINGO 提供的另一个 可选部分。 在初始部分中,可以输入 初始声明 ( initialization statement),和数据部分中的数据声明相同。 对实际问题的建模时,初始部分并不起到描述模型的作用,在 17 初始部分输入的值仅被 LINGO 求解器当作初始点来用,并且仅仅对非线性模型有用。 和数据部分指定变量的值不同, LINGO 求解器可以自由改变初始部分初始化的变量的值。 一个初始部分以 “init:”开始,以 “endinit”结束。 初始部分的初始声明规则和数据部分的数据声明规则相同。 也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属 性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值。 【例 】 init: X, Y = 0, .1。 endinit Y=@log(X)。 X^2+Y^2=1。 好的初始点会减少模型的求解时间。 3.利用 Lingo 软件求解下列线性规划问题: 0x,0x,0x5x2x8x2xxx2x3xm in z)1(32121321321 1 , 2 , 3 , 4 )(j0x44x2xx84xx2x10x2xxxx2xxm a x z)2(j3213214321321 4.利用 Lingo 软件求解下列 应用 问题: 某铸造厂计划生产 1000 公斤铸件。 铸件的含量: Mn 不少于 %; Sn 在 %~ %之间;铸件的售价是 元 /公斤。 工厂现有 A、 B、 C 三种铸铁及纯 Mn 块,其规格见下表。 又浇注时平均损失铁水费用是每公斤铸件 元。 材料 含量 A B C Mn Si 4 1 0 Mn 100 单价(元 /公斤) 8 18 实 训 四 Lingo 函数 求解 优化问题 一、 实训 目的 1.使学生 熟悉 Lingo 软件 中常用的函数 ; 2.使学生掌握 运 用 Lingo 函数解决优化问题。 二、 实训 内容与步骤 1. Lingo 函数 LINGO 有 9 种类型的函数: ① 基本运算符:包括算术运算符、逻辑运算符和关系运算符 ② 数学函数:三角函数和常规的数学函数 ③ 金融函数: LINGO 提供的两种金融函数 ④ 概率函数: LINGO 提供了大量概率相关的函数 ⑤ 变量界定函数:这类函数用来定义变量的取值范围 ⑥ 集操作函数:这类函数为对集的操作提供帮助 ⑦ 集循环函数:遍历集的元素,执行一定的操作的函数 ⑧ 数据输入输出函数:这类函数允许模型和外部数据源相联系,进行数据的输入输出 ⑨ 辅助函数 :各种杂类函数 (1)基本运算符 这些运算符是非常基本的,甚至可以不认为它们是一类函数。 事实上,在 LINGO 中它们是非常重要的。 ① 算术运算符 算术运算符是针对数值进行操作的。 LINGO 提供了 5 种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO 唯一的一元算术运算符是取反函数 “﹣ ”。 这些运算符的优先级由高到底为: 高 ﹣(取反) ^ ﹡/ 低 ﹢﹣ 运算符的运算次序为从左到右按优先级高低来执行。 运算的次序可以用圆括号 “() ”来改变。 【例 】 算术运算符示 例。 2﹣ 5/ 3, (2﹢ 4)/ 5 等等。 ② 逻辑运算符 在 LINGO中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。 在创建稀疏集时用在成员资格过滤器中。 LINGO 具有9种逻辑运算符: 19 not 否定该操作数的逻辑值,# 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 【例 】 逻辑运算符示例 2 gt 3 and 4 gt 2,其结果为假( 0)。 ③ 关系运算符 在 LINGO 中,关系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小于等于、或者大于等于右边,形成模型的一个约束条件。 关系运算符与逻辑运算符 eq、 le、 ge截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假。 LINGO 有三种关系运算符: “=”、 “=”和 “=”。 LINGO 中还能用 “”表示小于等于关系, “”表示大于等于关系。 LINGO 并不支持严格小于和严格大于关系运算符。 然而,如果需要严格小于和严格大于关系,比如让 A严格小于 B: AB, 那么可以把它变成如下的小于等于表达式: A+ε=B, 这里 ε是一个小的正数,它的值依赖于模型中 A小于 B 多少才算不等。 下面给出以上三类操作符的优先级: 高 not ﹣(取反) ^ ﹡ / ﹢﹣ eq ne gt ge lt le and or 低 = = = (2) 数学函数 LINGO 提供了大量的标准数学函数: @abs(x) 返回 x的绝对值 @sin(x) 返回 x的正弦值, x采用弧度制 @cos(x) 返回 x的余弦值 @tan(x) 返回 x的正切值 @exp(x) 返回常数 e 的 x次方 20 @log(x) 返回 x的自然对数 @lgm(x) 返回 x的 gamma 函数的自然对数 @sign(x) 如果 x0 返回 1;否则,返回 1 @floor(x) 返回 x的整数部分。 当 x=0 时,返回不超过 x的最大整数;当 x0 时,返回。lingo运筹学实训指导书(编辑修改稿)
相关推荐
强制压缩 v 压缩时显示压缩百分比 注释: 例如: % proess files 解缩文件 命令 : unpress zcat 格式: press [option] filename zcat filename 功能:展开或显示压缩文件。 选项: c 不改变文件写到标准输出 注释: zcat命令相当于 unpress c 例如: % unproess 显示文件类型 命令 : file 格式:
司预计,到 2020年,由于 CCFL 的制造商不愿意 为将被 LED 替代的 CCFL背光源投资,因此 CCFL 的劣势将逐渐显示出来。 图 4044 英寸 LCD 电视机背光技术的预测(单位:百万套) 图 1 展示了 2020 至 2020 年, 4044 英寸 LCD 电视机背光技术的预测。 预测数据表明,传统 CCFL 仍将是重要的背光技术, 2020 2020 年间呈增长态 势
手册 316 本手册前面所讲的所有命令,都是由用户从键盘输入的, TAKE命令实际上是把一个命令文件定义为虚拟终端 (键盘 ), LINDO从该文件读取并执行命令。 由此可知, TAKE命令使 LINDO命令成批执行。 所谓 命令文件 是一个由若干条合法的 LINDO命令组成的文件,它应当用编辑程序(如 DOS中的 EDIT, WINDOWS中的 NOTEPAD等)事先编辑好并存放在磁盘中。
制方案介绍 系统结构框图如图 31 所示 LED 点阵模块AT 89 C 52 控制板及驱动电路可扩展字库RS 232 接口LED 板控制板计算机文字输入程序 图 31 系统结构框图 操作人员可以在计算机上使用文字输入程序通过计算机的 COM 口向控制系统输入需要显示的文字,即可在 LED 显示屏上显示相应的文本。 4 系统硬件设计 系统主控制原理图如图 41 所示。 图 41 系统主控制原理图
器中。 ( 1)利用高亮度或超高亮度发光二极管制作微型手电的电路如图 5 所示。 图中电阻 R 限流电阻,其值应保证电源电压最高时应使LED 的电流小于最大允许电流 IFm。 ( 2)图 6(a)、 (b)、 (c)分别为直流电源、整流电源及交流电源指示电路。 图 (a)中的电阻 ≈( EVF) /IF; 图 (b)中的 R≈( ) /IF。 图 (c)中的 R≈Vi/IF 式中,
显色性: 光源的显色性是由 显色指数来表明,它表示物体在光下颜色比基准光(太阳能)照明时颜色的偏离能较全面反映光源的颜色特性。 要正确表现物体本来的颜色需使用显色指数高的光源。 单位: Ra。 色表: 是指人眼直接观察光源时所看到的颜色。 街道高压钠灯发出的光既亮且白,但当看到被照射的人的面孔时显表灰色,这说明高压钠灯的色表并不差,但显色性不好。 眩光: 视野内有亮度极高的物体或强烈的亮度对比