数学建模的LINGO基础

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

  下面介绍一下我从网上总结学习到的一些lingo知识:

  内置函数:

  • @bin(x):限制x只能为0或1,通常在0-1规划中使用
  • @gin(x):限制x只能为整数
  • @free(x):在lingo软件中,x默认为负数,使用@free(x)可以取消x非负数的限制。
  • @abs(x):取x的绝对值
  • @exp(x):返回e^x的值
  • @sin(x),@cos(x),@tan(x):返回对应三角函数的值 

   下面通过几个例题来实际介绍一下这些内置函数

第一题:

在lingo软件中,默认变量的值是大于等于零的,所以第四个约束条件可以省略不写,代码如下:

MODEL:
MAX =4*X1+3*X2;
2*X1+X2<=10;
X1+X2<=8;
X2<=7;
END

运行结果如下:

即X1=2,X2=6的时候,取得目标函数的最大值。 

 第二题:要求X1,X2均为整数:

在整数的要求下,可以使用@gin(x)这个函数,它要求变量X必须是整数。

MODEL:
MAX=40*X1+90*X2;
9*X1+7*X2<=56;
7*X1+20*X2<=70;
@gin(X1);@gin(X2);
END

运行截图:

第三题:0-1规划问题:要求变量只能是0或1。

Lingo软件提供了@bin(x)这个函数,它规定了变量只能是0或者1这两个量。

MODEL:
MAX=X1*X1+0.4*X2+0.8*X3+1.5*X4;
3*X1+2*X2+6*X3+10*X4<=10;
@BIN(X1);@BIN(X2);@BIN(X3);@BIN(X4);
END

 第四题:非线性规划问题:

 在lingo软件中,提供了绝对值函数@abs,可以直接使用来表示目标函数。

 代码如下:

MODEL:
MIN=@ABS(X1)+2*@ABS(X2)+3*@ABS(X3)+4*@ABS(X4);
X1-X2-X3+X4=0;
X1-X2+X3-3*X4=1;
X1-X2-2*X3+3*X4=-0.5;
END

 运行截图如下:

  LINGO一个重要特质就是集合(SETS):分为原始集和派生集:

  具体的格式为:

  原始集名/1.2.3...n/:属性1,属性2,属性3;

  派生集名(原始集名1,原始集名2):属性1,属性2;

  其中集合操作函数有:@SUM,@FOR,@PROD等等。

  利用lingo解决指派问题:已经知道下列工人完成指定的工作时间如下表:

MODEL:
SETS:
VAR/1..4/; !定义一个原始集;
LINK(VAR,VAR):C,X;  !定义一个4*4的派生集,即为指派数组;
ENDSETS
DATA:
C=15 18 21 24
  19 23 22 18
  26 17 16 19
  19 21 23 17;
ENDDATA
MIN=@SUM(LINK:C*X);
@FOR(VAR(I):@SUM(VAR(J):X(I,J))=1); !每一个工作都有人解决;
@FOR(VAR(J):@SUM(VAR(I):X(I,J))=1); !每一个人都有工作做;
@FOR(LINK:@BIN(X));
END

 运行截图如下所示:

即:甲——B,乙——A,丁——C,丙——D.

用LINGO解决0-1背包问题:

给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个,规定重量不能超过8,价值和重量如下:

v[]={2,1,4,3,5};
w[]={1,4,2,3,5};

代码如下:

MODEL:
SETS:
JIHE/1..5/:VALUE,WEIGHT,CHOOSE;
ENDSETS
DATA:
VALUE=2,1,4,3,5;
WEIGHT=1,4,2,3,5;
ENDDATA
MAX=@SUM(JIHE:VALUE*CHOOSE);
@SUM(JIHE:WEIGHT*CHOOSE)<=11;
@FOR(JIHE:@BIN(CHOOSE));
END

运行截图如下:

表示选择1,3,4,5的时候,总价值最大。 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 数学建模是一门应用数学的学科,它的主要目标是根据实际问题建立数学模型,并通过对模型的分析和求解,得出对问题的理解和解决方案。在这个过程中,数学建模常常面临各种数学难题和困难。 正如谚语所说,“逢山开路,遇水架桥”,这句话同样适用于数学建模数学建模的过程中,经常会遇到各种复杂的数学问题和难点。就像行走在陌生的山地中,山势陡峭,道路崎岖,需要开辟新的道路,数学建模也需要创新和探索,面对困难和挑战,突破传统的思维方式和数学方法,开辟新的研究路径。 而lingo是一种常用的数学建模软件,它能够帮助我们建立和求解各种数学模型,尤其在线性规划方面具有较强的求解能力。使用lingo软件,我们能够更加高效和准确地对问题进行建模和求解,充分发挥数学在问题解决中的作用。 因此,数学建模逢山开路lingo可以理解为数学建模面对困难时,可以利用lingo数学建模软件的强大功能和优势,积极探索和解决问题。就像逢山时需要开辟新的道路,数学建模也需要不断创新和突破,运用新的工具和方法来解决问题。 ### 回答2: 数学建模是利用数学的工具和方法来解决实际问题的一种方法。在数学建模的过程中,lingo是一个十分常用的工具。lingo是一种基于数学编程语言的软件,可以用于优化、线性规划、整数规划等问题的建模和求解。 数学建模中,我们常常会遇到各种问题,就好像前面有一座大山阻挡了我们前进的道路。然而,lingo就像是一把神奇的锤子,可以帮助我们开辟一条路径。它提供了一系列的函数和命令,使得我们可以将问题转化为数学模型,并利用lingo的求解功能得到最优解。 在使用lingo进行数学建模时,我们首先需要将实际问题转化为数学形式。比如,对于优化问题,我们需要定义决策变量、目标函数和约束条件。接着,我们可以利用lingo提供的函数和命令,输入这些数学模型。lingo会根据我们的模型进行计算,并给出一个最优解。 lingo除了提供了方便的建模和求解功能外,还可以进行灵敏度分析和可视化展示。灵敏度分析可以帮助我们了解模型结果对输入参数的变化敏感程度,从而对问题进行更全面的理解。同时,lingo还可以生成直观的图表和报告,帮助我们更好地解释和传达数学建模的结果和意义。 综上所述,数学建模逢山开路lingo。在解决实际问题中,数学建模可以帮助我们将问题形式化,而lingo作为数学建模的工具,能够帮助我们建立数学模型,并得到问题的最优解。它的强大功能和方便易用的特点让数学建模变得更加高效和准确。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值