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

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

Monday, April 8, 2019

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



“Илүүдэл мэдээлэлээр” баяжуулалтын масс-балансыг бодох ба хэмжилтийн алдааг засварлах нь   

Баяжуулах процесс, технологийн схемийн балансыг тооцоход сорьцлолт, хэмжилт, химийн шинжилгээний үр дүнгүүд тодорхой алдаатай санамсаргүй хэмжигдэхүүн байдаг.
Иймээс    балансын тооцооны үед бүтээгдэхүүний тоо хэмжээ, гарц, металл авалт зэрэг нь мөн л алдаатаЙ байдаг.
Баяжуулалтын алдарт ном болох В.А.Уйлссын “Эрдэс боловсруулалтын технологи” 2006 оны 7 дахь хэвлэлд байдаг нэгэн жишээг Python ашиглан хэрхэн бодох зөвөлгөөг өгье. Өмнө нь ийм төрлийн бодлогыг MSExcel, HPPrime Graphing ашиглан бодох аргачлалыг өгч байсан билээ.

Энэ жишээгээр баяжмал, хаягдлын гарцыг (y1, y2) олох ба харин үүнийг олоход бид мэднэ.. 2-хон үл мэдэгчтэй тэгшитгэл бодох  шаардлагатайг бид мэднэ.
Гэвч тэжээл, баяжмал, хаягдалд даруй 6 металл тодорхойлсон байгаа бөгөөд дурын металлын агуулгаар материалын балансын тэгшитгэл зохиож гарцуудыг олж болно.
Харамсалтай нь металл тус бүрийг ашиглаж гаргасан бүтээгдэхүүний гарц, цаашлаад металл авалт энэ тэр нь хоорондоо зөрөөтэй байгааг ажиглаж болно. Энэ нь нөгөөх санамсаргүй алдаатай холбоотой юм.
Харин бүх тодорхойлогдсон металлын агуулгуудыг ашиглан балансын тэгшитгэлийг бичвэл:
  ci y1 + ti (1-y1 ) – fi = δi                                                 /1/
Үүнд: ci , ti ,   fi  - баяжмал, хаягдал ба тэжээлийн дээжинд тодорхойлогдсон металлын агуулгууд (i=1..m).
            δi  - балансын алдаанууд
            Алдаануудын квадратуудын нийлбэр хамгийнбага байх зарчмаар гарцуудыг олох ерөнхий томьёог матриц хэлбэрээр бичвэл:
            [Y]=[BT x B]-1[B x B0]                            /2/
ба энд:
            B=(ci – ti)
            B0=(fi – ti)
            BT – эргүүлсэн B матриц   
           
Python-ы өгөгдөл дараах хэлбэртэй.

Data={'metall':['Sn','Fe','SiO2','S','As','TiO2'],
             'Feed':[21.9,3.46,58,0.11,0.36,4.91],
            'Conc':[43,5.5,25.1,0.12,0.38,9.24],
            'Tail':[6.77,1.76,75.3,0.09,0.34,2.07]}
           
Томьёо /2/ -ыг кодод хөрвүүлэн бичвэл:
df= pd.DataFrame(Data)
f=np.array(df.Feed)
c=np.array(df.Conc)
t=np.array(df.Tail)
B=c-t
B0=f-t
B1=B*B
B2=B*B0
C=B2.sum()/B1.sum()  #Concentrate Yield
T=1-C # Tailings yield

Дараа нь Лагранжийн үржвэрээр агуулгуудыг засварлана.

La=1+C**2+T**2
delta=f-C*c-T*t
delta=delta/La
# Corrected Contents by Lagrang Method
f=f-delta
c=c+delta*C
t=t+delta*T
#-----------------------------------------------------------------------------
rec=c*C*100/f   # Recovery of metals in Conc.



                                   Сорьцлолтын үр дүн
metall
Feed
Conc
Tail
Sn
21.9
43
6.77
Fe
3.46
5.5
1.76
SiO2
58
25.1
75.3
S
0.11
0.12
0.09
As
0.36
0.38
0.34
TiO2
4.91
9.24
2.07

y1= 37.0 %,  y2 =63.0%

Засварласан агуулгууд

Metall
Feed
Conc
Tail
Rec
Sn
20.78
43.41
7.47
77.35
Fe
3.25
5.58
1.89
63.44
SiO2
57.16
25.41
75.83
16.46
S
0.1
0.12
0.09
43.4
As
0.36
0.38
0.34
39.59
TiO2
4.79
9.28
2.15
71.78

                        









Sunday, March 31, 2019

Баяжуулагч инженерүүдийн Python №6 (Python for Mineral Processing Engineers)


Монте-Карлогийн загварчлал ба бөөрөнцөгт тээрмийн хүчин чадлыг анхдагч хүдрийн хатуулаг, бүхэллэгээс хамааруулан үнэлэх нь

Өнгөрсөн зууны 40-өөд онд АНУ-ын физик, математикийн нэрт эрдэмтэд Манхэтхэн төсөл дээр  ажиллаж  байхдаа нийлмэл системийг загварчлахад санамсаргүй тоонуудыг хэрэглэсэн гэдэг ба үүнээс хойш ийм аргыг Монте-Карлогийн (Monte Carlo) загварчлал гэж нэрлэсэн.
 Баяжуулах үйлдвэрийн технологийн процессууд, тоног төхөөрөмжүүдийн үйл ажиллагааг Монте-Карлогийн аргыг хэрэглэн загварчилж болно.
Энэхүү аргын гол санаа нь тухайн процесст нөлөөлөгч хүчин зүйлүүдийг тоо томшгүй олон санамсаргүй тоогоор (мэдээж тархалтын хуулиар) математик загварын өгөгдөл болгон технологийн процессын үр дүнг төлөгчлөх явдал юм.
Орчин үед комьютерийн техник хөгжиж  , иммитаци загварчлалыг гүйцэтгэх боломжтой тусгай программ, пакетууд (Жишээ нь Oracle компанийн Crystal Ball г.м.) гарч ирснээр Монте-Карлогийн аргыг амьдрал, практикт хэрэглэхэд хялбар болсон.
Python-ны иumpy систем нь янз бүрийн хуультай санамсаргүй тоонуудыг үүсгэх боломж ихтэй.
Бид жишээ болгон Эрдэнэт үйлдвэрийн баяжуулах фабрикийн МЩЦ 5.5 x6.5 бөөрөнцөгт тээрмийн цагийн хүчин чадлыг хүдрийн хатуулаг, тэжээлийн бүхэллэгээс хамааруулан Монте-Карлогийн аргаар төлөгчлөх (загварчлах) энгийн бодлогыг numpy санг ашиглан гүйцэтгэе.
Тээрмийн үйл ажиллагаанд олон хүчин зүйл нөлөөлдөгч бид эдгээрээс 2 гол хүчин зүйлүүдыг авч үзлээ. Монте-Карлогийн зарчмыг дараах зурагт үзүүлэв.

Санамсаргүй тооны генератор ашиглан хүдрийн Бондын ажлын индек (Wi) , тэжээлийн бүхэллэгийн (F80) тархалтыг үүсгэж , тэдгээрийг бөөрөнцөгт тээрмийн загварт (томьёо) өгье. Python -программаар  МЩЦ 5.5x6.5 тээрмийн цагийн хүчин чадлын тархалтыг тухайн өгөгдүүдээс хамааруулан   гаргав. (Зураг )

Монте-Карлогийн загварчлалын үр дүнгүүдийг дараах хүснэгтүүд, графикаар харуулав. Хүснэгт болон графикаас харахад  Бондын ажлын индеск 1 кВтц/т –оор өсөхөд бүтээмж бараг 15 т/ц-аар буурч байна. Харин буталсан хүдрийн бүхэллэгийн хэмжээ 2500 микр (2.5 мм) –оор өсөхөд тээрмийн цагийн хүчин чадал 8 т/ц-аар буурч байгааг харж болно. Дээрх тооцоонд P80=135 микрон гэж авлаа.
Өгөгдлүүд болон загварчлалыг улам нарийн болгосноор бөөрөнцөгт тээрмийн технологийн  чадлын эрсдлийн тооцоог хүдрийн физик-механикийн шинж чанараас хамааруулан гүйцэтгэж болох юм. 

МЩЦ 5.5x6.5 тээрмийн цагын хүчин чадал
Стат. Үзүүлэлт
F80=8500 микр. 
F80=12000 микр 
Түүврийн тоо
1000
1000
Дундаж
294.0
286.2
Стандарт хазайлт
13.8
13.4
Хамгийн бага
257.0
250.0
25%
284.8
277.0
50%
294.0
286.0
75%
303.0
295.0
Хамгийн их
340.0
331.0





МЩЦ 5.5x6.5 тээрмийн цагын хүчин чадал

Стат. Үзүүлэлт
Wi=17.6 кВтц/t
Wi=18.6 кВтц/t
Түүврийн тоо
1000.0
1000.0
Дундаж
293.4
277.5
Стандарт хазайлт
14.0
12.5
Хамгийн бага
253.0
241.0
25%
283.0
269.0
50%
292.0
277.0
75%
302.3
286.0
Хамгийн их
360.0
337.0



Программын код:

# Ball Mill Capacity Monte Carlo Simulation
#G.Davaatseren

def Q(W,F80):
    D=5.5
    L=6.5
    bd = 7.9
    fsi=0.85
    phi=0.35
    Cf=1
    P80=135
    Q1=8.01*(D**3.3)*(L/D)*bd*(phi-0.937*phi*phi)*(fsi-0.1*fsi/(2**(9-10*fsi)))
    Q2=Cf*W*(10/np.sqrt(P80)-10/np.sqrt(F80))
    return Q1/Q2
#-------------------------------------------------------
# test data for Erdenet

Wi=np.array([17.41,17.46,16.37,18.23,18,17.07,17.43,17.37,16.82,19.5])
W_mean=np.mean(Wi)
W_std=np.std(Wi)

#-----------------------------------------------------
# Generation of the Bond Work Index
w_index = np.random.normal(W_mean,W_std, 1000)

#feed_size= np.random.normal(9500,200, 1000)

#feed_size=[9500,10000,12000,]
#for i in feed_size:
#    tph=np.round(Q(w_index,i),0)
#y=pd.Series(tph)
#print(y.describe())
tph1=np.round(Q(w_index,8000),0)
tph2=np.round(Q(w_index+1,8000),0)
y1=pd.Series(tph1)
y2=pd.Series(tph2)
print(y1.describe())
print(y2.describe())

df = pd.DataFrame({'tph1':y1.describe(),
                  'tph2':y2.describe()})
writer = ExcelWriter('tph1.xlsx')
df.to_excel(writer,'Sheet1',index=True)
writer.save()
#-------------------------------------
fig, axs = plt.subplots(1, 2, figsize=(10, 5),sharey=True, tight_layout=True)
fig.suptitle('МЩЦ-5.5x6.5 тээрмийн хvчин чадлын иммитаци (Monte-Carlo) загварчлал')


axs[0].hist(w_index+1,bins=50, color='r', alpha=0.5, rwidth=0.85)
axs[0].set_xlabel('Бондын ажлын индескийн тархалт,кВтц/т')
axs[0].text(17, 60, '$\mu= 18.6 \ \sigma=0.82$')

axs[1].hist(tph1,bins=50,color='b', alpha=0.5, rwidth=0.85,label='Wi= 17.6 кВтц/т')
axs[1].hist(tph2,bins=50,color='g', alpha=0.5, rwidth=0.85,label='Wi= 18.6 кВтц/т')
axs[1].legend()
axs[1].set_xlabel('МЩЦ-5.5x6.5 тээрмийн хvчин чадал, т/ц') 

axs[0].grid('both',linestyle='--')
axs[1].grid('both',linestyle='--')