MATLAB求解线性规划问题

MATLAB求解线性规划问题


问题

1.(生产问题)某工厂计划生产甲、乙两种产品,主要材料有钢材3500kg,铁材1800kg,专用设备能力2800台时,材料与设备能力的消耗定额及单位产品所获利润如表所示,问如何安排生产,才能使该厂所获利润最大?

问题分析

x1甲种产品的件数,x2乙种产品的件数

max y=80x1+125x2 (该厂所获得的的利润)

8x1+5x2<=3500 (所耗费的钢材不超过3500kg)

6x1+4x2<=1800 (所耗费的铁材不超过1800kg)

4x1+5x2<=2800 (所耗费的设备能力不超过2800台)

-x1<=0 (生产甲的件数为自然数)

-x2<=0 (生产乙的件数为自然数)

MATLAB代码如下
>> intcon=[1 2]

intcon =

     1     2

>> a=[8 5;6 4;4 5;-1 0;0 -1]

a =

     8     5
     6     4
     4     5
    -1     0
     0    -1

>> b=[3500;1800;2800;0;0]

b =

        3500
        1800
        2800
           0
           0

>> f=-[80 125]

f =

   -80  -125
>> [x fval exitflag]=intlinprog(f,intcon,a,b)

x =

         0
  450.0000(生产甲0件,乙450件)


fval =

      -56250
      %(最大利润为56250元)


exitflag =

     1

当生产甲0件,乙450件时,该厂利润最大,为56250元

2.(运输问题)设两个建材厂C1和C2,每年沙石的产量分别为35万吨和55万吨,这些沙石需要供应到W1、W2和W3三个建筑工地,每年建筑工地对沙石的需求量分别为26万吨、35万吨和26万吨,各建材厂到建筑工地之间的运费(万元/万吨)如表所示,问应当如何调运才能使得总运费最小。

问题分析

c1x1,c1x2,c1x3,分别为c1建材厂调到w1,w2,w3三个建筑工地的砂石量(万吨)

c2x1,c2x2,c2x3, 分别为c2建材厂调到w1,w2,w3三个建筑工地的砂石量(万吨)

min y=10c1x1+12c1x2+9c1x3+8c2x1+11c2x2+13c2x3(总运费最小)

c1x1+c1x2+c1x3<=35(c1建材厂产量为35万吨)

c2x1+c2x2+c2x3<=55(c2建材厂产量为55万吨)

c1x1+c2x1>=26(w1建筑工地对沙石的需求量为26万吨)

c1x2+c2x2>=35(w2建筑工地对沙石的需求量为35万吨)

c1x3+c2x3>=26(w3建筑工地对沙石的需求量为26万吨)

cixj>=0(i=1,2 j=1,2,3)(运送量大于等于0万吨)

MATLAB代码如下
f=[10 12 9 8 11 13];
b=-[1 0 0 0 0 0;0 1 0 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0;0 0 0 0 1 0;0 0 0 0 0 1];
a=[1 1 1 0 0 0;0 0 0 1 1 1;-1 0 0 -1 0 0;0 -1 0 0 -1 0;0 0 -1 0 0 -1;b];
c=[35;55;-26;-35;-26;0;0;0;0;0;0];
[cx fmin]=linprog(f,a,c);
cx=
0(c1x1,c1->w1)
6(c1x2,c1->w2)
26(c1x3,c1->w3)
26(c2x1,c2->w1)
29(c2x2,c2->w2)
0(c2x3,c2->w3)
fmin=
833
%(总运费最小为833万元)

当c1向w1,w2,w3分别运送0,6,26万吨,c2向w1,w2,w3分别运送26,29,0万吨时,总运费最小,为833万元。

3.(资金分配问题)某企业在今后三年有5项工程考虑施工,每项工程的期望收入和年度费用如表所示。假定每一项已经批准的工程要在整个三年内完成。问企业应怎样选择工程,使企业总收入最大。

问题分析

x1,x2,x3,x4,x5分别表示工程1,2,3,4,5

max y=20x1+40x2+20x3+15x4+30*x5 (企业总收入最大)

5x1+4x2+3x3+7x4+8*x5<=25(第1年最大可用基金数为25千元)

1x1+7x2+9x3+4x4+6*x5<=25(第2年最大可用基金数为25千元)

8x1+10x2+2x3+1x4+10*x5<=25(第3年最大可用基金数为25千元)

xi=[0 1];(i=1,2 ,3,4,5)

MATLAB代码如下
f=-[20 40 20 15 30];
a=[5 4 3 7 8;1 7 9 4 6;8 10 2 1 10];
b=[25;25;25];
intcon=[1 2 3 4 5];
lb=zeros(5,1);
ub=ones(5,1);
[x ,fm ,exitflag]=intlinprog(f,intcon,a,b,[],[],lb,ub);
x=
1
1
1
1
0
%(实施1,2,3,4号项目)
fm=
	-95
	%(企业总收入最大为95千元)
exitflag=
   1

当企业选择1,2,3,4工程时,企业利润最大,为95千元。

发布了8 篇原创文章 · 获赞 3 · 访问量 759

猜你喜欢

转载自blog.csdn.net/weixin_44984664/article/details/104560710