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

```济南大学硕究生课程

 LINGO
 LINDO
 SCILAB
 MATLAB

LINDO和LINGO是美国LINDO系统公司开发的一套专门用

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

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

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)的

25
3 Scilab

Scilab

[,imp])

26
3 Scilab

[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

[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

[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

[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

34
3 Scilab

[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

5中不可省略

37
Mablat

MATLAB 是美国MathWorks公司出品的商业数学软件，用于算法开发、数

MATLAB是矩阵实验室（Matrix Laboratory）的简称，和
Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中

MATLAB的基本数据单位是矩阵，它的指令表达式与数学、工程中常

MATLAB成为一个强大的数学软件。在新的版本中也加入了对C，FORTRAN，
C++ ，JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序

38
Mablat

x = linprog(f,A,b,Aeq,beq)

x = linprog(f,A,b,Aeq,beq,lb,ub)

[x,fval]= linprog(f,A,b,Aeq,beq,lb,ub,x0)

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
```