MATLAB基础实验——线性规划

 1. (简答题)某鸡场有1000只鸡,用动物饲料和谷物饲料混合喂养。每天每只鸡平均食混合饲料|0.5 kg,其中动物饲料所占比例不能少于20%。动物饲料每千克0.30元,谷物饲料每千克0.18元,饲料公司每周仅保证供应谷物饲料6000kg,问饲料怎样混合,才能使成本最低?

解析:

Min z =1000*(0.3x1+0.18x2)

S.t.{x1>=0.1

1000*x2<=6000/7

X1+x2=0.5

}

{x1,x2}>=0

改写为

Min z =(300,180)*(x1;x2)

S.t.{(-1,0)<=-0.1

(0,1)<=6/7

(1,1)=0.5

}

{x1,x2}>=0

代码:

f=[300,180];
A=[-1,0;0,1;1,1];
b=[-0.1;6/7;0.5];
Aeq=[1,1];
beq=0.5;
vlb=zeros(2,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果:

>> untitled8

Optimal solution found.


x =

    0.1000
    0.4000


fval =

   102

2.某工厂用A1,A2两台机床加工B1,B2,B3三种不同的零件。

解析: 

设A1加工B1,B2,B3的数量分别为x1,x2,x3;

A2加工B1,B2,B3的数量分别为x4,x5,x6

Min z = 2x1+3x2+5x3+3x4+3x5+6x6

S.t.{x1+x4=70

X2+x5=50

X3+x6=20

X1+2x2+3x3<=80

X4+x5+3x6<=100}

{x1,x2,x3,x4,x5,x6}>=0

改写成

Min z = (2,3,5,3,3,6){x1;x2;x3;x4;x5;x6}

(1,2,3,0,0,0

0,0,0,1,1,3)<=(80;100)

(1,0,0,1,0,0

0,1,0,0,1,0

0,0,1,0,0,1)=(70;50;20)

{x1,x2,x3,x4,x5,x6}>=0

代码:

f=[2,3,5,3,3,6];
A=[1,2,3,0,0,0;0,0,0,1,1,3];
b=[80;100];
Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];
beq=[70;50;20];
vlb=zeros(6,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

运行结果:

>> untitled9

Optimal solution found.


x =

   70.0000
         0
    3.3333
         0
   50.0000
   16.6667


fval =

  406.6667

>> 

3. (简答题)有两个煤场A,B,每月进煤分别不大于60 t,100 t,它们担负供应三个居民区的用煤任务,这三个居民区每月需要用煤分别为45t,75t,40t。A厂离这三个居民区分别为10km,5km,6km,B厂离这三个居民区分别为4km,8km,15km,问这两煤厂如何分配供煤,才能使总运输量最小?

解析: 

设A给1,2,3居民区分别运煤x1,x2,x3

B给1,2,3居民区分别运煤x4,x5,x6

Min z =10x1+5x2+6x3+4x4+8x5+15x6

S.t.{x1+x2+x3<=60

X4+x5+x6<=100

X1+x4=45

X2+x5=75

X3+x6=40}

Xi>=0,i=[1:6]

改写成

Min z =(10,5,6,4,8,15)(x1;x2;x3;x4;x5;x6)

S.t.{

(1,1,1,0,0,0

0,0,0,1,1,1)<=(60;100)

(1,0,0,1,0,0

0,1,0,0,1,0

0,0,1,0,0,1)=(45;75;40)

Xi>=0,i=[1:6]

}

代码

f=[10,5,6,4,8,15];
A=[1,1,1,0,0,0;0,0,0,1,1,1];
b=[60;100];
Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];
beq=[45;75;40];
vlb=zeros(6,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果

Optimal solution found.


x =

     0
    20
    40
    45
    55
     0


fval =

   960

4.已知某工厂计划生产 Ⅰ、Ⅱ、Ⅲ三种产品,各产品需要在A、B、C设备上加工,有关数据如下:

(1)

解析

设A生产I,II,III数量为x1,x2,x3

b生产I,II,III数量为x4,x5,x6

c生产I,II,III数量为x7,x8,x9

Minz=3(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)

St{

8x1+2x2+10x3<=300

10x4+5x5+8x6<=400

2x7+13x8+10x9<=420

}

Xi>0,i=1:9

改写成

-Minz=(-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9)Xi,i=1:9

St{

(8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10)<=(300;400;420)

}

代码

f=[-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9];
A=[8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果

>> untitled9

Optimal solution found.


x =

     0
   150
     0
     0
    80
     0
   210
     0
     0


fval =

       -1090

>> 

(2)

解析

设A生产I,II,III数量为x1,x2,x3

b生产I,II,III数量为x4,x5,x6

c生产I,II,III数量为x7,x8,x9

Minz=3(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)-18

St{

8x1+2x2+10x3<=300

10x4+5x5+8x6<=460

2x7+13x8+10x9<=420

}

Xi>0,i=1:9

改写成

-Minz=(-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9)Xi,i=1:9

St{

(8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10)<=(300;460;420)

}

代码

f=[-3,-2,-2.9,-3,-2,-2.9,-3,-2,-2.9];
A=[8,2,10,0,0,0,0,0,0;0,0,0,10,5,8,0,0,0;0,0,0,0,0,0,2,13,10];
b=[300;460;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果

>> untitled9

Optimal solution found.


x =

     0
   150
     0
     0
    92
     0
   210
     0
     0


fval =

       -1114

>> 

1114-18=1096>1090 合算

(3)

解析 

设A生产I,II,III,IV,V数量为x1,x2,x3,x4,x5

b生产I,II,III,IV,V数量为x6,x7,x8,x9,x10

c生产I,II,III,IV,V数量为x11,x12,x13,x14,x15

Minz=3(x1+x6+x11)+2(x2+x7+x12)+2.9(x3+x8+x13)+2.1(x4+x9+x14)+1.87(x5+x10+x15)

St{

8x1+2x2+10x3+12x4+4x5<=300

10x6+5x7+8x8+5x9+4x10<=400

2x11+13x12+10x13+10x14+12x15<=420

}

Xi>0,i=1:15

改写成

-Minz=(-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87)Xi,i=1:15

St{

(8,2,10,12,4,0,0,0,0,0,0,0,0,0,0;

0,0,0,0,0,10,5,8,5,4,0,0,0,0,0;

0,0,0,0,0,0,0,0,0,0,2,13,10,10,12)<=(300;400;420)

}

代码

f=[-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87,-3,-2,-2.9,-2.1,-1.87];
A=[8,2,10,12,4,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,10,5,8,5,4,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,2,13,10,10,12];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(15,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果

>> untitled9

Optimal solution found.


x =

     0
   150
     0
     0
     0
     0
     0
     0
     0
   100
   210
     0
     0
     0
     0


fval =

       -1117

>> 

1117>1090 合算

(4)

解析 

设A生产I,II,III数量为x1,x2,x3

b生产I,II,III数量为x4,x5,x6

c生产I,II,III数量为x7,x8,x9

Minz=4.5(x1+x4+x7)+2(x2+x5+x8)+2.9(x3+x6+x9)

St{

9x1+2x2+10x3<=300

12x4+5x5+8x6<=400

4x7+13x8+10x9<=420

}

Xi>0,i=1:9

改写成

-Minz=(-4.5,-2,-2.9,-4.5,-2,-2.9,-4.5,-2,-2.9)Xi,i=1:9

St{

(9,2,10,0,0,0,0,0,0;0,0,0,12,5,8,0,0,0;0,0,0,0,0,0,4,13,10)<=(300;400;420)

}

代码

f=[-4.5,-2,-2.9,-4.5,-2,-2.9,-4.5,-2,-2.9];
A=[9,2,10,0,0,0,0,0,0;0,0,0,12,5,8,0,0,0;0,0,0,0,0,0,4,13,10];
b=[300;400;420];
Aeq=[];
beq=[];
vlb=zeros(9,1);
vub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)

结果

>> untitled9

Optimal solution found.


x =

     0
   150
     0
     0
    80
     0
   105
     0
     0


fval =

 -932.5000

>> 

注意:

MATLAB内线性规划函数只能求解函数最小值,如需求解最大值则要将求解函数取负,最终结果为fval的绝对值

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值