数建--LINGO软件介绍
作者:互联网
LINGO软件介绍
一、LINGO 基本操作
-
LINGO初印象
-
LINGO 窗口
-
LINGO 工具栏
-
LINGO模型文件
-
-
LINGO的运算符
- 算术运算符: 用于数与数之间的数学运算 (前三个无前面的/)
- /+
- /-
- /*
- /
- ^ (求幂)
- 关系运算符: 表示 “ 数与数之间” 的大小关系。
- < (<=)
- =
- 大于 (>=)
- 算术运算符: 用于数与数之间的数学运算 (前三个无前面的/)
-
简单程序编写
-
-
程序
model : title 求解线性规划 max = 2 * x1 + 3 * x2; 2*x1 + x2 < 8; 4 * x1 + 3 * x2 < 15; end
-
-
例题:
- 程序
Model: Title:求解二次规划 !小程序可用,大程序不提倡 [opt] max = 98 * x1 + 277 * x2 - x1 ^ 2 - 0.3*x1*x2 - 2 * x2 ^ 2; [st1] x1 + x2 < 100; [st2] x1 < 2 * x2; @gin(x1);@gin(x2); end
二、一维数组型变量
-
段的概述: LINGO中建立的优化模型可以由六个部分组成,或称六“段”。
- 集合段: 用于定义数组型性变量 SETS : …… ENDSETS
- 数据段: 用于变量赋值与数据传递 DATA :…… ENDDATA
- 目标与约束段: 用于列出目标与约束 (唯一一个没有段的开始和结束标记)
- 计算段: 用于数据初始整理计算 CALC:…… ENDCALC
- 初始段: 用于变量赋初值迭代寻优 INT:…… ENDINT
- 自模型段: 用于表达子模型进行调用 @SUBMODEL mymodel 可执行语句(约束+目标) ENDSUBMODEL
-
基本集合 与 属性变量
-
sets: ! 集合段 s/1..100/:x; !基本集合,集合名与属性变量 endsets !目标与约束段; @sum(s(i) : x(i)) < 90; !循坏求和函数
-
sets: ! 集合段 ss/1..10/:b; !基本集合,集合名与属性变量 endsets data: !数据段; b = 1 0 1 2 3 5 2 6 1 2; enddata
-
sets: ! 集合段 a/1..100/:x; !基本集合,集合名与属性变量 b/1..200/:y; !基本集合,集合名与属性变量 endsets !目标与约束段 @ for(b(j):@gin(y(j))); @ for(a(i):@bin(x(i)));
-
-
实例:
-
题目
-
建立模型
-
程序
model: TITLE 超市大赢家 SETS: S/1..50/:W,V,X; ENDSETS DATA: V = 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130,125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88,82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15,10, 8, 5, 3, 1 w = 80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1 ENDDATA MAX = @SUM(S(I) : V(I) * X(I)); @SUM(S((I) : W(I)*X(I))) < 1000; @FOR(S(I):@BIN(X(I))); END
-
三、多维数组型变量
-
派生集合与多维数字型变量
-
sets: a/1..10/ : ; b/1..200/: ; C(a,b) : x; ! 派生集合; endsets ! 目标与约束段; @ sum(c(i,j):x(i,j)) = 280;
sets: a/1..100/:; b/1..200/:; C(a,b):x; Endsets ! 目标与约束段 @for(b(j):@sum(a(i):x(i,j)) > 150.001); !集合 元素循坏函数
-
sets; a/1..100/:; b/1..200/:y; C(a,b):x; Endsets !目标与约束段; @for(b(j):@gin(y(j))); @for(c(i,j):@bin(x(i,j)));
-
-
逻辑运算符与过滤条件(无前面的/)
- / # AND # (与)
- / # OR # (或)
- / # NOT # (非)
- / # EQ # (等于)
- / # NE # (不等于)
- / # GT # (大于)
- / # GE # (大于等于)
- / # LT # (小于)
- / # LE # (小于等于)
- @IF(logical_condition, true_result, false_result) 当逻辑表达式logical_condition的结果为真时,返回true_result, 否则返回false_result。
-
案例:
-
sets: a/1..20/:; b/1..30/:; C/1..40/:; d(a,b,c):x; endsets ! 目标与约束段; @ for(a(i) : @for(b(j):@sum(c(i,j,k) | k#gt#1#and#k#ne#10:x(i,j,k)) = 100 )); !过滤条件
-
四、线性规划模型的LINGO求解
-
sets:
HANG/1..3/:B;
LIE/1..4/:x;
XISHU(HANG,LIE):A;
endsets
DATA:
A = 1 2 3 1
2 5 1 2
3 1 6 -2;
B = 4 5 7;
enddata
@ for(HANG(I) :
@sum(LIE(J) : A(I,J) * X(J)) > B(I));
- 例二
标签:..,数建,--,x2,100,x1,集合,LINGO 来源: https://blog.csdn.net/qq_54145399/article/details/122662137