Opencast Mining
Contents
Problem description
An opencast uranium mine is being prospected. Based on the results of some test drillings the mine has been subdivided into exploitation units called blocks. The pit needs to be terraced to allow the trucks to drive down to its bottom. The uranium deposit extends from east to west. The pit is limited in the west by a village and in the east by a group of mountains. Taking into account these constraints, 18 blocks of 10,000 tonnes on three levels have been identified (Figure 6.3). To extract a block, three blocks of the level above it need to be extracted: the block immediately on top of it, and also, due to the constraints on the slope, the blocks to the right and to the left.
Village Mountains +---+---+---+---+---+---+---+---+ Level 1: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +---+---+---+---+---+---+---+---+ Level 2: | | 9 | 10| 11| 12| 13| 14| | +---+---+---+---+---+---+---+---+ Level 3: | | | 15| 16| 17| 18| | | +---+---+---+---+---+---+---+---+
For example: If we were to extract block 17 we also need to extract the blocks 11, 12 and 13. And in order to extract these blocks we also need to extract blocks 3, 4, 5, 6 and 7.
It costs $ 100 per tonne to extract a block of level 1, $ 200 per tonne for a block of level 2, and $ 300 per tonne for a block of level 3, with the exception of the hatched blocks that are formed of a very hard rock rich in quartz and cost $ 1000 per ton. The only blocks that contain uranium are those displayed in a gray shade (1, 7, 10, 12, 17, 18). Their market value is 200, 300, 500, 200, 1000, and $ 1200/tonne respectively. Block 18, although rich in ore, is made of the same hard rock as the other hatched blocks. Which blocks should be extracted to maximize the total benefit?
Variables
values The profit for extracting the blocks depends Block dependencies.
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.2.0$ % Written Oct 7, 2005. Last modified Apr 8, 2009.
Problem setup
values = [200-100;-100;-100;-100;-100;-100;300-100;-100;... -1000;500-200;-200;200-200;-200;-1000;-1000;-1000;... 1000-300;1200-1000]*10000; depends = [-1 -1 -1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0;... 0 -1 -1 -1 0 0 0 0 0 3 0 0 0 0 0 0 0 0;... 0 0 -1 -1 -1 0 0 0 0 0 3 0 0 0 0 0 0 0;... 0 0 0 -1 -1 -1 0 0 0 0 0 3 0 0 0 0 0 0;... 0 0 0 0 -1 -1 -1 0 0 0 0 0 3 0 0 0 0 0;... 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 3 0 0 0 0;... 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 3 0 0 0;... 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 3 0 0;... 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 3 0;... 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 3]; extract = tom('extract',length(values),1,'int'); % Variables are binary bnds = {0 <= extract <= 1}; % Production constraint, all lots processed physcon = {depends*extract <= 0}; % Objective objective = -values'*extract; constraints = {bnds, physcon}; options = struct; options.solver = 'cplex'; options.name = 'Open Cast Mining'; sol = ezsolve(objective,constraints,[],options); extr = sol.extract; PriLev = 1; if PriLev > 0 level1 = []; for i = 1:8, if extr(i) == 1, level1 = [level1 ' * ']; else level1 = [level1 ' - ']; end end level2 = [ ' - ']; for i = 9:14, if extr(i) == 1, level2 = [level2 ' * ']; else level2 = [level2 ' - ']; end end level2 = [level2 ' - ']; level3 = [ ' - ' ' - ']; for i = 15:18, if extr(i) == 1, level3 = [level3 ' * ']; else level3 = [level3 ' - ']; end end level3 = [level3 ' - ' ' - ']; disp(' ') disp('Extraction profile') disp(' ') disp(['Level 1: ' level1]) disp(['Level 2: ' level2]) disp(['Level 3: ' level3]) disp(' ') disp('Legend: * means do extract') disp(' - means do not extract') end % MODIFICATION LOG % % 051007 med Created. % 060109 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: Open Cast Mining f_k -4000000.000000000000000000 f(x_0) 0.000000000000000000 Solver: CPLEX. EXIT=0. INFORM=101. CPLEX Branch-and-Cut MIP solver Optimal integer solution found FuncEv 1 Extraction profile Level 1: * * * * * * * - Level 2: - - * * * * - - Level 3: - - - - * - - - Legend: * means do extract - means do not extract