- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、尽量使用实数优化,减少整数约束和整数变量
2、尽量使用光滑优化,减少非光滑约束的个数
如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等
3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如 x/y 5
改为 x5y)
4、合理设定变量上下界,尽可能给出变量初始值
5、模型中使用的参数数量级要适当 (如小于 103)
LINGO 模型的基本特征:(与 LIDO 模型相比)
1、目标函数的表示方法从 MAX 变成了 MAX=,
2、ST 在 LINGO 模型中不再需要了,
3、在每个系数与变量之间增加了运算符*,
4、每行后面均增加了一个分号(;),
5、模型结束标志 END 也被删除了(LINGO 中只有当模型以 MODEL:开始时才能以 END 结束.
6、变量和行名可以超过 8 个字符,但不能超过 32 个字符,且必须一字母开头.
7、与 LINDO 相同,用 LINGO 解规划问题时已假定各变量非负.
8、与 LINDO 不同,变量可以放在约束条件右端,同时数字也可以放在约束条件的左端,但为了提高 LINGO 求解时的效率,应尽可能采用线性表达式定义目标和约束.
LINGO 中的集
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO 允许把这些相联系的对象聚合成集
(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥 LINGO 建模语言的优势。
什么是集
集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于 LINGO 求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。
LINGO 有两种类型的集:原始集(primitive set)和派生集(derived set)。
。一个原始集是由一些最基本的对象组成的。
。一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。
集部分是 LINGO 模型的一个可选部分。在 LINGO 模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。
LINGO 有 9 种类型的函数:
1.基本运算符:包括算术运算符、逻辑运算符和关系运算符
2.数学函数:三角函数和常规的数学函数
3.金融函数:LINGO 提供的两种金融函数
4.概率函数:LINGO 提供了大量概率相关的函数
5.变量界定函数:这类函数用来定义变量的取值范围
6.集操作函数:这类函数为对集的操作提供帮助
7.集循环函数:遍历集的元素,执行一定的操作的函数
8.数据输入输出函数:这类函数允许模型和外部数据源相联 系,进行数据的输入输出
9. 辅助函数:各种杂类函数
算术运算符是针对数值进行操作的。LINGO 提供了 5 种二元运算符:
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
LINGO 唯一的一元算术运算符是取反函数“﹣”。
LINGO 具有9种逻辑运算符:
#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#
LINGO 有三种关系运算符:“=”、“=”和“=”。LINGO 中还能用“”表示小于等于关系,“”表示大于等于关系。LINGO 并不支持严格小于和严格大于关系运算符。然而,如果需要严格小于和严格大于关系,比如让A 严格小于B(AB),那么可以把它变成如下的小于等于表达式:
A+ε =B,
这里ε 是一个小的正数,
文档评论(0)