lingo基础入门Day 2


文章目录
  • lingo基础入门Day 2

    • lingo的标识符

      • 命名规范

      • 练习1:标识符

      • 算术运算符

      • 逻辑运算符

      • 关系运算符

      • 用lingo求线性方程组

      • 用lingo求非线性方程组

      • 百鸡百钱问题

    • 总结


lingo的标识符

在lingo中,标识符是为了给对象命名所使用的字符串。

命名规范
  • 所有标识符必须以字母或者下划线开头,后续字母也只能是字母、数字或者下划线。

  • 标识符最长32字符

  • 标识符不区分大小写

练习1:标识符
  • X1 A_99 SUNDAY _TBX (正确)

    -A 9C 8D A+B X.Y (错误)

算术运算符
  • -号如果是单目运算符表示取运算对象的相反数,如果是双目运算符表示减法运算。

  • 例如:X=-A; X=C-A;

  • 除负号运算符外,其他五种运算符都是双目运算符,也就是需要两个运算对象。

  • 算数运算符的优先级别是同级从左到右

  • 可能通过加括号()来改变运算次序

逻辑运算符

#EQ# 相等 #NE# 不相等 #GT# 大于 #LT#小于

#LE# 小于等于 #GE# 大于等于

#NOT# 逻辑反 #AND#逻辑与 #OR#逻辑或

逻辑表达式的值只有两种:

真TRUE

假FALSE

逻辑运算符有9个,除了#NOT#是单目运算符之外,其他的都是双目运算符,需要两个运算对象。

逻辑运算符的优先级分为三个级别

优先级运算符高#NOT#中#EQ#、#NE#、#GT#、#LT#、#LE#、#GE#小#AND#、#OR#

关系运算符

lingo中没有严格的>和<关系,lingo将约束表达式中单独出现的<和>分别看做>=和<=。

如果要严格使用>和<运算,比如让A严格小于100,可以把精度编程:A+e<=100,这里的e是根据题目精度要求选择的一个小的正数。

用lingo求线性方程组

举例:

4*x-y+3*z=5;
2*x+y+8*z=18;
5*x-2*y+9*z=7;

运算结果:

  Feasible solution found.
  Infeasibilities:                              0.000000
  Total solver iterations:                             3
  Elapsed runtime seconds:                          0.07

  Model Class:                                        LP

  Total variables:                      3
  Nonlinear variables:                  0
  Integer variables:                    0

  Total constraints:                    3
  Nonlinear constraints:                0

  Total nonzeros:                       9
  Nonlinear nonzeros:                   0



                                                    Variable           Value
                                                           X        2.000000
                                                           Y        6.000000
                                                           Z        1.000000

                                                         Row    Slack or Surplus
                                                           1        0.000000
                                                           2        0.000000
                                                           3        0.000000
用lingo求非线性方程组

举例:

x+3*y^2-2*z=2;
x^2+5*y^2-z^3=3;
x+y^3+z^2=15;

运算结果:

  Feasible solution found.
  Infeasibilities:                             0.4781647E-04
  Extended solver steps:                               5
  Total solver iterations:                            83
  Elapsed runtime seconds:                          0.26

  Model Class:                                       NLP

  Total variables:                      3
  Nonlinear variables:                  3
  Integer variables:                    0

  Total constraints:                    3
  Nonlinear constraints:                3

  Total nonzeros:                       9
  Nonlinear nonzeros:                   6



                                                    Variable           Value
                                                           X        4.999995
                                                           Y        1.000001
                                                           Z        3.000000

                                                         Row    Slack or Surplus
                                                           1      -0.8894671E-06
                                                           2      -0.4781647E-04
                                                           3      -0.3839825E-06
百鸡百钱问题

一个人用100个铜钱买了100只鸡,他说一只公鸡5个铜钱,一只母鸡3个铜钱,三只小鸡1个铜钱,编程求出他买的公鸡、母鸡、小鸡各多少只?

代码实现:

x+y+z=100;
5*x+3*y+z/3=100;
@GIN(x);
@GIN(y);
@GIN(z);

结果:

  Feasible solution found.
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                             2
  Elapsed runtime seconds:                          0.08

  Model Class:                                      PILP

  Total variables:                      3
  Nonlinear variables:                  0
  Integer variables:                    3

  Total constraints:                    2
  Nonlinear constraints:                0

  Total nonzeros:                       6
  Nonlinear nonzeros:                   0



                                                    Variable           Value
                                                           X        12.00000
                                                           Y        4.000000
                                                           Z        84.00000

                                                         Row    Slack or Surplus
                                                           1        0.000000
                                                           2        0.000000
总结
  • 标识符的命名规范

  • 算数运算符

  • 逻辑运算符

  • 关系运算符

  • 用LINGO求解线性方程组

  • 用LINGO求解非线性方程组

  • 用LINGO求解高次方程组