数学建模(一) lingo基础学习

 前言:我是看的这个教程。

【【数模常用软件Lingo教程】O奖讲解数模规划问题利器Lingo一小时速成】https://www.bilibili.com/video/BV17T4y1K7sL?p=3&vd_source=1e49cb28b33d3c8796cd2de6b1d560d9

内有些图来源于这个up,纯想省事,侵权删。

1.介绍lingo

1.1 基本概念

LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”,由美国LINDO系统公司(Lindo System Inc.)推出的,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。

其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。LINGO18.0为最新版本。

1.2 lingo函数

1.2.1 基本运算符

算术运算符:

逻辑运算符:

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

一共有9中逻辑运算符
#not#否定该操作数的逻辑值。一元运算符
#eq#若两个运算符相等,则返回true;否则false
#ne#不相等,true;否则false
#gt#左严格大于右为true
#ge#左大于等于右时为true
#lt#左严格小于右为true
#le#左小于等于右为true
#and#仅当两个参数为true时 为true

#or#

仅当两个参数为false时 为false
 运算符优先级

由高到低-------->

#not#

#eq# #ne# #gt# #ge# #lt# #le#

#and# #or#

< > =

字母缩写辅助:

g:greater

e:equal

l:less

n:not

t:than

关系运算符

在lingo中,关系运算符主要用于在模型中,用来指定一个表达式的左边是否等于、小于等于或者大于等于右边,形成模型的一个约束条件。关系元素安抚与逻辑运算符截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假。

lingo有三种关系运算符:“=” “<”和“>”。lingo"<"表示小于等于关系,“>”表示大于等于。lingo并不支持严格小于和严格大于关系运算符。然而,如果需要雅阁小于和严格大于,可以加上一点条件。

比如说想要a<b;可以在lingo输入a<b+0.001。

1.2.2 数学运算符

三角函数和常规的数学函数

常用数学运算符:

@abs(x)返回x的绝对值
@sin(x)返回x的正弦值,x采用弧度制
@cos(x)返回x的余弦值
@exp(x)返回常数e的x次方
@log(x)返回x的自然对数
@lgm(x)返回gamma函数的额自然对数
@tan(x)返回正切值
@sign(x)x<0 返回-1;否则,返回1
@smin(x1,x2,x3,...,xn)返回最小值
@smax(x1,x2,x3,...,xn)返回最大值
@floor(x)返回整数x的整数部分
@qrand(seed)产生服从(0,1)区间的拟随机数
@rand(seed)产生服从(0,1)区间的拟随机数

1.2.3 金融函数

lingo提供的两种金融函数

1.2.4 概率函数

1.2.5 界定函数

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

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

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

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

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

1.2.6 其他函数

1.3 lingo注意事项

  1. lingo中模型一“model:”开始,以“end”结束,对于简单的模型,可以省略。
  2. lingo中每行后面均增加了一个分号“;”;
  3. 所有符号都需要英文状态下输入;
  4. min=函数,max=函数,表示求函数的最小,最大值;
  5. lingo中变量不区分大小写,变量名可以超过8个,但不能超过32个,需以字母开头
  6. 用lingo解优化模型时已假定所有变量非负,如果想要解除这个限制可以用函数@free(x),这样x可以取到任意实数。
  7. 变量可以放在约束条件右端,同时数字也可以放在约束条件左边;
  8. lingo模型语句由一系列语句组成,每一个语句都必须以“;”结尾;
  9. lingo中以“!”开始的是说明语句,说明语句也以“;”结尾

 2.实例讲解

2.1工厂生产线问题

2.1.1题目

 2.1.2 lingo代码

model:
max=200*x1+300*x2;
x1<100;
x2<120;
x1+2*x2<160;
end

 

 按这个正中靶心图像,然后运行,也可以ctrl+u。

 2.1.3 结果

这个界面我们看这个图,来自这位大佬的解释 LINGO语法及软件操作_infinite_with的博客-CSDN博客

 

 解释:

 简单总结:

slack or surplus是大的减小的,小于号就是slack(松弛),大于号就是surplus(剩余)

行数开始是从model 求目标值函数开始,即max=200*x1+300*x2;

dual price就是影子价格,如果放松这个约束条件,还能增加多少利润

 

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值