1 / 26
文档名称:

实验二利用Lingo求解整数规划及非线性规划问题 ppt课件.ppt

格式:ppt   大小:449KB   页数:26页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二利用Lingo求解整数规划及非线性规划问题 ppt课件.ppt

上传人:龙的传人 2022/2/9 文件大小:449 KB

下载得到文件列表

实验二利用Lingo求解整数规划及非线性规划问题 ppt课件.ppt

相关文档

文档介绍

文档介绍:实验目的:
1、掌握线性整数规划模型在lingo中的求解,并能达到灵活运用。
2、学会用Lingo对非线性规划问题进行求解。
实验二
利用Lingo求解整数规划及非线性规划问题
变量定界函数:
***@bin(x): 限制 x /1..5/: jobt;
link(ren,job): time;
endsets
ren
job
time
注: 若没有指明元素列表, LINGO将用父集合元素的所有组合作为衍生集合的元素.
(A,1), (A,2),(A,3),(A,4)(A,5)
(B,1), (B,2),(B,3),(B,4)(B,5)
(C,1), (C,2),(C,3),(C,4)(C,5)
(D,1), (D,2),(D,3),(D,4)(D,5)
(5) Lingo 内部的数学函数及其返回值
***@abs(x): 返回x的绝对值
***@sin(x): 返回x的正弦值
***@cos(x): 返回x的余弦值
***@tan(x): 返回x的正切值
***@log(x): 返回x的自然对数值
***@exp(x): 返回ex的值
***@sqr(x): 返回x的平方值. 该函数可以用表达式x^2代替
***@sqrt(x): 返回x的正的平方根. 可以用表达式x^(1/2)代替
三、Lingo 循环编程举例
例5
现有五名工人甲, 乙, 丙, 丁, 戊, 完成五项工作A, B, C, D, E, 所需时间列表如下
工作
时间(小时)
工人
A
B
C
D
E

1

2

4

2
1
3






1
3


2


4

1

2
2
3
(2) 求每份工作最短的用时.
(1) 求每个人的最短工作时间;
问题:
三、Lingo 循环编程举例
例5
sets:
ren/A,B,C,D,E/:rent;
job/1..5/:jobt;
link(ren,job):time;
endsets
data:
time=1,,2,,4
2,1,3,,
,,,1,3
,2,,,4
1,,2,2,3;
enddata
S=***@sum(link(i,j):time(i,j));
***@for(ren(i):rent=***@min(job(j):time(i,j)));
***@for(job(j):jobt=***@min(ren(i):time(i,j)));
!定义集合;
!数据赋值;
!所有工作时间求和;
!求每个人的最短工作时间;
!求每份工作最短的用时;
三、Lingo 循环编程举例
例5
用Lingo循环编程语句求解线性规划模型
三、Lingo 循环编程举例
sets:
bliang/1,2/:x,a;
yshu/1,2,3/:b;
xshu(yshu,bliang):c;
endsets
data:
a=72,64;
b=50,480,100;
c=1,1
12,8
3,0;
enddata
max=***@sum(bliang(i):a(i)*x(i));
***@for(yshu(j):***@sum(bliang(i):x(i)*c(j,i))<=b(j));
!定义集合;
!数据赋值;
!目标函数;
!约束条件;
例5
用Lingo循环编程语句求解线性规划模型
例6、指派问题
公司在各地有4项业务,选定了4位业务员去处理。由于业务能力、经验和其它情况不同,4业务员去处理4项业务的费用(单位:元)各不相同,见下表:
应当怎样分派任务,才能使总的费用最小?
业务
1
2
3
4
1
1100
800
1000
700
2
600
500
300
800
3
400
800
1000
900
4
1100
1000
500
700
业务员
这是一个最优指派问题。引入如下变量:
设矩阵a(4,4)为指派矩阵,其中a(i,j)为第i个业务员做第j项业
务的业务费。则可以建立如下模型:
MODEL:
SETS:
person/A,B,C,D/;
task/1..4/;
assign(person,task):a,x;
ENDSETS
DATA:
a=1100,800,1000,700,
600,500,300,800,
400,800,1000,900,
1100,1000,500,700;
EN