АШИГТ МАЛТМАЛЫН БАЯЖУУЛАЛТЫН ТЕХНИК, ТЕХНОЛОГИ

Ашигт малтмалын баяжуулалтын чиглэлээр сурч буй оюутан сурагчид, залуу инженерүүдэд зориулав.

Wednesday, June 5, 2019

Баяжуулагч инженерүүдэд зориулсан Python N9 (Python for Mineral Processing Engineers)


 Matplotlib ашиглан тээрэм дэх ган бөөрөнцөгийн хөдөлгөөний  динамикийг тээрмийн хүрдний эргэлтээс хамааруулан Python-оор загварчлав.
Тээрмийн хамгийн гадна давхрагын бөөрөнцөгийн хөдөлгөөний траектори, тасрах өнцөг, мөн унах байршлыг янз бүрийн эргэлийн хурданд (75%, 80%, 87%) тооцож хөдөлгөөнт зургаар үзүүлллээ..
 
 










Tuesday, June 4, 2019

Баяжуулагч инженерүүдэд зориулсан Python №8 (Python for Mineral Processing Engineers)


Нүүрс баяжуулах үйлдвэрийн тэжээлийн нүүрсний оновчтой хольцийг (шихта)
тогтоох нь

Нүүрс баяжуулах үйлдвэрийн (НБҮ) технологийн үзүүлэлт анхдагч нүүрсний чанараас ихээхэн хамаардаг бөгөөд хэд хэдэн уурхай, эсвэл мөргөцөг ашигладаг ихэнх уурхайд чанарын холилт (шихт) хийдэг.
НБҮ-ийн  тэжээлийн чанарын холилтыг ухаалагаар хийх нь үйлдвэрийн үр ашгийг дээшлүүлэх, технологийн үзүүлэлтүүдийг оновчлох нэг арга зам бөгөөд тэжээлийн оновчтой холилтын тооцоог математикийн аргуудаар тооцдог.
Иймэрхүү оновчлолын бодлогыг бодоход математикийн шугаман программчлалын (ШП)  аргыг хэрэглэдэг бөгөөд ба олон хэмжигдэхүүнтэй үед ердийн аргаар (симплекс арга, М-арга) бодоход цаг хугацаа их шаарддагаас гадна жаахан төвөгтэй.
Харин инженерийн бэлэн пакетууд гарч ирснээр шугаман программчлалыг практикт хэрэглэх хялбар болж байгаа юм. Ийм пакетын нэг нь PythonPuLP бөгөөд энэ пакетыг ашиглан НБҮ-ын тэжээлийг оновчтой холилтыг хэрхэн шийдэхийг авч үзье.
Бодлого  1. НБҮ-т хэд хэдэн уурхайгаас (1, 2, 3) нүүрс боловсруулж байгаа ба технологийн туршилтаар 1-р уурхайн нүүрсний баяжмалын гарц γ1=55%, түүний  үнслэг A1 = 12%,  2-р уурхайн нүүрсний баяжмалын гарц γ2=75%, түүний  үнслэг A2 = 8.5%, 3-р уурхайн нүүрсний баяжмалын гарц γ3=65%, түүний  үнслэг A3=9% байсан бол НБҮ-ийн баяжмалын үнслэг 9% байх нөхцөлөөр хамгийн их баяжмалын гарцыг хангах холилтын тооцоог хийх. Үүнд: НБҮ-ийн хоногийн бүтээл 5000 т ба уурхайнуудын нүүрс гаргах хязгаарууд:

500  Q1 ≤ 1000

1000  Q2≤ 5000

1000  Q3 ≤ 2000

БОДОЛТ:

Энэхүү бодлогын тавилыг дараах байдлаар бичиж болох ба PulP пакетыг ашиглаж бичсэн кодыг доор үзүүлэв.




500 Q1 ≤ 1000
1000 Q25000
1000 Q3 2000



#Нvvрсний хольцийг шугаман програмчлалын аргаар тогтоох

import numpy as np
Q=np.array([0.,0.,0.])

# Conc. Yield by mine
Y=[55,75,65]
#Ash content in Concentrate
A=[14,7.5,9]

G=np.asarray(Y)
A=np.asarray(A)
Az=8.5
Qtotal=5000

prob=LpProblem("Coal_Mix", LpMaximize)
Q1=LpVariable("Q1",500,1000)
Q2=LpVariable("Q2",1000,5000)
Q3=LpVariable("Q3",1000,2000)

prob=LpProblem("Coal_Mix", LpMaximize)
prob+=Y[0]/100*Q1+Y[1]/100*Q2+Y[2]/100*Q3
prob+=Q1+Q2+Q3==Qtotal
prob+=(A[0]*Q1+A[1]*Q2+A[2]*Q3)<=Az*Qtotal

prob.writeLP("Coal_Mix.lp")
prob.solve()

print("Status:", LpStatus[prob.status])
i=0
for v in prob.variables():
    Q[i]= v.varValue
    print(v.name, "=", v.varValue)
    i+=1

Aopt=sum(Q*A)/sum(Q)
print("Conc. Ash= ",Aopt)

Энэхүү бодлогын оновчтой шийд нь:
Q1=500 тн
Q2=3500 тн
Q3=1000 тн болох ба НБҮ -ын баяжмалын оновчтой гарц – γ= 71% баяжмалын чанар A=8.5% болохыг амархан шалгаж болно.

                                                           
Бодлого  2. НБҮ-т хэд хэдэн уурхайгаас (1, 2, 3) нүүрс боловсруулж байгаа ба уурхай 1 ын олборлолт, тээврийн зардал z1=-2500/т , уурхай 2 ынх z2=3500/т, уурхай 3 ынх z3=2250/т  тус тус ба  1-р уурхайн нүүрсний үнслэг - A1 = 34%,  2-р уурхайнх A2 =21%, 3-р уурхайнх A3 =28% байгаа бол НБҮ-т орох тэжээлийн нүүрсний үнслэг 25% байх нөхцөлөөр хамгийн бага зардалтайгаар холилтын тооцоог хийх. Үүнд: НБҮ-ийн хоногийн бүтээл ба уурхайнуудын нүүрс гаргах хязгаарууд дээрх бодлоготой адил.


500 Q1 1000
1000 Q25000
1000 Q3 2000

БОДОЛТ:
Оновчлолын бодлогын тавил:



#Нvvрсний хольцийг шугаман програмчлалын аргаар тогтоох

Q=np.array([0.,0.,0.])

# Mining & Transportation cost by mine
z=[2500,3250,2250]
#Ash content in Feed
A=[34,21,28]

z=np.asarray(C)
A=np.asarray(A)
Az=25
Qtotal=5000

prob=LpProblem("Coal_Mix", LpMaximize)
Q1=LpVariable("Q1",500,1000)
Q2=LpVariable("Q2",1000,5000)
Q3=LpVariable("Q3",1000,3000)

prob=LpProblem("Coal_Mix", LpMinimize)
prob+=z[0]/100*Q1+z[1]/100*Q2+z[2]/100*Q3
prob+=Q1+Q2+Q3==Qtotal
prob+=(A[0]*Q1+A[1]*Q2+A[2]*Q3)==Az*Qtotal

prob.writeLP("Coal_Mix.lp")
prob.solve()

print("Status:", LpStatus[prob.status])
i=0
for v in prob.variables():
    Q[i]= v.varValue
    print(v.name, "=", np.round(v.varValue,0))
    i+=1
      
Aopt=sum(Q*A)/sum(Q)
print("Feed Ash= ",Aopt)


Энэхүү бодлогын оновчтой шийд нь
Q1=500 тн
Q2=2571 тн
Q3=1929 тн болох ба НБҮ -ын тэжээлийн үнслэг =25% болохыг амархан шалгаж болно.

Энэ мэтчилэнгээр өөрсдийн уурхайн хувьд уурхай шугаман программчлалыг ашиглан  уурхай болон  НБҮ-ийн үйл ажиллагааг оновчлож болно.