Lingo 软件的使用 数学建模 司守奎

1. Lingo 软件的基本语法

1.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

例如

sets:
product/A B/;
machine/M N/;
week/1…2/;
allowed(product,machine,week):x;
endsets

1.2 数据

数据部分的语法

data:
属性 1= 数据列表;
属性 2= 数据列表;
enddata

1.3 数据计算段

数据计算段部分不能含有变量,必须为已知数据的计算

calc:
b=0;
a=a+1;
endcalc

1.4 变量初始化

主要用于非线性问题赋初始值

例如

init:
x,y=0,.1;
endinit
!LINGO函数,后做解释;
y=@log(x);
x^2+y^2<=1;

注意:

  • Lingo中是不区分大小写字符的
  • Lingo中数据部分不能使用分式,例如数据部分不能使用1/3
  • Lingo中注释是使用"!"引导
  • Lingo中默认所有变量都是非负
  • Lingo中矩阵数据逐行存储,Matlab中数据逐列存储

2. Lingo函数

2.1 算术运算符

^    乘方
*   乘
/   除
+  加
-   减

2.2 逻辑运算符

九种逻辑运算符

#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。

2.3 关系运算符

Lingo有三种关系运算符:"="、"<=“和”>="。

Lingo不支持严格小于和严格大于关系运算符,因此“<”也表示小于等于,“>”也表示大于等于。

2.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 中的最小值。

2.5 变量界定函数

实现对变量取值范围的附加限制,有4种:

@bin(x)限制 x 为 0 或 1;@bnd(L,x,U)限制 L≤x≤U,L可以取负数,此时取消了变量x默认下界为零的约束;@free(x)取消对变量 x 的默认下界为 0 的限制,即 x 可以取任意实数;@gin(x)限制 x 为整数。

2.6 集循环函数

@for:该函数用来产生对集成员的约束。@sum:该函数返回遍历指定的集成员的一个表达式的和。@min 和@max:返回指定的集成员的一个表达式的最小值或最大值。
!@for程序示例;
model:
sets:
number/1..5/:x;
endsets
@for(number(I): x(I)=I^2);
end!@sum程序示例;
model:
data:
N=6;
enddata
sets:
number/1..N/:x;
endsets
data:
x = 5 1 3 4 6 10;
enddata
s=@sum(number(I) | I #le# 5: x);
end!@sum @max 程序示例
model:
data:
N=6;
enddata
sets:
number/1..N/:x;
endsets
data:
x = 5 1 3 4 6 10;
enddata
minv=@min(number(I) | I #le# 5: x);
maxv=@max(number(I) | I #ge# N-2: x);
end

2.7 概率函数

2.8 集操作函数

3.对输出做一些简单解释

以简单的线性规划问题为例,求解程序如下

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

Reduced Cost:变量变动时目标函数值的变化率

Slack or Surplus:最优解下的约束剩余值

Dual Price:约束变动时的目标函数值的变化率

Allowable Increase:最优解不变的允许最大变化值

Allowable Decrease:最优解不变的允许最小变化值

求解器状态窗口界面

学习了Lingo基本语法之后,读懂建模示例程序文件,再进一步自主应用。

Lingo 软件的使用 数学建模 司守奎相关推荐

  1. 司守奎《数学建模算法与应用》课后习题:线性规划

    系列目录 司守奎<数学建模算法与应用>课后习题:线性规划 模拟退火算法解决旅行商问题详解 遗传算法解决旅行商问题 MATLAB实现 基于模拟退火优化的投影寻踪评价法求解供货能力评价模型 目 ...

  2. 非线性规划转化为线性规划问题(司守奎老师数模例题)-------数模学习笔记一

    目录 一.非线性问题 1.问题描述与分析 2.问题解决思路 二.具体求解步骤 1.引入ui与vi变量 2.引入变量后新方程 3.matlab程序 总结 本文主要记录司守奎数模书中第一章所给例题 提示: ...

  3. 袁新生《LINGO和Excel在数学建模中的应用》

    内容介绍 本书深入浅出地介绍了LINGO的基础知识.用LINGO语言描述现实问题的方法和用Excel处理数据的方法,重点是这两种软件在解决各种优化问题以及在数学建模中的应用,通过丰富的实例介绍了把实际 ...

  4. 通用优化软件GAMS的数学建模和优化分析

    优化分析是很多领域中都要面临的一个重要问题,求解优化问题的一般做法是:建立模型.编写算法.求解计算.常见的问题类型有线性规划.非线性规划.混合整数规划.混合整数非线性规划.二次规划等,优化算法包括人工 ...

  5. 基于通用优化软件GAMS的数学建模和优化分析实践

    优化分析是很多领域中都要面临的一个重要问题,求解优化问题的一般做法是:建立模型.编写算法.求解计算.常见的问题类型有线性规划.非线性规划.混合整数规划.混合整数非线性规划.二次规划等,优化算法包括人工 ...

  6. 数学建模算法与程序(司守奎):第一章 线性规划

    第一章 线性规划 1 线性规划 1.1 线性规划的实例与定义 1.2 线性规划的MATLAB标准形式是 1.3线性规划问题解的概念 1.4 线性规划的图解法 1.5 求解线性规划的MATLAB解法 例 ...

  7. 数学建模--数理统计

    数学建模--司守奎 摘录 文章目录 数学建模--司守奎 摘录 第七章 数理统计 一.经验分布函数 二.Q-Q图 三.非参数检验 四.非参数Bootstrap方法 五.方差分析 单因素方差分析 双因素方 ...

  8. 数学建模竞赛常用算法介绍及对应国赛获奖论文分类整理分享

    数学建模竞赛中应当掌握的算法: 数学建模国赛每年的题型都类似,除非是个人专业性很强,否则作者不太建议选择华为出的题,剩余的题型每年都类似,是有迹可循的,毕竟站在巨人的肩膀上看的更远.下面就介绍一些数模 ...

  9. 猿创征文 | 数学建模 lingo超实用的核心使用技巧

    文章目录 1.查看lingo版本信息,以防在解决大规模优化问题时受限 2.利用全局求解器尽可能大的逼近全局解(提高精确度) 3.编程过程中验证编写的模型与预期是否一致(减少编写错误) 4.快速查找结果 ...

  10. 1.数学建模比赛前期准备

    备注: 阅读本文的建议: (1)尽量用电脑看 (2)适当做笔记,记下自己觉得有用的地方 (3)建议每遇到一个链接,打开它,看完文章后去浏览看看,找到自己需要的东西,做好存储与笔记 (4)带着积极的眼光 ...

最新文章

  1. acwing1086||HDU4507数位dp[恨7不成妻]
  2. jQuery 遍历 - closest() 方法
  3. 快速搭建 Serverless 在线图片处理应用
  4. POJ - 3662 Telephone Lines(分层图最短路)
  5. Linux中gsub函数,Linux中awk下 gsub函数用法
  6. wince中BIB文件的详细介绍
  7. Git学习总结(11)——Git撤销操作详解
  8. jquery easyui Tab 引入页面的问题
  9. C++ 开发者怒了:这个无用的模块设计最终会害死 C++!
  10. 【面经系列】八位硕博大佬的百度之旅
  11. 第二届跨校大学生双创训练营任务方案开源1——任务介绍
  12. MapReduce读取数据库操作
  13. Kali Linux 自定义GDM3登录背景图片和LOGO
  14. DM6437烧写总结
  15. 快递100显示查询错误?快递100快递查询类FAQ
  16. bzoj3786: 星系探索 //ETT
  17. mysql neq_ecshop中smarty比较操作符(eq,ne,neq)含义
  18. vc2010下调用miniblink控件实现浏览器简单实例
  19. 内部类基本操作(基础)
  20. mysql 中的脏读与幻读_mysql中脏读、不可重复读、幻读以及四种隔离级别的浅显理解...

热门文章

  1. 计算机网络第二章-----物理层
  2. java 实验报告模板_java实验报告模板
  3. 超详细的UI设计软件教程与资料
  4. python设计模式之Borg模式
  5. Java笔记之入门(一)
  6. LexYacc 编译原理课设
  7. java hex2bin_hex2bin / bin2hex / pack / unpack 的理解及应用
  8. 【CarMaker学习笔记】T型路口多车运行实验
  9. 穿越火线显示无法连接服务器,穿越火线无法连接服务器是什么原因
  10. GNS3 2.1.9版本的安装