Регулярная проверка конечного контура рабочей зоны карьера на основе алгоритма скользящего конуса

© Д.А. Шариф, 2007

УДК 622.271 Д.А. Шариф

РЕГУЛЯРНАЯ ПРОВЕРКА КОНЕЧНОГО КОНТУРА РАБОЧЕЙ ЗОНЫ КАРЬЕРА НА ОСНОВЕ АЛГОРИТМА СКОЛЬЗЯЩЕГО КОНУСА

Семинар № 16

В настоящее время с каждым днём обостряется борьба на рынках металлов и горнодобывающих продуктов. С каждым днём появляются новые методы обогащения полезных компонентов руд, появляются гигантские оборудования в карьерах и шахтах. Разумеется, все эти изменения резко влияют на рентабельность проекта карьеров и шахт. Поэтому в современных карьерах невозможно выполнять добычу на основе одного и того же плана, а нужно регулярно проверять степень рентабельности текущего проекта. В зависимости от наблюдаемых изменений на рынках, иногда приходится исправлять проект карьеров, и даже, если необходимо, обновлять проект разработки месторождения полезных ископаемых. В зависимости от приведённых причин, на крупных горнодобывающих предприятиях ежегодно, ежемесячно или даже ежедневно проверяют план работы. Не смотря на то, что период проверки и обновления проекта и плана разработки точно не известен, но эта процедура неизбежна. В последние десятилетия единственным способом проверки конечного контура карьеров является использование компьютерных методов. Основная и классическая цель проектирования рудника может быть определена следующим образом:

Установление окончательных контуров рудника в конце его экономиче-

ской жизни, так, чтобы полная чистая прибыль была максимальна.

Процедуры компьютерного проектирования открытых горных работ, можно разделить на две широких категории: математическая оптимизация и эвристические подходы к моделированию.

Среди нескольких существующих алгоритмов, скользящий конус, благодаря его простоте и ряду хороших качеств широко применяется в разных странах мира, особенно в США. Однако, алгоритм скользящего конуса имеет недостаток - ему не хватает строгого математического доказательства оптимальности решений. Кроме того, выявились некоторые недостатки в применении алгоритма проектированию карьеров для разработки месторождений драгоценных металлов с беспорядочными распределениями концентраций.

Данная работа основана на алгоритме “повторяющейся формулы скользящего конуса“ (Berlanga et all, 1988). Алгоритм состоит в том, что числовое выражение "скользящего конуса” строится с тремя различными вариантами расстояний, как векторов в определенной системе координат.

Алгоритм «скользящего конуса» реализован в компьютерной программе «Atlas». Программа написана на языке QBasic. Находится в отладке версия программы на языке Visual C++ 6.0. После ввода исходных данных программа создает конус на поверхности

очередного блока. Ищутся все выше- ным, месторождение нарезается на

лежащие блоки, попадающие в конус. блоки равного размера, например

Принимается решение об отработке 10-10-10 м, в каждом блоке рассчи-

вышележащих блоков, попавших в ко- тается содержание полезного компо-

нус. Если получена отрицательная нента, создается экономическая мо-

оценка, конус расширяется. В конце дель, состоящая из блоков имеющих

программа вычисляет количество всех положительную оценку. Блокам с ми-

добываемых блоков и дает послойную нимальным экономическим содержа-

распечатку оценок всех блоков. нием полезного компонента приписы-

Как нужно подготовить данные по вается оценка «нуль». Блоки, попа-

месторождению полезных ископаемых, дающие в области вскрышных пород,

чтобы применить алгоритм скользящего получают отрицательную оценку.

конуса? По геологоразведочным дан-

Далее приведен текст компьютерной программы «Atlas».

10 CLS : INPUT "PLEAS ENTER NUMBER OF RAW”; M 20 INPUT "PLEAS ENTER NUMBER OF COLUMN"; N 30 INPUT "PLEAS ENTER NUMBER OF LEVEL"; K1 40 CLS : PRINT "YOUR DATA FILE NAME IS G2.DAT"

50 DIM A

60 VALUE = 0: PRINT "PLEAS CHECK YOUR DATA FILE .DO YOU COMPLETE YOUR DATA FILE?(Y/N)"

70 M$ = INKEY$

80 IF M$ = "Y" OR M$ = "y" THEN 150 90 IF M$ = "N" OR M$ = "n" THEN 120 100 GOTO 70 110 CLS

120 CLS : PRINT "YOU SHOULD COMPLETE YOUR DATA FILE": PRINT "YOUR DATA FILE RAW NUMBER="; M; "AND COLUMN NUMBER="; N; "AND LEVEL NUMBER="; K1

130 PRINT "FOR EXIT TYPE N OR COMPLUTE DATA FILE AND TYPE Y?(Y/N)"

131 M$ = INKEY$

132 IF M$ = "Y" OR M$ = "y" THEN 150

133 IF M$ = "N" OR M$ = "n" THEN 140

134 GOTO 131 140 GOTO 1560

150 CLS : PRINT "PLEAS WAIT"

160 OPEN "A:\G2.DAT" FOR INPUT AS #1 170 FOR K = 1 TO K1 175 FOR I = 1 TO M 180 FOR J = 1 TO N 190 IF EOF

210 NEXT J: NEXT I

220 NEXT K

230 CLOSE #1

240 FOR I = 1 TO M

250 FOR J = 1 TO N

260 IF A(I, J, 1) <= 0 THEN 290

270 VALUE = VALUE + A

280 A(I, J, 1) = 0

290 NEXT J: NEXT I

291 GOSUB 309: CLS : PRINT "FIRST PART OF CALCULATION FINISHED. DO YOU WANT TO CONTINUE CALCULATION?(Y/N)"

292 M$ = INKEY$

293 IF M$ = "Y" OR M$ = "y" THEN 296

294 IF M$ = "N" OR M$ = "n" THEN 1560

295 GOTO 292

296 GOSUB 541: CLS : PRINT "SECOND PART OF CALCULATION FINISHED.DO YOU WANT TO CONTINUE CALCULATION?(Y/N)"

297 MS = INKEYS

298 IF MS = "Y" OR MS = "y" THEN 301

299 IF MS = "N" OR mS = "n" THEN 1Б60

300 GOTO 297

301 GOSUB 996: CLS : PRINT "THIRD PART OF CALCULATION FINISHED.DO YOU WAHT TO CONTINUE CALCULATION?(Y/N)"

302 MS = INKEYS

303 IF MS = "Y" OR MS = "y" THEN 306

304 IF MS = "N" OR MS = "n" THEN 1Б60 З0Б GOTO З02

З06 GOSUB 1ЗБ1

309 SUM = 0

310 FOR L = 2 TO K1

311 FOR I = L TO M - L + 1 320 FOR J = L TO N - L + 1 330 IF A(I, J, L) <= 0 THEN БЗ1 340 SUM = 0

ЗБ0 FOR D = 1 TO L 360 FOR K = 0 TO L - D 370 FOR B = I - K TO I + K 380 FOR C = J - K TO J + K

390 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN 410 400

GOTO 420

410 SUM = SUM + A

420 NEXT C: NEXT B: NEXT K: NEXT D

440 IF SUM < 0 THEN БЗ1

4Б0 VALUE = VALUE + SUM

460 FOR D = 1 TO L

470 FOR K = 0 TO L - D

480 FOR B = I - K TO I + K

490 FOR C = J - K TO J + K

Б00 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN Б20

Б10 GOTO БЗ0 Б20 A(B, C, D) = 0

БЗ0 NEXT C: NEXT B: NEXT K: NEXT D БЗ1 PRINT I, J, L: NEXT J: NEXT I: NEXT L Б40 RETURN Б41 SUM = 0

Б42 FOR L = 2 TO K1: FOR I = L TO M - L + 1: FOR J = L TO N - L + 1 Б4З IF A(I, J, L) <= 0 THEN 981

ББ0 IF I > L - 1 AND I < M - L + 1 AND J > L - 1 AND J < N - L + 1 THEN Б70 Б60 GOTO 981

Б70 A1 = I - L + 1: A2 = J - L + 1: A3 = M - L + 1 - I: A4 = N - L + 1 - J

Б80 IF A1 <= A2 AND A1 <= A3 AND A1 <= A4 THEN 620

Б90 IF A2 <= A1 AND A2 <= A3 AND A2 <= A4 THEN 630

600 IF A3 <= A1 AND A3 <= A2 AND A3 <= A4 THEN 640

610 N1 = A4: GOTO 740

620 N1 = A1: GOTO 740

630 N1 = A2: GOTO 740

640 N1 = A3

740 FOR E = 1 TO N1

7Б0 FOR D = 1 TO L

760 K = L - D + E

790 FOR B = I - K TO I + K

800 FOR C = J - K TO J + K

810 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN 830

820 GOTO 840

830 SUM = SUM + A

840 NEXT C: NEXT B: NEXT D 8Б0 IF SUM < 0 THEN 860 8ББ GOTO 890 860 NEXT E

86Б IF SUM < 0 THEN 981

870 E = E - 1

890 VALUE = VALUE + SUM 900 FOR D = 1 TO L 910 FOR K = 0 TO L - D + E 930 FOR B = I - K TO I + K 940 FOR C = J - K TO J + K

9Б0 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN 970 960 GOTO 980 970 A(B, C, D) = 0

980 NEXT C: NEXT B: NEXT K: NEXT D

981 PRINT I, J, L: NEXT J: NEXT I: NEXT L 99Б RETURN

996 SUM1 = 0

997 FOR L = 2 TO K1: FOR I = L TO M - L + 1: FOR J = L TO N - L + 1

998 IF A(I, J, L) <= 0 THEN 1349

1000 IF J < N - L + 1 AND J > L - 1 THEN 1020

1010 GOTO 1349

1020 J1 = J + 1

1030 FOR D = 1 TO L

1040 K = L - D

10Б0 FOR B = I - K TO I + K

1060 FOR C = J1 TO J1 + K

1070 IF B = I - C + J1 + K OR B = I - K + C - J1 THEN 1090

1080 GOTO 1100

1090 SUM1 = SUM1 + A

1100 NEXT C: NEXT B: NEXT D

1200 IF SUM1 > 0 THEN 12Б0

1210 IF J1 > L - 1 AND J1 < N - L + 1 THEN 1230

1220 GOTO 1349

1230 J1 = J1 + 1

1231 FOR D = 1 TO L

1232 K = L - D

1233 FOR B = I - K TO I + K

1234 FOR C = J1 TO J1 + K

12ЗБ IF B = I - C + J1 + K OR B = I - K + C - J1 THEN 1237

1236 GOTO 1238

1237 SUM1 = SUM1 + A

1238 NEXT C: NEXT B: NEXT D 1247 GOTO 1200

12Б0 VALUE = VALUE + SUM1 1260 FOR D = 1 TO L 1270 FOR K = 0 TO L - D 1280 FOR B = I - K TO I + K 1290 FOR C = J - K TO J + K

1300 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN 1320 1310 GOTO 1330 1320 A(B, C, D) = 0

1330 NEXT C: NEXT B: NEXT K: NEXT D

1340 FOR J3 = J + 1 TO J1

1341 FOR D = 1 TO L

1342 K = L - D

1343 FOR B = I - K TO I + K

1344 FOR C = J3 TO J3 + K

1З4Б IF B = I - C + J3 + K OR B = I - K + C - J3 THEN 1347

1346 GOTO 1348

1347 A(B, C, D) = 0

1348 NEXT C: NEXT B: NEXT D: NEXT J3

1349 PRINT I, J, L: NEXT J: NEXT I: NEXT L 13Б0 RETURN

1ЗБ1 SUM2 = 0

1ЗБ2 FOR L = 2 TO K1: FOR I = L TO M - L + 1: FOR J = L TO N - L + 1

1ЗБЗ IF A(I, J, L) <= 0 THEN 1480

1ЗБ8 IF I < M - L + 1 AND I > L - 1 THEN 1360

13Б9 GOTO 1480

1360 I1 = I + 1

1361 FOR D = 1 TO L

1362 K = L - D

1363 FOR B = I1 TO I1 + K

1364 FOR C = J - K TO J + K

1З6Б IF B = I1 + K + C - J OR B = I1 - C + J + K THEN 1367

1366 GOTO 1368

1367 SUM2 = SUM2 + A

1368 NEXT C: NEXT B: NEXT D

1378 IF SUM2 > 0 THEN 1391

1379 IF I1 > L - 1 AND I1 < N - L + 1 THEN 1381

1380 GOTO 1480

1381 I1 = I1 + 1

1382 FOR D = 1 TO L

1383 K = L - D

1384 FOR B = I1 TO I1 + K 1З8Б FOR C = J - K TO J + K

1386 IF B = I1 + K + C - J OR B = I1 - C + J + K THEN 1388

1387 GOTO 1389

1388 SUM2 = SUM2 + A

1389 NEXT C: NEXT B: NEXT D

1390 GOTO 1378

1391 VALUE = VALUE + SUM2

1392 FOR D = 1 TO L: FOR K = 0 TO L - D: FOR B = I - K TO I + K: FOR C = J - K TO J + K

1393 IF B = I - K + C - J OR B = I - C + J - K OR B = I - C + J + K OR B = I + K + C - J THEN 1З9Б

1394 GOTO 1396 1З9Б A(B, C, D) = 0

1396 NEXT C: NEXT B: NEXT K: NEXT D

1398 GOTO 1378

1399 SUMO = 1: SUM1 = SUM2

1400 GOTO 12Б0

1401 FOR I3 = I + 1 TO I1

1402 FOR D = 1 TO L

1403 K = L - D

1404 FOR B = I3 TO I3 + K 140Б FOR C = J - K TO J + K

1406 IF B = I3 + K + C - J OR B = I3 - C + J + K THEN 1408

1407 GOTO 1409

1408 A(B, C, D) = 0

1409 NEXT C: NEXT B: NEXT D: NEXT I3 1480 PRINT I, J, L: NEXT J: NEXT I: NEXT L 1490 OPEN "A:\G4.OUT" FOR OUTPUT AS #2 1Б00 FOR K = 1 TO K1

1Б0Б FOR I = 1 TO M 1Б10 FOR J = 1 TO N 1Б20 AS = SPACES

1Б21 LSET AS = STRS

1Б22 IF J = N THEN PRINT #2, AS ELSE PRINT #2, AS;

1БЗ0 NEXT J: NEXT I: NEXT K 1Б40 CLOSE #2

1Б41 CLS : PRINT "CALCULATION FINISHED ,FOR STOP TYPE P AND FOR WATCHING VALUE TYPE V?(P/V)"

1Б42 MS = INKEYS

1Б4З IF MS = "P" OR MS = "p" THEN 1Б60 1Б44 IF MS = "V" OR MS = "v" THEN 1ББ0 1Б4Б GOTO 1Б42 1550 PRINT "VALUE="; VALUE 1560 STOP S2E

— Коротко об авторах--------------------------------------------------

Шариф Джафар Абдо плахи - Московский государственный университет им. М.В. Ломоносова, Геологический факультет.