LINGO 教程 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,LINGO高效的求解器可快速求解并分析结果。

Slides:



Advertisements
Similar presentations
完美殺人筆記簿 【爸!我受夠了!】 第七組組員: 林正敏 陳筱涵 李蓓宇 許純宜 羅玉芬 謝文軒.
Advertisements

许瑞云医师 你已经很努力地注意饮食、作息、运动, 为什么身体还不能恢复健康 ? 细节 答案就在「 细节 」裡, 唯有掌握关键的一步, 养生才能达到真 正的功效 ! 现在就让我们跟着曾是全球知名的哈 佛医院主治医师的许瑞云, 学习最正确 的养生方法, 轻松打下健康满分的基础 !
人间美地 ─ 蝶韵阁. ~ 蝶 韵 阁 ~ 位桃园大溪镇,三峡交流道下去 12 分钟车程 住着潇洒的朱大哥、毛毛夫妻一家 还有 自由飞翔的蓝鹊、飞鹰、松鼠 一群悠闲采蜜翩翩飞舞的凤蝶 更惊讶的是一对珍贵的娇客 ─ 蜂蛾 那根长长的吸管是大自然的奇迹 蜂蛾已让我们惊艳不已 但 ─ 还有更多的美丽与惊奇、、、.
彰化縣和美鎮 和仁國民小學 本土語言教育暨 台灣母語日訪視 簡 報. 一. 學校概況 校地面積 校地面積廣達三公頃 學生活動空間寬廣!
LINGO 教程 LINGO 是用来求解线性和非线性优化问题的简易 工具。 LINGO 内置了一种建立最优化模型的语言, 可以简便地表达大规模问题, LINGO 高效的求解 器可快速求解并分析结果。
盈泰盛世精选 - 华泰并购投资基金 宝蓄财富 - 产品部. 产品基本要素 产品名称盈泰盛世精选华泰并购投资基金 管理人北京恒宇天泽投资管理有限公司 托管人国信证券股份有限公司 发行规模 1.2 亿元,以实际募集规模为准 人数限制 200 人上限 投资标的本基金委托将主要投向于华泰瑞联二期并 购基金中心(有限合合)(以企业登记的.
數學社群 教學分享 和平國小 陳淑渟老師 數學社群 教學分享 和平國小 陳淑渟老師. 小一常發生的 學習困難 定位板的應用 序數的學習 困難與教學 突破 主題大綱.
人的性别遗传 合肥市第四十九中学 丁 艳. 男女成对染色体排序图 1 、男性和女性各 23 对染色体有何异同 ? 哪 一对被称为性染色体 ? 2 、这两幅图中,哪幅 图显示的是男性的染色 体?哪幅图显示的是女 性染色体? 3 、图中哪条染色体是 Y 染色体?它与 X 染色体 在形态上的主要区别是.
健康.安全年 製作 : 黃靜怡. 安全第一,我想,這是一句大家都耳熟能詳的話吧,說安全, 簡單的說,就是注意自己、眼睛要看、耳朵要聽,不要莽莽 撞撞的,安全是大家所期望的,而父母總是常常掛念我們, 就是希望我們能安全,畢竟,孩子是父母一輩子的牽掛,會 擔心我們的,往往就是關心我們的人,每個人都希望自己做.
【大願文教基金會】園藝治療師 黃盛璘督導、王麗玲執行. 年齡在 2 足歲以上 18 歲以下,經醫學中 心或區域醫 院鑑定為 重度、極重度 身心障礙,不具行動能 力、且不能自理生活,並持有身心障礙 手冊的新北市居民。 八里愛心教養院~服務對象.
揭日本人让人理解不了的20件事 今天先来看看日本人的自我剖析︰日本人的20个“为什么”?这“20个为什么”的内容来源于日本影视名人北野武所主持的一个节目。虽然不是网友来信中提出过的问题,但看看日本人自己对自己的分析,是挺有意思的。而且,仔细看看下面这“日本人的20个为什么”,会发现其实有些东西对于中国人来说并不陌生。毕竟汉字圈里的文化,是有共融之处的。
第二十九课 致儿子书 张之洞.
如何陪伴孩子度過 高三歲月.
把人的生命写在教育的旗帜上 了解一个案件 欣赏一篇散文 学习一种理念 感悟一个故事.
32个团体游戏 增加团队凝聚力.
酸鹼食物對人體的影響性.
六大原因造成 現代人身體酸性化.
1、一般地说,在生物的体细胞中, 和 都是成对存在的。
辨性别 A B. 辨性别 A B 第三节人类染色体与性别决定 昌邑市龙池初中 杨伟红 学习目标 1.理解人的染色体组成和传递规律。 2.解释人类性别决定的原理。 3.通过探究活动,解读数据了解生男生女的比例。
【2008年高考重庆卷】A.当冰雪皑皑之际,唯独梅花昂然绽放于枝头,对生命充满希望和自信,教人精神为之一振。
景区讲解常用方法.
與櫻花有約 櫻花開放時間 櫻花前線 賞花便當 京都機場(附近) 夜櫻 哲學之道.
班級愛心小護士訓練 臺南市東區勝利國小 健康中心.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
项目四 营业税 山东经贸职业学院 财政金融系.
敬业·创业·乐业 ——我的成长之路 赵谦翔.
四年七班親師會 自信學習,健康成長.
TSP问题及LINGO求解技巧.
人間美地─ 蝶韻閣 ..
醫療旅遊.
社會發展學系 簡 介.
人物小传:杨嘉嵋,1975年出生,国家 重点四川大学本科毕业,中国传媒大学博士毕业,现为上海政法学院讲师。多次发表学术论文:《试论社会主义法治的目标和现代法治精神的培育》发表于钦州师范高等专科学校校报2000年04期,《西部在引进,利用外资中应重视的问题及对策》发表于四川师范学院学报2000年05期,《试论毛泽东的刑法思想》发表于达县师范高等专科学校学报2001年01期,《美国著名主持人的十点共性》发表于中国广播电视学刊2007年08期,《我国电视法治节目的现状与提升》发表于新闻战线2008年08期。
第二章 语用的主要要素分析 第一节 语境 第二节 预设 第三节 角色 第四节 视角.
全国国际商务英语考试(一级) 口试操作流程 全国国际商务英语考试中心 中国国际贸易学会商务专业培训考试办公室 2016年
从从容容中考去.
美洲集团散拼项目分享 李维迪.
和 諧 的 性 別 關 係.
美麗的星空 陳弦希製作.
性別刻板印象.
初三8班(上) 期末总结班会.
初三(上) 期末总结班会.
一週菜單設計.
第四章 数学规划模型 课程内容和目的: 了解数学规划模型的一般理论,介绍一些典型的规划模型,如生产计划安排问题、资源配置问题、运输问题、下料问题、指派问题、选址问题等。能通过分析建立一些实际问题的数学规划模型,会用各种工具软件熟练求解线性规划,非线性规划,整数规划等问题。 教学难点和重点: 重点掌握规划模型的三要素,建立规划模型的方法以及工具求解。难点是模型求解算法的理解和如何将实际问题逐步转换成规划问题。
改革开放给我们带来的变化 系别:11商务流通系 班级:物流四班 组员:物四男生组.
管理学基本知识.
大村國小 尋根之旅.
那年我參加瑞士巴塞爾博覽會, 除了接單做貿易,還零售賣品, 以擴大出口商品的影響。
西安国际港务区 入区企业相关地方税收 知识培训
Bio-tutor生物家教 95年第2次基測自然科 生物題目講解
清仓处理 跳楼价 满200返160 5折酬宾.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
电话联系.
迎宾员礼仪 包头机电工业职业学校管理系 白琳 1.
1.1.2 四 种 命 题.
色 弱 與 色 盲.
血脉: 血液 、脉络. 血脉: 血液 、脉络 黄鹤楼送孟浩然之广陵 ——唐 李白 故人西辞黄鹤楼, 烟花三月下扬州。 孤帆远影碧空尽, 唯见长江天际流。 京杭大运河.
99學年度第二學期人文典籍閱讀 小組讀書報告 指導老師:陳鎮亞 報告書名:印象洗腦術 組長:呂承澤( )
宠物之家 我的宠物性别? 雌(♀) or 雄(♂) 第一阶段:我的宠物我做主 第二阶段:宠物“相亲记” 第三阶段:家族诞生
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
财 务 会 计 第四篇:供应链会计实务 制作人:谌君、熊瑜.
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
LINGO.
第四章 数学规划模型 4.1 奶制品的生产与销售 4.2 自来水输送与货机装运 4.3 汽车生产与原油采购 4.4 接力队选拔和选课策略
南宁翰林华府 ——地中海风格与现代住宅的融合.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
LINGO 教程 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,LINGO高效的求解器可快速求解并分析结果。
提昇教師專業會議(華人社區) 「教師專業行為表現」專題討論 學生和家長眼中的教師專業行為 日期:2005年10月29日 地點:香港教育學院C-Lp-01室 主講 :香港教育工作者聯會 韓湛恩老師.
Section 2-2: 4 (6), 7, 12 (14), 13, 18 (16), 21, 25, 28, 30, 36, 46, 48, 50, 54a Section 3-1: 4 (2), 5, 10, 15, 20, 29, 32 Section 4-1: 3, 7, 8,
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
Presentation transcript:

LINGO 教程 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,LINGO高效的求解器可快速求解并分析结果。

§1

例1.1 如何在LINGO中求解如下的LP问题: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO中求解如下的LP问题:

在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 然后点击工具条上的按钮 即可。

例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。

使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J));

!产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I));   !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata End 然后点击工具条上的按钮 即可。

§2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。

2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。

2.2 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。 一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。

2.3 模型的集部分 集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。

2.3.1 定义原始集 为了定义一个原始集,必须详细声明: ·集的名字 ·可选,集的成员 ·可选,集成员的属性 定义一个原始集,用下面的语法: setname[/member_list/][:attribute_list]; 注意:用“[]”表示该部分内容可选。下同,不再赘述。

Setname是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。 注意:该命名规则同样适用于集成员名和属性名等的命名。 Member_list是集成员列表。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们。 ① 当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。

例2.1 可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age: sets: students/John Jill, Rose Mike/: sex, age; endsets ② 当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法: setname/member1..memberN/[: attribute_list]; 这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名。LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。

列表如下: ③ 集成员不放在集定义中,而在随后的数据部分来定义。

例2.2 !集部分; sets: students:sex,age; endsets !数据部分; data: students,sex,age= John 1 16 Jill 0 14 Rose 0 17 Mike 1 13; enddata 注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。

在集部分只定义了一个集students,并未指定成员。在数据部分罗列了集成员John、Jill、Rose和Mike,并对属性sex和age分别给出了值。 集成员无论用何种字符标记,它的索引都是从1开始连续计数。在attribute_ list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。 可以把集、集成员和集属性同C语言中的结构体作个类比。如下图: 集 ←→ 结构体 集成员 ←→ 结构体的域 集属性 ←→ 结构体实例 LINGO内置的建模语言是一种描述性语言,用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解。因此,集属性的值一旦在模型中被确定,就不可能再更改。在LINGO中,只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾,初始部分是LINGO求解器的需要,并不是描述问题所必须的。

2.3.2 定义派生集 为了定义一个派生集,必须详细声明: ·集的名字 ·父集的名字 ·可选,集成员 ·可选,集成员的属性 可用下面的语法定义一个派生集: setname(parent_set_list)[/member_list/][:attribute_list]; setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。如果没有指定成员列表,那么LINGO会自动创建父集成员的所有组合作为派生集的成员。派生集的父集既可以是原始集,也可以是其它的派生集。

§3 模型的数据部分和初始部分 §3 模型的数据部分和初始部分 说明: §3 模型的数据部分和初始部分 §3 模型的数据部分和初始部分 说明: 处理模型的数据时,需要为集指派一些成员并且在求解模型之前为集的某些属性指定值。 两个可选部分: 输入集成员和数据的数据部分(Data Section); 为决策变量设置初始值的初始部分(Init Section)。 3.1 模型的数据部分 3.1.1 数据部分入门 数据部分:提供了模型相对静止部分和数据分离的可能性,对模型维护和维数缩放非常便利。 以关键字“data:”开始,“enddata”结束。可指定集成员、集的属性。 语法格式:object_list = value_list; 对象列(object_list):包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开。 一个对象列中至多有一个集名,属性名可有任意多。若对象列中有多个属性名,则其类型必须一致。若对象列中有一个集名,则对象列中所有的属性的类型就是这个集。 数值列(value_list):包含要分配给对象列中的对象的值,用逗号或空格隔开。注意属性值的个数必须等于集成员的个数。

例3.1 sets: set1/A,B,C/: X,Y; endsets data: X=1,2,3; Y=4,5,6; enddata 说明: 集set1中定义两个属性X、Y。 X的三个值是1、2、3,Y的三个值是4、5、6。 也可采用如下例子中的复合数据声明(data statement)实现同样的功能。

例3.2 sets: set1/A,B,C/: X,Y; endsets data: X,Y=1 4 2 5 3 6; enddata 说明: 误解,可能会认为X被指定了1、4、2三个值。 正确答案是1、2、3。 假设对象列有n个对象,在为对象指定值时,首先在n个对象的第1个索引处依次分配数值列中的前n个对象,然后在n个对象的第2个索引处依次分配数值列中紧接着的n个对象,……,以此类推。 模型的所有数据——属性值和集成员——被单独放在数据部分,这是最规范的数据输入方式。

3.1.2 参数 数据部分也可指定一些标量变量(scalar variables)。 参数:在数据部分确定的标量变量 举例:假设模型中用利率8.5%作为一个参数,象下面一样输入一个利率作为参数。 例3.3 data: interest_rate = .085; enddata 也可同时指定多个参数。 例3.4 interest_rate,inflation_rate = .085 .03;

3.1.3 实时数据处理 说明: 某些情况下,模型中的某些数据并不是定值。 如模型中有一通货膨胀率参数,想在2%至6%范围内,对不同的值求解模型,以观察模型的结果对通货膨胀的依赖有多么敏感。称这种情况称为实时数据处理(what if analysis)。 方法: 在本该放数的地方输入一个问号(?)。 例3.5 data: interest_rate,inflation_rate = .085 ?; enddata 每一次求解模型时,都会提示为参数inflation_rate输入一个值。 直接输入一个值再点击OK按钮,会把输入的值指定给inflation_rate,然后继续求解模型。 除参数之外,也可以时输入集的属性值,但不许实时输入集成员名

3.1.4 指定属性为一个值 在数据声明右边输入一个值将所有成员的该属性指定为一个值。 例3.6 sets: days /MO,TU,WE,TH,FR,SA,SU/:needs; endsets data: needs = 20; Enddata 用20指定days集的所有成员的needs属性。多个属性的情形,见下例。 例3.7 days /MO,TU,WE,TH,FR,SA,SU/:needs,cost; needs cost = 20 100; enddata

3.1.5 数据部分的未知数值 有时只想为一个集的部分成员的某个属性指定值,让其余成员的该属性保持未知,以便让LINGO去求出它们的最优值。 在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格。 例3.8 sets: years/1..5/: capacity; endsets data: capacity = ,34,20,,; enddata 属性capacity的第2个和第3个值分别为34和20,其余的未知。

3.2 模型的初始部分 被求解器当作初始点来用,并且仅仅对非线性模型有用。 和数据部分指定变量值不同,求解器可以自由改变初始部分初始化的变量的值。 格式:以“init:”开始,以“endinit”结束。 说明:初始部分的初始声明规则和数据部分的数据声明规则相同。即可在声明左边同时初始化多个集属性,可把集属性初始化为一个值,可用问号实现实时数据处理,还可用逗号指定未知数值。 例3.9 init:说明:提供的另一个可选部分。 初始部分中,可以输入初始声明(initialization statement),和数据部分中数据声明相同。 实际问题建模时,初始部分并不起到描述模型的作用,初始部分输入的值仅 X, Y = 0, .1; endinit Y=@log(X); X^2+Y^2<=1;好的初始点会减少模型的求解时间。

§4 LINGO 函数 说明: 有了前几节的基础知识,再加上本节的内容,就能够借助于LINGO建立并求解复杂的优化模型。 函数类型(9种): 1.基本运算符:算术运算符、逻辑运算符、关系运算符 2.数学函数:三角函数和常规的数学函数 3.金融函数:两种金融函数 4.概率函数:大量概率相关的函数 5.变量界定函数:定义变量的取值范围 6.集操作函数:对集的操作提供帮助 7.集循环函数:遍历集的元素,执行一定的操作的函数 8.数据输入输出函数:允许模型和外部数据源相联系, 进行数据的输入输出 9. 辅助函数:各种杂类函数