Assignment of Production Batches to Machines

Contents

Problem description

Having determined a set of ten batches to be produced in the next period, a production manager is looking for the best assignment of these batches to the different machines in his workshop. The five available machines in the workshop may each process any of these batches, but since they are all models from different years of manufacture the speed with which they process the batches changes from one machine to another. Furthermore, due to maintenance periods and readjustments, every machine may only work a certain number of hours in the planning period. The table below lists the processing times of the production batches on all machines and the capacities of the machines.

Processing durations and capacities (in hours)

+-------+-----------------------------+--------+
|       |    Production batches       |        |
|       +--+--+--+--+--+--+--+--+--+--+--------+
|Machine| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|Capacity|
+-------+--+--+--+--+--+--+--+--+--+--+--------+
|   1   | 8|15|14|23| 8|16| 8|25| 9|17|   18   |
|   2   |15| 7|23|22|11|11|12|10|17|16|   19   |
|   3   |21|20| 6|22|24|10|24| 9|21|14|   25   |
|   4   |20|11| 8|14| 9| 5| 6|19|19| 7|   19   |
|   5   | 8|13|13|13|10|20|25|16|16|17|   20   |
+-------+--+--+--+--+--+--+--+--+--+--+--------+

The production cost of a batch depends on the machine that processes it. The hourly usage cost for every machine depends on its technology, its age, its consumption of consumables (such as electricity, machine oil) and the personnel required to operate it. These differences are amplified by the variation in the processing durations of a batch depending on the machine. The table below lists the production costs in thousand $. On which machine should each batch be executed if the production manager wishes to minimize the total cost of production?

Production cost depending on the assignment (in k$)

+-------+-----------------------------+
|       |    Production batches       |
|       +--+--+--+--+--+--+--+--+--+--+
|Machine| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|
+-------+--+--+--+--+--+--+--+--+--+--+
|   1   |17|21|22|18|24|15|20|18|19|18|
|   2   |23|16|21|16|17|16|19|25|18|21|
|   3   |16|20|16|25|24|16|17|19|19|18|
|   4   |19|19|22|22|20|16|19|17|21|19|
|   5   |18|19|15|15|21|25|16|16|23|15|
+-------+--+--+--+--+--+--+--+--+--+--+

Variables

batches                    Hours needed to produce batches
capacity                   Hours available per machine
costs                      Cost to produce batches

Reference

Applications of optimization... Gueret, Prins, Seveaux

% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com
% Copyright (c) 2005-2009 by Tomlab Optimization Inc., $Release: 7.1.0$
% Written Oct 7, 2005.   Last modified Mar 8, 2009.

Problem setup

batches         = [ 8  15  14  23   8  16   8  25   9  17;...
    15   7  23  22  11  11  12  10  17  16;...
    21  20   6  22  24  10  24   9  21  14;...
    20  11   8  14   9   5   6  19  19   7;...
    8  13  13  13  10  20  25  16  16  17];

capacity        = [18 ;19 ;25 ;19 ;20];

costs           = [17  21  22  18  24  15  20  18  19  18;...
    23  16  21  16  17  16  19  25  18  21;...
    16  20  16  25  24  16  17  19  19  18;...
    19  19  22  22  20  16  19  17  21  19;...
    18  19  15  15  21  25  16  16  23  15];

m = length(capacity);
p = size(batches,2);

use = tom('use',m,p,'int');
% All variables are binary.
bnds = {0 <= use <= 1};

% Machine constr.
con1 = {sum(use,1) == 1};

% Batch constr.
con2 = {sum(batches.*use,2) <= capacity};

% Objective
objective = sum(sum(costs.*use));

constraints = {bnds, con1, con2};
options = struct;
options.solver = 'cplex';
options.name   = 'Production Batches to Machines';
sol = ezsolve(objective,constraints,[],options);

PriLev = 1;
if PriLev > 0
    [m,b] = size(batches);
    temp  = sol.use;
    for i = 1:m,
        tempidx = find(temp(i,:)>0.5);
        disp([' machine ' num2str(i) ' deals with ' num2str(tempidx)])
    end
end

% MODIFICATION LOG
%
% 051018 med   Created.
% 060111 per   Added documentation.
% 060125 per   Moved disp to end
% 090308 med   Converted to tomSym
Problem type appears to be: mip
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem: ---  1: Production Batches to Machines  f_k     173.000000000000000000
                                               f(x_0)      0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=101.
CPLEX Branch-and-Cut MIP solver
Optimal integer solution found

FuncEv   22 
CPU time: 0.015625 sec. Elapsed time: 0.016000 sec. 
 machine 1 deals with 1  9
 machine 2 deals with 2  5
 machine 3 deals with 3  8
 machine 4 deals with 6   7  10
 machine 5 deals with 4