lingo怎么运行

lingo怎么运行,第1张

运行用法如下:

1、根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型。

2、根据优化模型,利用LINGO 来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。

在利用LINGO 求解线性规划时,如自变量都为非负的话,在LINGO 中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数 @free来把系统默认的非负变量定义自由变量,如实例一中的 x3。

Lingo的特点:

Lingo中变量不区分大小写,以字母开头不超过32个字符;算术运算符是针对数值进行 *** 作的;LINGO提供了5种二元运算符:^乘方 ﹡乘 /除 ﹢加 ﹣减;LINGO唯一的一元算术运算符是取反函数“﹣”。

LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的(球面&;非球面的),二次的,二次约束的,和整数优化问题。甚至不需要指定或启动特定的求解器,因为LINGO会读取您的方程式并自动选择合适的求解器。

这个在LINGO中应该不难。我们随便找一个33的矩阵测试一下,很自然地可以推广到1317

MODEL:

SETS:

ROW/13/;

COL/13/;

MATRIX(ROW,COL):X,CH;

ENDSETS

!随便找一个33的矩阵;

DATA:

X=

1,20,355

478,5,60

456,8,91;

ENDDATA

!定义目标函数;

MIN=@SUM(MATRIX(I,J):CH(I,J)X(I,J));

!定义约束条件;

!每行只选一个元素;

@FOR(ROW(I):@SUM(MATRIX(I,J):CH(I,J))=1);

!每列不重复,即每列只选1个元素(不知道对不对,你再推敲一下);

@FOR(COL(J):@SUM(MATRIX(I,J):CH(I,J))=1);

!CH是一个0-1变量;

@FOR(MATRIX(I,J):@BIN(CH(I,J)));

END

运行结果为:

Global optimal solution found

Objective value: 6900000

Objective bound: 6900000

Infeasibilities: 0000000

Extended solver steps: 0

Total solver iterations: 0

Model Class: PILP

Total variables: 9

Nonlinear variables: 0

Integer variables: 9

Total constraints: 7

Nonlinear constraints: 0

Total nonzeros: 27

Nonlinear nonzeros: 0

Variable Value Reduced Cost

X( 1, 1) 1000000 0000000

X( 1, 2) 2000000 0000000

X( 1, 3) 3550000 0000000

X( 2, 1) 4780000 0000000

X( 2, 2) 5000000 0000000

X( 2, 3) 6000000 0000000

X( 3, 1) 4560000 0000000

X( 3, 2) 8000000 0000000

X( 3, 3) 9100000 0000000

CH( 1, 1) 1000000 1000000

CH( 1, 2) 0000000 2000000

CH( 1, 3) 0000000 3550000

CH( 2, 1) 0000000 4780000

CH( 2, 2) 0000000 5000000

CH( 2, 3) 1000000 6000000

CH( 3, 1) 0000000 4560000

CH( 3, 2) 1000000 8000000

CH( 3, 3) 0000000 9100000

Row Slack or Surplus Dual Price

1 6900000 -1000000

2 0000000 0000000

3 0000000 0000000

4 0000000 0000000

5 0000000 0000000

6 0000000 0000000

7 0000000 0000000

即第一行选择1,第二行选择60,第三行选择8;

你看是不是你要的结果。

总体上讲,在矩阵代数的框架下,这种选择其实就是一种线性变换。需要求解的就是满足某种约束条件下的最优线性变换算子。

如果要在程序中使用数组,就必须在该部分进行定义,否则可不需要该部分。(2)目标与约束:这部分定义了目标函数、约束条件等。一般要用到LINGO的内部函数,可在后面的具体应用中体会其功能与用法。求解优化问题时,该部分是必须的。(3)数据部分(DATA):这部分以“DATA:”开始,以“END DA TA”结束。其作用在于对集合的属性(数组)输入必要的数值。格式为:attribut=value_list。该部分主要是方便数据的输入。

(4)初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结束。作用在于对集合的属性(数组)定义初值。格式为:attribute=value_list。由于非线性规划求解时,通常得到的是局部最优解,而局部最优解受输入的初值影响。通常可改变初值来得到不同的解,从而发现更好的解。

编写LINGO程序要注意的几点:

1所有的语句除SETS、ENDSETS、DA TA、ENDDATA、INIT、ENDINIT和MODEL,END 之外必须以一个分号“;”结尾。

2L INGO求解非线性规划时已约定各变量非负。

LINGO内部函数使用详解。

LINGO建立优化模型时可以引用大量的内部函数,这些函数以“@”符号打头。

(1)常用数学函数

@ABS(X) 返回变量X的绝对数值。

@COS( X)

返回X的余弦值,X的单位为弧度

@EXP( X)

不得用于商业用途

返回x e 的值,其中e 为自然对数的底,即 718282

@FLOOR( X)

向0靠近返回X 的整数部分。如@FLOOR(37),则返回3;@FLOOR(-37),则返回-3。 @LGM( X)

返回Γ函数的自然对数值。

@LOG( X)

返回变量X 的自然对数值。

@SIGN( X)

返回变量X 的符号值,当X<0时为-1;当X>0时为1。

@SIN( X)

返回X 的正弦值,X 的单位为弧度

@SMAX( X1, X2,, XN)

返回一列值X1, X2,, XN 的最大值。

@SMIN( X1, X2,, XN)

返回一列值X1, X2,, XN 的最小值。

@TAN( X)

返回X 的正切值,X 的单位为弧度

以上就是关于lingo怎么运行全部的内容,包括:lingo怎么运行、求lingo程序一个13*17矩阵 每行选取一个数 每列不重复 使这13个数和最小、你好,有个关于用lingo软件做选课的优化问题想问您等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9504137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存