0001
0002
0003
0004
0005
0006
0007 function [A_finesOregrade b_finesOreUgrade] = fines_ore_blending_constraint1...
0008 (Blocks120, numOfPeriods,...
0009 MaxfinesOre, MinfinesOre)
0010
0011
0012 [numBlocks n] = size([Blocks120.EBV]');
0013
0014
0015 finesOreGrade1 = [Blocks120.finesGradeOre];
0016 OreTonnage = [Blocks120.blockFinesOre]/100;
0017
0018
0019 finesOreGrade2=zeros(1,numBlocks);
0020 finesOreGrade3=zeros(1,numBlocks);
0021
0022
0023
0024
0025 for iBlocks=1:numBlocks
0026 finesOreGrade2(1,iBlocks)=((finesOreGrade1(1,iBlocks)-MaxfinesOre).*OreTonnage(1,iBlocks));
0027 finesOreGrade3(1,iBlocks)=((MinfinesOre-finesOreGrade1(1,iBlocks)).*OreTonnage(1,iBlocks));
0028 end
0029
0030
0031 finesOreGradeMax = zeros(numOfPeriods,numBlocks*numOfPeriods);
0032 finesOreGradeMin = zeros(numOfPeriods,numBlocks*numOfPeriods);
0033 for iPeriods = 1:numOfPeriods
0034 finesOreGradeMax(iPeriods,((numBlocks*(iPeriods-1)+1):iPeriods*numBlocks))...
0035 = finesOreGrade2(1,:);
0036
0037 finesOreGradeMin(iPeriods,((numBlocks*(iPeriods-1)+1):iPeriods*numBlocks))...
0038 = finesOreGrade3(1,:);
0039 end
0040
0041
0042
0043
0044 [m,n] = size(finesOreGradeMax);
0045 A_finesOregradeMax = [zeros(m, numBlocks*numOfPeriods)...
0046 finesOreGradeMax, zeros(m, numBlocks*numOfPeriods)...
0047 zeros(m, numBlocks*numOfPeriods)...
0048 zeros(m,m), zeros(m,m), zeros(m,m), zeros(m,m)];
0049
0050 A_finesOregradeMin = [zeros(m, numBlocks*numOfPeriods)...
0051 finesOreGradeMin, zeros(m, numBlocks*numOfPeriods)...
0052 zeros(m, numBlocks*numOfPeriods)...
0053 zeros(m,m), zeros(m,m), zeros(m,m), zeros(m,m)];
0054
0055 A_finesOregrade = [A_finesOregradeMax; A_finesOregradeMin];
0056
0057
0058 [m,n] = size(A_finesOregrade);
0059 b_finesOreUgrade = zeros(m,1);
0060
0061
0062 A_finesOregrade = sparse(A_finesOregrade);
0063 b_finesOreUgrade = sparse(b_finesOreUgrade);
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078 for i = 1:m
0079 A_gradeNormVector(i,1) = norm(A_finesOregrade(i,:));
0080 end
0081
0082 for i = 1:m
0083 normA = A_gradeNormVector(i,1);
0084 A_finesOregrade(i,:) = A_finesOregrade(i,:)/normA;
0085 end
0086
0087 A_finesOregrade;
0088
0089 end