LINGO初步介绍

LINGO是用来解决优化问题的一个特别好用的软件,可以快速求解线性规划、非线性规划、线性和非线性方程组等等,是数学建模中求优化问题的解不可缺少的工具之一。

首先让我们来看一个问题:

对于解决这种线性规划问题  ,可以采用 matlab中的库函数 linprog,但更方便的,还是采用 lingo编程,语法也十分简单

max=72*x1+64*x2;
x1+x2<=50;
12*x1+8*x2<=480;
3*x1<=100;

几行代码也就算出结果,当然你可能会问,代码中为什么没有限制x1 和 x2 都要大于0,这是因为LINGO 中默认所有的变量都是非负的,在LINGO 中就不需写出对应的约束。

LINGO基本用法

(1)LINGO 的数学规划模型包含目标函数、决策变量、约束条件三个要素。
(2)在LINGO 程序中,每一个语句都必须要用一个英文状态下的分号结束,一个语句可以分几行输入。
(3)LINGO 的注释以英文状态的!开始,必须以英文状态下的分号结束;
(4)LINGO 的变量不区分字母的大小写,必须以字母开头,可以包含数字和下划线,不超过32 个字符。
(5)LINGO 程序中,只要定义好集合后,其他语句的顺序是任意的。
(6)LINGO 中的函数以“@”开头。
(7)LINGO 程序默认所有的变量都是非负的。
(8)LINGO 程序中"<"或">"号与 ""或 " " 号功能相同。

LINGO 软件的基本语法

1.3.1 集合

集合部分的语法为
sets:
集合名称1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;
集合名称2/成员列表2/:属性2_1,属性2_2,…,属性2_n2;
派生集合名称(集合名称1,集合名称2):属性3_1,…,属性3_n3;
endsets
例1.4
sets:
product/A B/;

machine/M N/;
week/1..2/;
allowed(product,machine,week):x;
endsets

1.3 .2 .2 数据

数据部分的语法为 数据部分的语法为 数据部分的语法为 数据部分的语法为
data: data:
属性 1= 数据列表; 数据列表; 数据列表;
属性 2= 数据列表; 数据列表; 数据列表;
enddata nddata

1.4 LINGO函数

1.4.1 算术运算符

^ 乘方

﹡ 乘

/ 除

﹢ 加

﹣ 减

1.4.2 逻辑运算符

在 LINGO 中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些 集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。 LINGO 具有9种逻辑运算符

#not# 否定该操作数的逻辑值,#not#是一个一元运算符。

#eq# 若两个运算数相等,则为 true;否则为 false。

#ne# 若两个运算符不相等,则为 true;否则为 false。

#gt# 若左边的运算符严格大于右边的运算符,则为 true;否则为 false。

#ge# 若左边的运算符大于或等于右边的运算符,则为 true;否则为 false。

#lt# 若左边的运算符严格小于右边的运算符,则为 true;否则为 false。

#le# 若左边的运算符小于或等于右边的运算符,则为 true;否则为 false。

#and# 仅当两个参数都为 true 时,结果为 true;否则为 false。

#or# 仅当两个参数都为 false 时,结果为 false;否则为 true。

1.4.4 数学函数

LINGO 提供了大量的标准数学函数

@abs(x)返回 x 的绝对值。

@sin(x)返回 x 的正弦值,x 采用弧度制。

@cos(x)返回 x 的余弦值。

@tan(x)返回 x 的正切值。

@exp(x)返回常数 e 的 x 次方。

@log(x)返回 x 的自然对数。

@lgm(x)返回 x 的 gamma 函数的自然对数。

@mod(x,y)返回 x 除以 y 的余数。

@sign(x)如果 x0 时返回 1,当 x=0 时返回 0。

@floor(x)返回 x 的整数部分。当 x>=0 时,返回不超过 x 的最大整数;当 x<0 时,返回 不低于 x 的最大整数。

@smax(x1,x2,…,xn)返回 x1,x2,…,xn 中的最大值。

@smin(x1,x2,…,xn)返回 x1,x2,…,xn 中的最小值。

1.4.5 变量界定函数

变量界定函数实现对变量取值范围的附加限制,共 4 种

@bin(x)限制 x 为 0 或 1;

@bnd(L,x,U)限制 L≤x≤U;

@free(x)取消对变量 x 的默认下界为 0 的限制,即 x 可以取任意实数;

@gin(x)限制 x 为整数。

在默认情况下,LINGO 规定变量是非负的,也就是说下界为 0,上界为+∞。@free 取 消了默认的下界为 0 的限制,使变量也可以取负值。@bnd 用于设定一个变量的上下界,它也 可以取消默认下界为 0 的约束。

1.4.6 集循环函数

@for:该函数用来产生对集成员的约束。

@sum:该函数返回遍历指定的集成员的一个表达式的和。

@min 和@max:返回指定的集成员的一个表达式的最小值或最大值。

例题:

以上这些都是LINGO的基本语法和函数使用的知识,接下来我用一些题目来教大家具体如何使用

min=(x^2+y^2+z^2)^(1/2);
x+y+z=1;
z=x^2+y^2;
@free(x); @free(y);

可以看出 结果和 此时自变量的取值。

再来一个例题:

代码如下:

sets:
var/1..100/:x;
endsets
min=@sqrt(@sum(var(i):x(i)^2));
@sum(var(i):x(i))=1;
x(100)=@sum(var(i)|i#le#99:x(i)^2);
@for(var(i)|i#le#99:@free(x(i)));

以上就是 LINGO 基本入门知识,以后还会继续分享! 在此感谢司守奎老师的课件和PDF!

LINGO的入门介绍相关推荐

  1. .NET读写Excel工具Spire.Xls使用(1)入门介绍

    原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式 ...

  2. 独家 | 集成学习入门介绍

    作者:Jason Brownlee 翻译:wwl 校对:王琦 本文约3300字,建议阅读8分钟. 本文介绍了我们在生活中的许多决定包括了其他人的意见,由于群体的智慧,有的时候群体的决策优于个体.在机器 ...

  3. SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

    为什么80%的码农都做不了架构师?>>>    SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://proje ...

  4. ECC加密算法入门介绍

    作者  : ZMWorm[CCG]   E-Mail: zmworm@sohu.com   主页  : Http://ZMWorm.Yeah.Net/ 前言 同RSA(Ron Rivest,Adi S ...

  5. [翻译][1.4.2]Flask-Admin入门介绍

    为什么80%的码农都做不了架构师?>>>    #Flask-Admin入门介绍 ##让我们荡起双桨 初始化 Introduction To Flask-Admin Getting ...

  6. 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技

    谷歌大脑科学家亲解 LSTM:一个关于"遗忘"与"记忆"的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入 ...

  7. Tomcat容器入门介绍

    Tomcat容器入门介绍 Tomcat环境配置 PS:JDK的安装这里就不讲了,找到安装包直接下一步下一步就行了. 1.配置JDK 在Windows10下,找到环境变量 在环境变量中添加JDK主目录 ...

  8. QWT中Qdial的入门介绍

    最近使用了一下QWT.因为是第一次使用,所以有一些需要注意的地方,特记录在此,以供后来者参考. 1,QWT的安装与配置环境 有关QWT的安装与配置,网络上已经有很多篇文章,这里就不再重复了.介绍一下自 ...

  9. Spring入门介绍:

    Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...

最新文章

  1. java中名词概念的理解
  2. 一站式了解多模态、金融、事理知识图谱构建指南 | AI ProCon 2020
  3. C#线程系列讲座(1):BeginInvoke和EndInvoke方法
  4. mysql 导入txt数据到数据表【原创】
  5. mac mysql mysqldump_Mac下Mysql导出sql语句的方法及可能遇到的mysqldump: command not found...
  6. SAP Hybris安装包里自带的Maven和Gradle
  7. 吃豆人(luogu 7472/NOI Online 2021 普及组 T2)
  8. jqgrid demo java_java – jqgrid如何显示服务器端消息
  9. 计算机基础17秋在线作业3,南开17秋学期《计算机应用基础》在线作业3
  10. python入门基础知识实例-Python入门教程丨1300多行代码,让你轻松掌握基础知识点...
  11. linux赋权限2770,Linux权限:SUID,SGID以及粘滞位
  12. /bin/sh: 1: tclsh: not found
  13. EasyUI框架01——基础学习
  14. 2022年合肥及合肥市各地稳岗补贴申请条件及补贴标准申请流程实施细则
  15. HTML页面转PDF 思路
  16. 美团前期运营模式(怎么吸引商家入驻?怎么吸引用户?)
  17. 名悦集团:开电动车会比开燃油车省钱吗?
  18. 【车道线检测论文阅读笔记——经典论文粗读汇总】
  19. Logistic Regression Model
  20. Python字典用法大全Dict

热门文章

  1. 【Arduino】点亮灯和灯闪烁实验
  2. 电子废弃物俗称“电子垃圾”,回收怎么处理
  3. iOS单元测试之接口测试
  4. 【Paddle打比赛】全球人工智能技术创新大赛-商品标题实体识别竞赛_副本
  5. FPS游戏初开发--逻辑分析总结
  6. c++ - 信息学奥赛一本通答案1000
  7. Python文件的移动命名删除复制
  8. 2023 源支付码支付系统源码v3.0 二开修复版 全本地化
  9. iOS 利用AFNetworking实现大文件分片上传
  10. Eclipse使用Space键替换Tab键不生效的解决方案