【Lingo】线性规划入门

Lingo运算符

1.算术运算

^ 乘方

 乘

/ 除

﹢ 加

 减

2.逻辑运算符

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

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

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

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

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

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

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

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

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

这些运算符的优先级由高到低为:

高  #not#

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

低  #and#  #or#

3.数学函数

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

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

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

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

@exp(x)             返回常数ex次方

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

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

@sign(x)            如果x<0返回-1;否则,返回1

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

                                                         当x<0时,返回不低于x的最大整数。

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

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

4.变量界定函数

@bin(x)            限制x01

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

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

@gin(x)            限制x为整数

在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞

@free取消了默认的下界为0的限制,使变量也可以取负值。

@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。

5.循环函数

1@for

该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入

每个约束,不过@for函数允许只输入一个约束,然后LINGO自动产生

每个集成员的约束。

 2@sum

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

 3@min@max

返回指定的集成员的一个表达式的最小值或最大值。

6.输入输出函数

7.辅助函数

8.金融函数

 

常规线性规划

例题切入:加工奶制品的生产计划

1桶牛奶有两种生产方式:(A)12小时/3公斤,获利24元/公斤;(B)8小时/4公斤,获利16元/公斤。

题目需求:50桶牛奶,480小时,至多加工100公斤A。

制定生产计划使每天获利最大。

lingo代码如下:

max=72*a+64*b;!获利函数;
a+b<50;!桶数量约束;
12*a+8*b<480;!时间约束;
3*a<100;!a数量约束;
!非负约束;
a>0;
b>0;

结果的相关注解:

 

对结果进行range分析的步骤:

  1. 在lingo中ctrl+I打开option
  2. 点击general solveer选项卡,将dual computat属性设置为princeses&ranges
  3. ctrl+r进行range分析

如图设置

range分析的结果解释

 

  • 2
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Lindo 和 Lingo 是美国 Lindo 系统公司开发的一套专门用于求解最优化问题的软件包。Lindo 用于求解线性规划和二次规划问题,Lingo 除了具有 Lindo 的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。Lindo 和 Lingo 软件的最大特色在于可以允许优化模型的决策变量是整数(即整数规划),而且执行速度很快。   Lingo 实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题。   由于这些特点,Lindo系统公司的线性、非线性和整数规划求解程序已经被全世界数千万的公司用来做最大化利润和最小化成本的分析。应用的范围包含生产线规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置等等...   Lindo/Lingo 软件作为著名的专业优化软件,其功能比较强、计算效果比较好,与那些包含部分优化功能的非专业软件相比,通常具有明显的优势。此外,Lindo/Lingo 软件使用起来非常简便,很容易学会,在优化软件(尤其是运行于个人电脑上的优化软件)市场占有很大份额,在国外运筹学类的教科书也被广泛用做教学软件。
MATLAB和LINGO都是用来解决线性规划问题的工具。下面我们以一个具体的例题来说明如何在MATLAB和LINGO求解线性规划问题。 假设有一个农场,农场有限的土地可以用于种植两种作物:小麦和玉米。现在农场主希望决定如何分配土地才能使得总产量最大化。已知每亩小麦的产量为 5 个单位,每亩玉米的产量为 10 个单位。此外,农场总共有100亩土地可供使用,小麦的最大种植面积为80亩,而玉米的最大种植面积为90亩。其,小麦和玉米的种植不能超过总土地面积。 在LINGO,我们可以使用以下语句来求解这个线性规划问题: ``` SETS: CROPS /WHEAT, CORN/; DATA: SIZES(CROPS) = 100; MAX_ACRE(CROPS) = 80, 90; YIELD("WHEAT") = 5; YIELD("CORN") = 10; VARIABLES: ACRES(CROPS) >= 0; OBJECTIVE: MAX = YIELD("WHEAT") * ACRES("WHEAT") + YIELD("CORN") * ACRES("CORN"); CONSTRAINTS: CONSTRAINT1: ACRES("WHEAT") + ACRES("CORN") <= SIZES("CROPS"); CONSTRAINT2: ACRES("WHEAT") <= MAX_ACRE("WHEAT"); CONSTRAINT3: ACRES("CORN") <= MAX_ACRE("CORN"); END ``` 在MATLAB,我们可以使用优化工具箱的`linprog`函数来求解这个线性规划问题。具体的MATLAB代码如下: ```matlab f = [-5; -10]; A = [1 1; 1 0; 0 1]; b = [100; 80; 90]; lb = [0; 0]; ub = []; x = linprog(f, A, b, [], [], lb, ub); ``` 在LINGO,可以得到结果:小麦种植面积为75亩,玉米种植面积为25亩,总产量为625个单位。 在MATLAB,可以得到结果:小麦种植面积为75亩,玉米种植面积为25亩,总产量为625个单位。 通过以上两种工具的使用,我们可以看到无论是使用MATLAB还是LINGO,都可以很方便地求解线性规划问题,并得到最优解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cout0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值