2025年数学建模之Lingo

数学建模之Lingo一 什么是 Lingo LINGO Linear Interactive and General Optimizer 即 交互式的线性和通用优化求解器 由美国 LINDO 系统公司推出 Lingo 可以用于求解非线性规划 也可以用于一些线性和非线性方程组的求解等 功能十分强大 是求解优化模型的**选择

大家好,我是讯享网,很高兴认识大家。

一、什么是Lingo
LINGO(Linear Interactive and General Optimizer),即“交互式的线性和通用优化求解器”,由美国LINDO系统公司推出。Lingo可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的**选择。
Lingo的特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。
——《百度百科–Lingo》

Lingo有两种命令模式:
(1)Windows模式(使用Ctrl+U即可编译)
(2)命令行模式

二、建模的核心
建模的核心在于集合set及其属性。
集合分为派生集合和基本集合。
派生集合又分为稀疏集合(可使用元素列表法元素过滤法)以及稠密集合。
基本集合包括直接列举法隐式列举法

三、组成要素
1)集合段
sets:
endsets
2)目标与约束段
以end结束
3)数据段
data:
enddata
4)初始段
init:
endinit
5)定义初值
[格式]attribute(属性)=value_list(常数列表)

四、常见数学函数
@abs @cos @exp @floor @lgm @log @sign @sin @smax @smin @tan
@function
@for @max @min @sum
@index @in @wrap @size @bnd @bin @free @gin

@filename @ODBC @OLE @pointer @text

五、例题
1)给定一个直角三角形,求包含该三角形的最小正方形。如图所示,其中
CE=a*sin⁡x,AD=b*cos⁡x,DE=a*cos⁡x+b*sin⁡x,初步假设a=3,b=4。
在这里插入图片描述
讯享网
求最小的正方形就相当于求如下的最优化问题:
在这里插入图片描述
提示:要用到函数@bnd。

!Triangle Question; sets: obg/1..3/:line; endsets data: a = 3; b = 4; pi = 3.; enddata !conditions; line(1) = a*@sin(x); line(2) = b*@cos(x); line(3) = a*@cos(x)+b*@sin(x); min=@smax(line(1),line(2),line(3)); @bnd(0,x,pi/2); end 

讯享网

2)利用@rand 产生 15 个标准正态分布的随机数和自由度为 2 的 t 分布的随机数。

讯享网!produce random number; sets: obj/1..15/:time,z,t; endsets time(1)=@rand(.5678); @for( obj(i)| i #ne# 1: time(i)=@rand(time(i-1)); ); @for( obj(i): !get正态分布随机数; @psn(z(i))=time(i); !get自由度为2的t分布随机数; @ptd(2,t(i))=time(i); !allow get number below zero; @free(z(i)); @free(t(i)); ); end 

3)职员时序安排模型:一项工作一周 7 天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为 20、16、13、16、19、14 和 12,并要求每个职员一周连续 工作 5 天,试求每周所需最少职员数,并给出安排。这里我们只考虑稳定后的情况。

!Employee Question; sets: days/1..7/:employee,startnum; endsets data: employee= 20 16 13 16 19 14 12; enddata !find minnum employee; min=@sum(days: startnum); !constraint conditions; @for(days(J): @sum(days(I) | I#le#5: !@wrap(a,b) return c=a-k*b(k is integer) to avoid accessing violation of index; startnum(@wrap(J+I+2,7)) ) >= employee(J) ); end 

4)一个投资者拟选择A,B,C三支业绩好的股票来进行长期组合投资.通过对这三支股票的市场分析和统计预测得到相关数据如下表所示。
在这里插入图片描述
试从两个方面分别给出三支股票的投资比例:
(1)希望将投资组合中的股票收益的标准差降到最小,以降低投资风险,并希望五年后的期望收益率不少于65%;
(2)希望在标准差最大不超过12%的情况下,获得最大的收益。

讯享网!(1)investment choice; sets: obj_i/1..3/:x,r; obj_j/1..3/; invest(obj_j,obj_i):cov; endsets data: r = 92 64 41; cov = 180 36 110 36 120 -30 110 -30 140; enddata @sum(obj_i(count):x(count))=1; min=@sum(invest(j,i):cov(j,i)*x(j)*x(i)); !min=180*x(1)^2+120*x(2)^2+140*x(3)^2+72*x(1)*x(2)-60*x(2)*x(3)+220*x(1)*x(3); @sum(obj_i(count):r(count)*x(count))>=65; @for(obj_i(count):x(count)>=0;); end 
!(2)investment choice2; sets: obj_i/1..3/:x,r; obj_j/1..3/; invest(obj_j,obj_i):cov; endsets data: r = 92 64 41; cov = 180 36 110 36 120 -30 110 -30 140; enddata @sum(obj_i(count):x(count))=1; @sum(invest(j,i):cov(j,i)*x(j)*x(i))<=12^2; [obj]max=@sum(obj_i(count):r(count)*x(count)); @for(obj_i(count):x(count)>=0;); end 

六、友情链接
(1)简学lingo(一)——基础篇
https://blog.csdn.net/yzu_/article/details/

小讯
上一篇 2025-02-22 07:20
下一篇 2025-02-25 17:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/13065.html