MATLAB定量决策五大类问题
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 MATLAB求解

2.4.1 案例3的求解

根据所建立的数学模型,调用求解纯整数线性规划的自编MATLAB函数程序Ch1 FZDJ求解。编写脚本文件程序(命名:Case2 1),源码的具体内容如下。

      clc,clear% 清除命令窗口,清除工作空间
      % 设定原始数据
      F = [27 41 24 28 40 29 0 23 30 37 21 27];
      Aeq =[1 zeros(1,3)1 zeros(1,3)1 zeros(1,3);zeros(1,1)1 zeros(1,3)1 zeros(1,3)1
          zeros(1,2);...
          zeros(1,2)1 zeros(1,3)1 zeros(1,3)1 zeros(1,1);zeros(1,3)1 zeros(1,3)1
      zeros(1,3)1];
      Beq = [20 30 30 40];
      A = [ones(1,4)zeros(1,8);zeros(1,4)ones(1,4)zeros(1,4);zeros(1,8)ones(1,4)];
      B =[75 75 45];
      LB = zeros(1,12)';UB =[inf* ones(1,6)0 inf* ones(1,5)]';
      % 求解
      [x,min_fval] = Ch1_FZDJ(F,A,B,Aeq,Beq,LB,UB);
      % 输出结果
      fprintf('1.各厂家向各客户的配送量为: \n')
      disp('    F1-C1    F1-C2    F1-C3    F1-C4'),disp(x(1:4)')
      disp('    F2-C1    F2-C2    F2-C3    F2-C4'),disp(x(5:8)')
      disp('    F3-C1    F3-C2    F3-C3    F3-C4'),disp(x(9:12)')
      fprintf('2.最小成本为(元): '),disp(min_fval)

在MATLAB命令窗口中执行Case2 1,所得结果如图2-1所示。

图2-1 案例3的求解结果

由图2-1所示的求解结果可知,当厂家1向客户1配送20件,厂家2分别向客户2和客户4配送30件与40件,厂家3向客户3配送30件时,可使得运输成本最小。在该配送方案下,最小成本为2960元。

2.4.2 案例4的求解

根据所建立的数学模型,调用求解纯整数线性规划的自编MATLAB函数程序Ch1 FZDJ求解。编写脚本文件程序(命名:Case2 2),源码的具体内容如下。

          clc,clear% 清除命令窗口,清除工作空间
          % 设定原始数据
          F = -[46 53 55 42 32 48 37 18 51 35 29 59];
          Aeq =[ones(1,4)zeros(1,8);zeros(1,4)ones(1,4)zeros(1,4);...
              zeros(1,8)ones(1,4);1 zeros(1,3)1 zeros(1,3)1 zeros(1,3)];
          Beq =[8000500070007000];
          A =[zeros(1,1)1 zeros(1,3)1 zeros(1,3)1 zeros(1,2);zeros(1,1) -1 zeros(1,3) -1
              zeros(1,3) -1 zeros(1,2);...
              zeros(1,2)1 zeros(1,3)1 zeros(1,3)1 zeros(1,1);zeros(1,2) -1 zeros(1,3) -1
              zeros(1,3) -1
              zeros(1,1);...
              zeros(1,3)1 zeros(1,3)1 zeros(1,3)1];B =[9000-30006000-20008000];
          LB = zeros(1,12)';UB = inf* ones(1,12)';
          % 求解
          [x,min_fval] = Ch1_FZDJ(F,A,B,Aeq,Beq,LB,UB);
          % 输出结果
          fprintf('1.各厂家向各客户的配送量为: \n')
          disp('    F1-C1    F1-C2    F1-C3    F1-C4'),disp(x(1:4)')
          disp('    F2-C1    F2-C2    F2-C3    F2-C4'),disp(x(5:8)')
          disp('    F3-C1    F3-C2    F3-C3    F3-C4'),disp(x(9:12)')
          fprintf('2.最大利润为: '),disp(-min_fval)

在MATLAB命令窗口中执行Case2 2,所得结果如图2-2所示。

图2-2 案例4的求解结果

由图2-2所示的求解结果可知,当分厂1分别向客户1和客户3配送2000件和6000件,分厂2向客户2配送5000件,分厂3分别向客户1和客户4配送5000件和2000件时,可获得最大利润1035000元。