2线性规划软件应用--运筹学II--研究生课程-

Download Report

Transcript 2线性规划软件应用--运筹学II--研究生课程-

济南大学硕究生课程
运 筹 学 II
第一章 线性规划 之计算软件
 LINGO
 LINDO
 SCILAB
 MATLAB
常相全
第一章 线性规划
计算软件
简
介
LINDO和LINGO是美国LINDO系统公司开发的一套专门用
于求解最优化问题的软件包。LINDO和LINGO软件的最大特
色在于可以允许优化模型中的决策变量是整数(即整数规
划),而且执行速度很快。LINGO实际上还是最优化问题的
一种建模语言,包括许多常用的函数可供使用者建立优化
模型时调用,并提供与其他数据文件(如文本文件、Excel
电子表格文件、数据库文件等)的接口,易于方便地输入、
求解和分析大规模最优化问题。
济南大学管理学院
2
第一章 线性规划
计算软件
Lingo
和
lindo
能求
解的
优化
模型
济南大学管理学院
3
1 LinDo
第一章 线性规划
计算软件
计
算
软
件
1 输入模型
2 求解
3
点击求解按钮
即可
4 结果
济南大学管理学院
4
1
LinDo
第一章 线性规划
计算软件
!注释内容,可用中文
输
入
模
型
!目标函数:最大-max,最小-min,大小写不分
max 3 x1+5 x2+4 x3
!约束,以subject to开始
subject to
2 x1+3 x2<=1500
2 x2+4 x3<=800
3 x1+2 x2 +5 x3<=2000
end
济南大学管理学院
5
1
LinDo
第一章 线性规划
计算软件
注
意
事
项
变量以字母开头,下标写在后面,系数与变量
之间加空格
不等号为:<= ( <),>=( >) , =, <=与 <等同
变量非负约束可省略
结束时以end标示
济南大学管理学院
6
1
LinDo
第一章 线性规划
计算软件
例
题
济南大学管理学院
7
1
LinDo
第一章 线性规划
计算软件
例
题
济南大学管理学院
8
1
LinDo
第一章 线性规划
计算软件
max 72 x1+64 x2
例
题
subject to
x1+x2<=50
12 x1+8 x2<=480
3 x1<=100
end
济南大学管理学院
9
1
LinDo
第一章 线性规划
计算软件
例
题
济南大学管理学院
10
1
LinDo
第一章 线性规划
计算软件
例
题
济南大学管理学院
11
1
LinDo
第一章 线性规划
计算软件
例
题
济南大学管理学院
12
1
LinDo
第一章 线性规划
计算软件
!注释内容,可用中文
!目标函数:最大-max,最小-min,大小写不分
max 3 x1+5 x2+4 x3
例
题
!约束,以subject to开始
subject to
2 x1+3 x2<=1500
2 x2+4 x3<=800
3 x1+2 x2 +5 x3<=2000
end
济南大学管理学院
13
1
LinDo
第一章 线性规划
计算软件
LP OPTIMUM FOUND AT STEP
3
OBJECTIVE FUNCTION VALUE
1)
VARIABLE
结
果
2675.000
VALUE
REDUCED COST
X1
375.000000
0.000000
X2
250.000000
0.000000
X3
75.000000
0.000000
ROW SLACK OR SURPLUS
DUAL PRICES
2)
0.000000
1.050000
3)
0.000000
0.625000
4)
0.000000
0.300000
济南大学管理学院
14
2
LinGo
第一章 线性规划
计算软件
输入模型
计
算
软
件
LinDo模式
LinGo模式
求解
点击求解按钮
即可
结果
济南大学管理学院
15
2
LinGo
第一章 线性规划
计算软件
注意与LinDo的区别
目标函数中加等号
LinGo
变量与系数之间用“*”
输
入
模
式
条件后加“ ; ”
Model:-end可省略
济南大学管理学院
♂返回
16
2
LinGo
第一章 线性规划
计算软件
LinGo
输
入
模
式
max 3 x1+5 x2+4 x3
subject to
2 x1+3 x2<=1500
2 x2+4 x3<=800
3 x1+2 x2 +5 x3<=2000
end
model:
MAX=3*x1+5*x2+4*x3;
2*x1+3*x2<=1500;
2*x2+4*x3<=800;
3*x1+2*x2+5*x3<=2000;
end
济南大学管理学院
17
2
LinGo
第一章 线性规划
计算软件
Model:
LinGo
Sets:
!定义集合
Endsets
模
式
Data:
!定义数据
Enddata
调用函数与计算
end
济南大学管理学院
18
2
LinGo
第一章 线性规划
计算软件
model: !开始
集
合
部
分
sets: !定义集合
ve/1..3/:c,x;
co/1..3/:b;
ma(co,ve):a;
endsets
!注:集表达式:名称/成员/:属性
名称(初始集):属性
济南大学管理学院
19
2
LinGo
第一章 线性规划
计算软件
data:!定义数据
定
义
数
据
c=3 5 4;
b=1500 800 2000;
a=2 3 0
0 2 4
3 2 5;
Enddata
!注:数据的大小与集合定义中一致,分量中间用空
格或逗号分开,数据结束后用分号;
济南大学管理学院
20
2
LinGo
第一章 线性规划
计算软件
max=@sum(ve(j):c(j)*x(j));
调
用
函
数
@for(co(i):@sum(ve(j):a(i,j)*x(j))<
=b(i));
主要函数:
@for(set(set_index_list)|condition:expression)
@sum(set(set_index_list)|condition:expression)
@min(max)(set(set_index_list)|condition:expre
ssion)
济南大学管理学院
21
2
LinGo
第一章 线性规划
计算软件
结
果
Global optimal solution found at iteration:
3
Objective value:
2675.000
Variable Value
Reduced Cost
C( 1)
3.000000
0.000000
C( 2)
5.000000
0.000000
C( 3)
4.000000
0.000000
X( 1)
375.0000
0.000000
X( 2)
250.0000
0.000000
X( 3)
75.00000
0.000000
济南大学管理学院
22
2
LinGo
第一章 线性规划
计算软件
结
果
B(
B(
B(
A(
A(
A(
A(
A(
A(
A(
A(
A(
1)
2)
3)
1,
1,
1,
2,
2,
2,
3,
3,
3,
1)
2)
3)
1)
2)
3)
1)
2)
3)
1500.000
800.0000
2000.000
2.000000
3.000000
0.000000
0.000000
2.000000
4.000000
3.000000
2.000000
5.000000
济南大学管理学院
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
23
2
LinGo
第一章 线性规划
计算软件
Row Slack or Surplus Dual Price
1
结
果
2675.000
1.000000
2
0.000000
1.050000
3
0.000000
0.6250000
4
0.000000
0.3000000
济南大学管理学院
24
3 Scilab
第一章 线性规划
计算软件
简
介
SCILAB 是由法国国家信息、自动化研究院(INRIA)的
科学家们开发的“开放源码”软件。SCILAB 一词来源
于英文 “Scientific Laboratory"(科学实验室)词
头的合并。与MATLAB类似,SCILAB也是一种科学工程
计算软件,其数据类型丰富,可以很方便地实现各种
矩阵运算与图形显示,能应用于科学计算、数学建模、
信号处理、决策优化、线性/非线性控制等各个方面。
它还提供可以满足不同工程与科学需要的工具箱,例
如SCICOS,信号处理工具箱,图与网络工具箱等。可
以说,就基本的功能如科学计算、矩阵处理及图形显
示而言,MATLAB能完成的工作SCILAB都可以实现。
济南大学管理学院
25
3 Scilab
第一章 线性规划
计算软件
命令1:[x,lagr,f]=linpro(p,C,b [,x0])
命令2:[x,lagr,f]=linpro(p,C,b,ci,cs [,x0])
Scilab
函
数
命令3:[x,lagr,f]=linpro(p,C,b,ci,cs,me [,x0])
命令4:[x,lagr,f]=linpro(p,C,b,ci,cs,me,x0
[,imp])
命令5: [x1,crit]=karmarkar(a,b,c,x0)
注意事项
济南大学管理学院
26
3 Scilab
第一章 线性规划
计算软件
命令1
[x,lagr,f]=linpro(p,C,b [,x0])
问题形式
min p'*x
s.t. C*x <= b
实例
济南大学管理学院
27
3 Scilab
第一章 线性规划
计算软件
-->c=[3,5,4]’;
-->b=[1500,800,2000]’;
实
例
-->a=[2,3,0;0,2,4;3,2,5] ;
-->c=-c;
-->[x,lagr,f]=linpro(c,a,b)
f = - 2675.
lagr =
x =
! 1.05 !
! 375. !
!
.625 !
! 250. !
!
.3 !
! 75. !
济南大学管理学院
28
3 Scilab
第一章 线性规划
计算软件
命令2
[x,lagr,f]=linpro(p,C,b,ci,cs [,x0])
问题形式
min p'*x
s.t. C*x <= b
ci <= x <= cs
实例
济南大学管理学院
29
3 Scilab
第一章 线性规划
计算软件
-->c=-[3,5,4]‘;
-->b=[1500,800,2000]‘;
实
例
-->a=[2,3,0;0,2,4;3,2,5] ;
-->ci=zeros(c);
-->cs=300*ones(c);
-->[x,lagr,f]=linpro(c,a,b,ci,cs)
济南大学管理学院
30
3 Scilab
第一章 线性规划
计算软件
f = - 2600.
lagr =
x=
! 1. !
! 300. !
! 0. !
! 300. !
! 0. !
! 50. !
! 1. !
! 1. !
! 0. !
济南大学管理学院
31
3 Scilab
第一章 线性规划
计算软件
命令3
[x,lagr,f]=linpro(p,C,b,ci,cs,me [,x0])
问题
min p'*x
s.t. C(j,:) x = b(j), j=1,...,me
C(j,:) x <= b(j), j=me+1,...,me+md
ci <= x <= cs
实例
济南大学管理学院
32
3 Scilab
第一章 线性规划
计算软件
-->c=-[3,5,4]‘;
-->b=[1500,800,2000]‘;
实
例
-->a=[2,3,0;0,2,4;3,2,5] ;
-->ci=zeros(c);
-->cs=[];
-->me=1;
-->[x,lagr,f]=linpro(c,a,b,ci,cs,me)
济南大学管理学院
33
3 Scilab
第一章 线性规划
计算软件
命令4:
[x,lagr,f]=linpro(p,C,b,ci,cs,me,x0 [,imp])
问题形式
min p'*x
s.t. C(j,:) x = b(j), j=1,...,me
C(j,:) x <= b(j), j=me+1,...,me+md
ci <= x <= cs
指定初始可行解x0
济南大学管理学院
34
3 Scilab
第一章 线性规划
计算软件
命令5
[x1,crit]=karmarkar(a,b,c,x0)
问题形式
min c'*x
s.t. a*x = b
x>=0
实例
济南大学管理学院
35
3 Scilab
第一章 线性规划
计算软件
-->c=-[3,5,4,0,0,0]‘;
-->b=[1500,800,2000]‘;
实
例
-->a=[2,3,0,1,0,0;0,2,4,0,1,0;3,2,5,0,0,1] ;
-->x0=[0,0,0,1500,800,2000]' ;
-->[x1,crit]=karmarkar(a,b,c,x0)
济南大学管理学院
36
3 Scilab
第一章 线性规划
计算软件
命令2和3中x0可省略,但命令4和
注
意
事
项
5中不可省略
向量都是列向量,参数的顺序不
可换
命令3中等式约束必须在前面
济南大学管理学院
37
Mablat
第一章 线性规划
计算软件
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数
据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,
主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和
Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中
在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、
实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工
程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模
设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常
用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完
相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使
MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,
C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序
导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都
编写了一些经典的程序,用户可以直接进行下载就可以用。
济南大学管理学院
38
Mablat
第一章 线性规划
计算软件
函数 linprog
格式 x = linprog(f,A,b)
求min f *x sub.to Ax<=b 线性规划的最优解。
线
性
规
划
函
数
x = linprog(f,A,b,Aeq,beq)
等式约束 ,若没有不等式约束 ,则A=[ ],b=[ ]。
x = linprog(f,A,b,Aeq,beq,lb,ub)
指定x的范围,若没有等式约束,则Aeq=[ ],beq=[ ]。
[x,fval]= linprog(f,A,b,Aeq,beq,lb,ub,x0)
设置初值x0
注意 目标值为最大值时应乘以-1化为求最小值; 不等约
束为>=时应乘以-1化为<=;
济南大学管理学院
39
Mablat
第一章 线性规划
计算软件
c=[-3;-5;-4];
b=[1500;800;2000];
a=[2 3 0;
0 2 4;
线
性
规
划
函
数
3 2 5];
[x,fval] = linprog(c,a,b)
>> [x,fval] = linprog(c,a,b)
Optimization terminated successfully.
x=
375.0000
250.0000
75.0000
fval =
-2.6750e+003
济南大学管理学院
40
第一章 线性规划
计算软件
济南大学管理学院
41
第一章 线性规划
计算软件
济南大学管理学院
42