# ---------- Fresh feed ----------
Q_fresh = 1812.0 # tph
F80_feed_mm = 45.0 # for information
# Example feed PSD (replace with real data!)
feed_psd = np.array([0.02, 0.04, 0.09, 0.20, 0.30, 0.35], dtype=float)
feed_psd /= feed_psd.sum()
print("Check feed P80 (mm):", calc_P80(feed_psd))
def build_breakage_matrix(size_mid):
"""
Simple lower-triangular Whiten-style breakage matrix.
You can calibrate this later from testwork.
"""
n = len(size_mid)
B = np.zeros((n, n))
for i in range(n):
B[i, i] = 0.4
if i >= 1:
B[i, i-1] += 0.3
if i >= 2:
B[i, i-2] += 0.2
if i >= 3:
B[i, i-3] += 0.1
B[i] /= B[i].sum()
return B
def build_classification_matrix(size_mid, css_mm=18.0):
"""
Lynch selection function (probability of breakage).
"""
n = len(size_mid)
C = np.zeros((n, n))
for i, d in enumerate(size_mid):
if d > 2.5 * css_mm:
pb = 0.95
elif d > css_mm:
pb = 0.70
elif d > 0.5 * css_mm:
pb = 0.40
else:
pb = 0.05
C[i, i] = pb
return C
B = build_breakage_matrix(size_mid)
C = build_classification_matrix(size_mid, css_mm=18.0) # guess CSS
def cone_crusher(feed_psd, B, C):
"""
Whiten cone crusher:
P = F (I - C) + F C B
"""
F = feed_psd.reshape(1, -1)
I = np.eye(len(feed_psd))
P = F @ (I - C) + F @ C @ B
P = P.ravel()
P = np.maximum(P, 0)
P /= P.sum()
return P
def build_partition_curve(size_mid, d50=14.0, sharpness=2.0):
"""
Partition curve: probability to undersize.
p_u(d) = 1 / (1 + (d/d50)^sharpness)
"""
d = size_mid
return 1.0 / (1.0 + (d / d50) ** sharpness)
p_u = build_partition_curve(size_mid, d50=14.0, sharpness=2.0)
def screen_step(feed_mass_by_class, p_u):
"""
feed_mass_by_class: tph per size class
"""
mass_U = feed_mass_by_class * p_u
mass_O = feed_mass_by_class - mass_U
Q_U = mass_U.sum()
Q_O = mass_O.sum()
psd_U = mass_U / Q_U if Q_U > 0 else np.zeros_like(mass_U)
psd_O = mass_O / Q_O if Q_O > 0 else np.zeros_like(mass_O)
return mass_U, mass_O, Q_U, Q_O, psd_U, psd_O
def simulate_circuit(Q_fresh, feed_psd, B, C, p_u,
max_iter=1000, tol=1e-4):
n = len(feed_psd)
Q_recycle = 0.0
psd_recycle = np.zeros(n)
for it in range(max_iter):
Q_cr_feed = Q_fresh + Q_recycle
if Q_cr_feed > 0:
psd_cr_feed = (Q_fresh * feed_psd + Q_recycle * psd_recycle) / Q_cr_feed
else:
psd_cr_feed = feed_psd.copy()
psd_cr_prod = cone_crusher(psd_cr_feed, B, C)
mass_screen_feed = Q_cr_feed * psd_cr_prod
(mass_U, mass_O,
Q_U, Q_O,
psd_U, psd_O) = screen_step(mass_screen_feed, p_u)
# screen feed PSD for plotting
psd_screen_feed = mass_screen_feed / mass_screen_feed.sum()
Q_recycle_new = Q_O
psd_recycle_new = psd_O.copy()
rel_change = abs(Q_recycle_new - Q_recycle) / max(Q_cr_feed, 1e-6)
Q_recycle, psd_recycle = Q_recycle_new, psd_recycle_new
if rel_change < tol:
print(f"Converged in {it+1} iterations.")
break
results = {
# rates
"Q_fresh": Q_fresh,
"Q_crusher_feed": Q_cr_feed,
"Q_recycle": Q_recycle,
"Q_product": Q_U,
# PSDs
"psd_fresh": feed_psd,
"psd_crusher_feed": psd_cr_feed,
"psd_crusher_product": psd_cr_prod,
"psd_screen_feed": psd_screen_feed,
"psd_screen_oversize": psd_O,
"psd_screen_undersize": psd_U,
}
return results
res = simulate_circuit(Q_fresh, feed_psd, B, C, p_u)
Q_prod = res["Q_product"]
P80_prod = calc_P80(res["psd_screen_undersize"])
print("\n=== Steady-state summary ===")
print(f"Fresh feed rate : {res['Q_fresh']:.1f} tph")
print(f"Crusher feed rate : {res['Q_crusher_feed']:.1f} tph")
print(f"Recycle (screen oversize): {res['Q_recycle']:.1f} tph")
print(f"Final product rate : {Q_prod:.1f} tph")
print(f"Final product P80 (mm) : {P80_prod:.2f} mm")
Thursday, November 20, 2025
Линч - Витены бутлалтын загвар (Lynch - Whiten)
Monday, November 10, 2025
МАШИН СУРГАЛТЫН (ХИЙМЭЛ ОЮУНЫ) ЭНГИЙН PYTHON ПРОГРАММ
===========================================================================================================================
Энэхүү программ нь Python-ы Tensorflow , Keras зэрэг сангуудыг ашиглан машин сургалтын аргаар (хиймэл оюун) ажилд орохыг
хүссэн өргөдлүүдийг хиймэл оюуны тусламжтайгаар шийдвэр гаргах юм.
Иймэрхүү байдлаар тэндэр дүгнэж шийдвэр гаргах, Баяжуулах үйлдвэрийн олон хүчин зүйлүүдийг боловсруулж өмнө нь мэдэгдээгүй
хууль зүйг нээн илрүүлэх зэрэгт амжилттаөй хэрэглэж болох юм.
Өргөдлийн өгөгдлүүд:
- Ажлын туршлага , жилээр
- Ажлын туршлагын оноо (0-100)
- Ярианы чадвар
- Боловсролын түвшин
Шийдвэр:
0 - ажилд авахгүй
1- ажилд авна
==========================================================================================================================
import numpy a
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
# 1. ӨГӨГДӨЛ БЭЛДЭХ
# Оролтын өгөгдөл: [туршлага(жил), оноо(100-аас), ярианы чадвар(0-1), боловсролын түвшин(0-2)]
# Гаралт: 0 - ажилд авахгүй, 1 - ажилд авна
# Сургалтын өгөгдөл
X_train = np.array([
[2, 65, 0.3, 1], # анхны өргөдөл
[5, 80, 0.7, 2], # хоёр дахь өргөдөл
[1, 45, 0.2, 0], # гэх мэт...
[8, 90, 0.9, 2],
[3, 70, 0.5, 1],
[0, 35, 0.1, 0],
[10, 95, 0.95, 2],
[4, 75, 0.6, 1]
])
# Харгалзах хариу (мэргэжилтний шийдвэр)
y_train = np.array([0, 1, 0, 1, 1, 0, 1, 1])
# 2. НЕЙРОН СҮЛЖЭЭГ БҮТЭЭХ
model = keras.Sequential([
keras.layers.Dense(8, activation='relu', input_shape=(4,)), # Далд давхарга
keras.layers.Dense(4, activation='relu'), # Давхарга нэмэх
keras.layers.Dense(1, activation='sigmoid') # Гаралтын давхарга
])
# 3. СҮЛЖЭЭГ ТОХИРУУЛАХ
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
# 4. СУРГАЛТ ХИЙХ
print("Сургалт эхлэж байна...")
history = model.fit(
X_train,
y_train,
epochs=100,
batch_size=2,
verbose=0 # Дэлгэцэд хэт олон мэдээлэл харуулахгүй
)
# 5. ШИНЭ ӨГӨГДӨЛ ДЭЭР ТААМАГЛАЛ ХИЙХ
# Шинэ өргөдөл: [туршлага, оноо, ярианы чадвар, боловсрол]
new_applicants = np.array([
[3, 72, 0.6, 1], # 1-р өргөдөл
[6, 85, 0.8, 2], # 2-р өргөдөл
[1, 40, 0.1, 0] # 3-р өргөдөл
])
predictions = model.predict(new_applicants)
# 6. ҮР ДҮНГ ХАРУУЛАХ
print("\n" + "="*50)
print("ШИНЭ ӨРГӨДӨЛҮҮДИЙН ШИЙДВЭР:")
print("="*50)
for i, (applicant, pred) in enumerate(zip(new_applicants, predictions)):
probability = pred[0]
decision = "АЖИЛД АВАХ" if probability > 0.5 else "АЖИЛД АВАХГҮЙ"
print(f"\n{i+1}-р өргөдөл:")
print(f" Туршлага: {applicant[0]} жил")
print(f" Оноо: {applicant[1]}/100")
print(f" Ярианы чадвар: {applicant[2]:.1%}")
print(f" Боловсрол: {['Бага', 'Дунд', 'Дээд'][int(applicant[3])]}")
print(f" Магадлал: {probability:.2%}")
print(f" ШИЙДВЭР: {decision}")
# 7. СУРГАЛТЫН ТҮҮХИЙГ ХАРУУЛАХ
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(history.history['loss'])
plt.title('Сургалтын алдаа')
plt.xlabel('Эпох')
plt.ylabel('Алдаа')
plt.subplot(1, 2, 2)
plt.plot(history.history['accuracy'])
plt.title('Сургалтын нарийвчлал')
plt.xlabel('Эпох')
plt.ylabel('Нарийвчлал')
plt.tight_layout()
plt.show()
# 8. ЗАГВАРЫН ДЭЛГЭРЭНГҮЙ МЭДЭЭЛЭЛ
print("\n" + "="*50)
print("ЗАГВАРЫН ДЭЛГЭРЭНГҮЙ МЭДЭЭЛЭЛ:")
print("="*50)
model.summary()
Sunday, October 19, 2025
Өгөгдлийн шинжилгээ ба Эрдэс боловсруулалтын технологи
Эрдэс боловсруулалтын салбарт өгөгдлийн шинжилгээ нь үйлдвэрлэлийн үр ашгийг дээшлүүлэх, зардлыг бууруулах, байгаль орчноо хамгаалах зорилгоор амжилттай хэрэгжиж байна. Орчин үеийн уул уурхайн үйлдвэрүүд тоног төхөөрөмжөөс олборлож буй өгөгдлийг боловсруулах замаар үйл явцыг оновчтой болгож, ашигт малтмалын баяжмалын гарцыг нэмэгдүүлдэг.
Эрдэс боловсруулалтын үйл явцын өгөгдлийн шинжилгээ нь хүдэр бутлах, нунтаглах, баяжуулах, хатаах зэрэг үе шатуудад явагддаг. Өгөгдлийн шинжилгээг ашиглан хүдэр дэх ашигт малтмалын агуулга, шинж чанарыг тодорхойлох, боловсруулалтын параметрүүдийг (жишээ нь: бутлуурын тохиргоо, флотацийн реагентын тун) зөв сонгох боломжтой болсон.
Машин сургалтын алгоритмууд нь эрдэс боловсруулалтын үйлдвэрлэлийн өгөгдөлд дүн шинжилгээ хийж, оновчтой үйл ажиллагааны горимыг санал болгодог. Жишээлбэл, флотацийн процессын үр дүнг урьдчилан таамаглах, бөөмийн хэмжээний тархалтыг хянах, эрчим хүчний хэрэглээг бууруулах зэрэг асуудлуудыг шийдвэрлэхэд өгөгдлийн шинжилгээг өргөн ашиглаж байна.
Дараагийн түвшний хэрэглээг "Ухаалаг уурхай" (Smart Mining) гэж нэрлэдэг бөгөөд бодит цагын мэдээлэл, IoT төхөөрөмж, дижитал ихэр технологийг нэгтгэсэн цогц систем юм. Энэ нь уурхайн үйл ажиллагааг тасралтгүй хянаж, асуудлыг урьдчилан олж илрүүлэх, засвар үйлчилгээг төлөвлөх, аюулгүй байдлыг дээшлүүлэх боломжийг олгодог.
Өгөгдлийн шинжилгээ нь эрдэс боловсруулалтын салбарт шинэ эринийг нээж, уламжлалт арга барилыг шинэчилж байна. Энэ нь зөвхөн эдийн засгийн үр ашигтай бус харин байгаль орчинд ээлтэй, тогтвортой хөгжлийг хангахад чухал хувь нэмэр оруулж байна. Ирээдүйд тохируулгатай боловсруулалт (Precision Mineral Processing) нь салбарын гол чиг хандлага болж, өгөгдөлд суурилсан шийдвэр гаргалт улам бүр нэмэгдэх төлөвтэй байна.
Saturday, March 29, 2025
УСНЫ БАКНЫ ТҮВШИНГ ФАЗЗИ-ЛОЖИКООР УДИРДАХ ПРОГРАММ (ЖИШЭЭ)
Fuzzy Logic-аар усны бакны түвшинг удирдах нь сонсогдож байгаа шиг нарийн төвөгтэй боловч логик алхамуудыг дараалан хийвэл хялбархан хэрэгжүүлэх боломжтой.
Fuzzy Logic системийн үндсэн алхамууд:
Fuzzy Logic систем нь оролт, боловсруулалт, гаралт гэсэн 3 үндсэн хэсгээс бүрдэнэ.
(A) Оролтын хувьсагч (Input):
Усны бакны түвшинг удирдахдаа дараах оролтуудыг авч болно:
Түвшний алдаа (Error, e) = Хүссэн түвшин (Desired Level) - Одоогийн түвшин (Current Level)
Түвшний өөрчлөлт (Δe) = Одоогийн алдаа - Өмнөх алдаа
(B) Fuzzy олонлогууд ба гишүүнчлэл (Membership Functions):
Оролт/гаралтыг "Fuzzy олонлог"-оор тодорхойлно. Жишээ нь:
Алдаа (e): "Сөрөг их" (Negative Large), "Сөрөг бага" (Negative Small), "Тэг" (Zero), "Эерэг бага" (Positive Small), "Эерэг их" (Positive Large)
Өөрчлөлт (Δe): "Буурах" (Decreasing), "Тогтмол" (Steady), "Өсөх" (Increasing)
Гаралт (Насосны хурд): "Унтраах" (Off), "Удаан" (Slow), "Дунд" (Medium), "Хурдан" (Fast)
(C) Дүрэм (Fuzzy Rules):
"IF-THEN" дүрмүүдийг тодорхойлно. Жишээ нь:
IF алдаа "Тэг" AND өөрчлөлт "Тогтмол" THEN насос "Унтраах"
IF алдаа "Эерэг бага" AND өөрчлөлт "Өсөх" THEN насос "Удаан"
IF алдаа "Сөрөг их" THEN насос "Хурдан"
(Дүрмүүдийг системийн шаардлагад тохируулан өөрчилнө.)
(D) Дефаззификаци (Defuzzification):
Fuzzy дүрмүүдээр гарсан үр дүнг бодит тоо (насосны хурд) болгон хувиргана. Ихэвчлэн "Центроидын арга" (Centroid Method) хэрэглэдэг.
Ийнхүү насосны хурдыг 13,6% тогтоох даалгавар өгч байна.
Thursday, March 27, 2025
Tuesday, March 25, 2025
ӨГӨГДЛИЙН ШИНЖЛЭХ УХААН (DATA SCIENCE) УУЛ УУРХАЙ, ЭРДЭС БОЛОВСРУУЛАЛТЫН САЛБАРТ ЯМАР ХЭРЭГТЭЙ ВЭ?
Өгөгдлийн шинжлэх ухааныг (Data Science) Эрдэс боловсруулалтын технологид хэрэглэгдэх нь
Өгөгдлийн шинжлэх ухаан нь эрдэс боловсруулалтын салбарт үйлдвэрлэлийн үр ашиг, чанарыг дээшлүүлэх, зардлыг бууруулах, байгаль орчинд ээлтэй шийдлүүдийг боловсруулахад чухал үүрэг гүйцэтгэдэг. Эрдэс баялгийн салбарт дараах чиглэлүүдэд өгөгдлийн шинжлэх ухааны аргууд өргөн хэрэглэгдэнэ.
1. Уурхайн олборлолтын үр ашгийг дээшлүүлэх
- Машин сургалт (ML) ба хиймэл оюун (AI) ашиглан уурхайн ордын загварчлал, илрүүлэлтийг нарийвчлалтай хийх.
- Өгөгдөлд тулгуурлан олборлолтын төлөвлөгөөг оновчтой боловсруулах.
- IoT (юмсын интернет) болон "сенсор технологи"-ын тусламжтай уурхайн аюулгүй байдлыг хянах.
2. Боловсруулалтын процессын оновчтой болгох
- Түүхий эд (хүдэр)-ийн чанарыг таамаглах– ML загварууд ашиглан хүдэр дэх ашигт бодисын агуулгыг урьдчилан тооцоолох.
- Флотаци, гидрометаллурги зэрэг процессуудыг автоматжуулах – Өгөгдлийн дүн шинжилгээгээр химийн урвалж, эрчим хүчний хэрэглээг оновчтой болгох.
- Алдаа, зогсолтыг урьдчилан таних – Predictive Maintenance (урьдчилан сэргийлэх засвар) аргаар тоног төхөөрөмжийн эвдрэлийг урьдчилан мэдэх.
3. Байгаль орчны нөлөөллийг бууруулах
- Уурхайн хаягдлын менежмент– Дата-аналитик ашиглан хаягдлыг дахин боловсруулах, бохирдлыг хянах.
- Нүүрс, металлын ялгаралтыг мониторинг хийх – Цаг уурын өгөгдөлтэй харьцуулан үйлдвэрлэлийн нөлөөллийг үнэлэх.
4. Эрдэс баялгийн зах зээлийн судалгаа
- Үнийн таамаглал – Өгөгдлийн шинжилгээгээр металлын үнийг урьдчилан тооцоолох.
-Эрэлт, нийлүүлэлтийн тэнцвэрийг шинжлэх – Дэлхийн эрдэс баялгийн зах зээлийн чиг хандлагыг тодорхойлох.
5. Робот технологи, автономит систем
- Ухаалаг машин, drone-ууд – Уурхайн хайгуул, хяналтыг автоматжуулах.
- Computer Vision буюу дүрсийг таних – Хүдэр ялгах, ангилах процессууд, хүдрийн гранулометрийн бүхэллэгийг онлайнаар хэмжэих , хиймэл оюунаар (AI) удирдах
Дүгнэлт
Өгөгдлийн шинжлэх ухаан нь эрдэс боловсруулалтын салбарт автоматжуулалт, оновчтой болгох, урьдчилан таамаглах чадварыг нэмэгдүүлснээр уламжлалт аргуудыг хувьсгаж байна.
Ирээдүйд AI, IoT, Big Data-ийн хослосноо энэ салбарт илүү их шинэлэг шийдлүүдийг бий болгох болно.
Monday, March 24, 2025
ТЕХНОЛОГИЙН ПРОЦЕССЫГ УДИРДАХАД ХИЙМЭЛ ОЮУНЫГ ХЭРЭГЛЭХ НЬ
Баяжуулалтын процессыг удирдахад хиймэл оюуныг хэрэглэх бүрэн боломжтой бөгөөд Fuzzy Logic буюу Бүдэг логикийг практикт амжилттай хэрэглэж болох юм. Үүний тулд бид Python программыг ашиглан удирдагын код дээр тайлбарлав.
Фаззи логик (Fuzzy Logic) гэдэг нь уламжлалт (сонгодог) логикийн "0 ба 1" (Үгүй эсвэл Тийм) гэсэн хоёртын системээс ялгаатай, "Бүдэг логик (хэмжигдэхүүнийг бүдгэрүүлсэн)" дээр суурилсан шийдвэр гаргах арга юм. Энэ нь тодорхой бус нөхцөл байдал, өөрчлөгдөж буй орчинд оновчтой шийдвэр гаргахад тохиромжтой.
Фаззи логикийн үндсэн ойлголт:
1. Лингвистик хувьсагч: "Маш хүйтэн", "дулаан", "маш халуун" гэх мэт үгсээр илэрхийлэгддэг.
2. Фаззи олонлогууд: Хэмжигдэхүүнийг 0-ээс 1-ийн хооронд "хэр бага", "дунд", "их" гэх мэт гишүүнчлэлээр тодорхойлдог.
3. Дүрэм (Rules): "Хэрэв температур "халуун" бол сэнсний хурдыг "их" болго гэх мэт логик дүрмүүд.
Автомат удирдлагад хэрхэн ашиглах вэ?
Фаззи логикийг автомат системд (жишээ нь: ухаалаг барилга, робот, автомашин, үйлдвэрлэлийн процесс) дараах алхмуудаар ашиглана:
1. Оролтын параметрүүдийг фазид хувиргах (Fuzzification)
- Тодорхой утгыг (жишээ нь: температур = 30°C) "хүйтэн", "дулаан", "халуун" гэх мэт фаззи олонлогт хувиргана.
2. Дүрмийн санг боловсруулах
- Мэдлэг, туршлагад суурилсан "IF-THEN" дүрмүүдийг тодорхойлно.
Жишээ:
- IF температур "халуун" AND чийгшил "их" бол THEN кондиционерын хурдыг "их" болгох.
- IF тээрмийн ачаалал "их" бол THEN хурдыг "бага" болгох.
3. Дүгнэлт гаргах (Inference)
- Оролтын утгууд болон дүрмүүдийг харьцуулан, гарч болох үр дүнг тооцоолно.
4. Фаззи үр дүнг тодорхой утгад шилжүүлэх (Defuzzification)
- "Кондиционер 70% хурдтай ажиллах" гэх мэт тодорхой командыг гаргана.
5.Фаззи Ложик системийн давуу тал:
- Нарийн математик загвар шаарддаггүй.
- Хүний шийдвэр гаргах логикийг имитаци хийдэг.
- Төвөгтэй, шугаман бус системд тохиромжтой.
Фаззи ложикийн хэрэглээг ХӨН-ын тээрмийг хэрхэн автоматаар удирдах жишээн дээр авч үзье.
Бидний жишээн дээр ХӨН-ын тээрмийн дараах параметрүүдийг авч үзэв.
- Тэжээлийн бүхэллэг (Feed size)
- Тээрмийн ачаалал (Mill Load)
- Тээрмийн эргэлийн хурд (Mill Speed)
- Тээрмийн бүтээл (Тэжээлийн конвейерийн жин, эсвэл хурд)
Дээрх параметрүүдийн эхний 3 нь оролтын параметр ба харин эпгээр параметрүүдийн утгаар тээрмийн бүтээлийг (гаралтын ) автоматаар тохируулах юм.
Бид Python программ дээр удирдлагын кодыг бичихдээ skfuzzy санг ашиглах бөгөөд эхдээд шаардлагатай сангуудыг ачаална.
Үүний дараа удирдлагын хувьсагчууд, тэдгээрийн өөрчлөгдөх диапазоныг тодорхойлно.
Тухайн хугацаанд мэдрэгчүүдээс (датчик) авсан утгуудыг ашиглан тээрмийн бүтээл буюу конвейерийн хурдыг чухам хэд болгох гаралтын параметрийг тодорхойлно. Үүнийг дараах кодонд үзүүлэв.
Энэхүү жишээн дээр тээрмийн бүтээлийг (тэжээлийн конвейерийн хурдаар) 54.18% тохируулах командыг компьютер өгнө.









