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

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

Friday, January 23, 2026

ХАГАС ӨӨРӨӨ НУНТАГЛАЛТЫН ТЭЭРМИЙН (SAG) ЧАДАЛ СОНГОХ ТООЦОО



ЭНЭХҮҮ ПАЙТОН КОД НЬ ХҮДРИЙН ХАТУУЛГЫН ИНДЕКС A*b АШИГЛАН (JKSIMMET) ХӨН-ЫН ТЭЭРМИЙН ЧАДЛЫГ ТООЦНО.
ПРОГРАММЫН ӨГӨГДӨЛ:
 		
 A*b = 42.5
 Wi = 17.8 kWh/t
 F80 = 304000 micron (304 mm)
 T80 = 1700 micron (1.7 mm)
 Q = 1812 tph
 
#-------------------------------------------------------------------------
# SAG тээрмийн чадлын тооцоог хатуулгын A*b индекс ашиглан тооцох программ
#-------------------------------------------------------------------------

import math
from dataclasses import dataclass

# ----------------- Өгөгдлийн бүтэц ----------------- #

@dataclass
class SagOreData:
    ab: float       # JK A*b
    wi: float       # Bond ball mill Wi, kWh/t
    f80_micron: float  # SAG feed F80, micron
    t80_micron: float  # SAG product T80 (BM feed), micron
    q_tph: float       # Fresh feed rate, t/h


@dataclass
class SagCalcParams:
    ab_ref: float = 40.0    # Reference A*b for "medium" ore
    gamma: float = 0.7      # Exponent in C_Ab = (Ab_ref / Ab)^gamma
    c_oper: float = 1.3     # Operating condition factor (fill, speed, etc.)
    eta_drive: float = 0.97 # Drive efficiency
    eta_motor: float = 0.97 # Motor efficiency
    sf: float = 1.10        # Safety factor for installed power


@dataclass
class SagResult:
    e_bond_sag: float   # Bond reference energy F80->T80, kWh/t
    c_ab: float         # Hardness factor from A*b
    c_oper: float       # Operating factor
    e_sag: float        # Final SAG specific energy, kWh/t
    p_net_kw: float     # Net SAG power, kW
    p_inst_kw: float    # Installed SAG power, kW


# ----------------- Туслах функцууд ----------------- #

def bond_energy_f_to_t(wi: float, f80_micron: float, t80_micron: float) -> float:
    """
    Bond equation for size reduction F80 -> T80.
    E (kWh/t) = 10 * Wi * (1/sqrt(T80) - 1/sqrt(F80))
    F80, T80 in micron.
    """
    f80 = max(f80_micron, 1.0)
    t80 = max(t80_micron, 1.0)

    term = (1.0 / math.sqrt(t80)) - (1.0 / math.sqrt(f80))
    e_bond = 10.0 * wi * term
    return max(e_bond, 0.0)


def hardness_factor_ab(ab: float, ab_ref: float, gamma: float) -> float:
    """
    C_Ab = (Ab_ref / Ab)^gamma
    - Ab < Ab_ref -> C_Ab > 1 (hard ore, more energy)
    - Ab > Ab_ref -> C_Ab < 1 (soft ore, less energy)
    """
    ab_eff = max(ab, 1e-6)
    return (ab_ref / ab_eff) ** gamma


def sag_power_from_ab(ore: SagOreData, params: SagCalcParams) -> SagResult:
    # 1) Bond reference energy for coarse grinding: F80 -> T80
    e_bond_sag = bond_energy_f_to_t(
        wi=ore.wi,
        f80_micron=ore.f80_micron,
        t80_micron=ore.t80_micron
    )

    # 2) Hardness factor from A*b
    c_ab = hardness_factor_ab(
        ab=ore.ab,
        ab_ref=params.ab_ref,
        gamma=params.gamma
    )

    # 3) Final SAG specific energy with operating factor
    e_sag = e_bond_sag * c_ab * params.c_oper  # kWh/t

    # 4) Net power: P_net (kW) = E_sag (kWh/t) * Q (t/h)
    p_net_kw = e_sag * ore.q_tph

    # 5) Installed power (mechanical + electrical losses, safety factor)
    p_inst_kw = p_net_kw / (params.eta_drive * params.eta_motor) * params.sf

    return SagResult(
        e_bond_sag=e_bond_sag,
        c_ab=c_ab,
        c_oper=params.c_oper,
        e_sag=e_sag,
        p_net_kw=p_net_kw,
        p_inst_kw=p_inst_kw
    )


# ----------------- ЖИШЭЭ: Эрдэнэттэй төстэй өгөгдөл ----------------- #

if __name__ == "__main__":
    # Таны өгсөн өгөгдөл:
    # A*b = 42.5, Wi = 17.8 kWh/t,
    # F80 = 304000 micron (304 mm),
    # T80 = 1700 micron (1.7 mm),
    # Q = 1812 tph
    ore_data = SagOreData(
        ab=42.5,
        wi=18,
        f80_micron=304000.0,
        t80_micron=1700.0,
        q_tph=1812
    )

    # Тооцооны параметр (эхний таамаг):
    calc_params = SagCalcParams(
        ab_ref=40.0,   # "дунд" хүдэр
        gamma=0.7,     # A*b-ийн нөлөөний зэргийн үзүүлэлт
        c_oper=1.3,    # ажиллагааны нөхцөл (fill, speed, etc.)
        eta_drive=0.97,
        eta_motor=0.97,
        sf=1.10
    )

    result = sag_power_from_ab(ore_data, calc_params)

    print("======= SAG ТЭЭРМИЙН ЧАДЛЫН ТООЦОО (A*b ашигласан) =======")
    print(f"Бондын томьёогоор (F80->T80): {result.e_bond_sag:6.3f} кВт ц/т")
    print(f"Хатуулгын фактор C_Ab       : {result.c_ab:6.3f} (-)")
    print(f"Vйл ажиллагааны фактор      : {result.c_oper:6.3f} (-)")
    print(f"SAG тээрмийн хувийн энерги  : {result.e_sag:6.3f} кВт ц/т")
    print(f"SAG тээрмийн цэвэр чадал    : {result.p_net_kw/1000:6.2f} МВт")
    print(f"Суулрьлагдсан чадал         : {result.p_inst_kw/1000:6.2f} МВт")
    
    

ПОЛИНОМ РЕГРЕСС (МАШИН СУРГАЛТ)




Машин сургалт ба өгөгдлийн шинжилгээнд регрессийн шинжилгээ нь гол үүрэгтэй.  Python -ы NUMPY сангийн ploy1d функцийг ашиглан полином регрессийн шигжилгээг амархан гүйцэтгэж болно.
Уг программаар полиномын зэргийг гараар өгч тухайн олон гишүүнт загварыг өөрийн хүссэнээр тооцоолно:


import matplotlib.pyplot as plt
import numpy as np

# туршилтын vр дvн
x = [-100, -75, -50, -25, 0, 25, 50, 75, 100]
y = [4.06, 6.78, 9.49, 16.27, 40.67, 97.62, 146.63, 151.85, 162.70]
X = np.linspace(-100, 100, 100)
# NUMPY сангийн полином регрессийн коэффициентуудыг vнэлэх
while True:
    try:
        m = eval(input("\n Полиномын зэрэг ==> "))
        mymodel = np.poly1d(np.polyfit(x, y, m))
        print(mymodel)
        plt.title('Полином регресс , n=' + str(m));
        plt.xlabel('x');
        plt.ylabel('y')
        plt.grid(True)
        plt.scatter(x, y)
        plt.plot(X, mymodel(X))
        plt.show()
    except SyntaxError:
        break
input("Боллоо, дурын товч дарна уу?")

ФЛОРТАЦИЙН МАШИНЫ ТООЦОО (PYTHON)



Энэхүү программ нь флотацийн машин сонгох тооцоолол гүйцэтгэх ба хэрэглэгч бага зэрэг өөрчлөн өөрийн төслийн тооцоог хялбар гүйцэтгэж болно.
Нөгөө талаас Python дээр class бүтцийг хэрхэн ашиглах талаар зөвлөмж болох юм.

import math
from dataclasses import dataclass

# ============================================= 
# 1.Лабораторийн кинетик болон пульпын мэдээлэл
# =============================================

@dataclass
class SlurryConditions:
    Q_s_tph: float          # Хүчин чадал [т/ц]
    w_s: float              # Хатуугийн агуулга (жишээ нь 32%-ийг 0.32 гэж өгнө)
    rho_s: float = 2.8      # Хүдрийн нягт [т/м3]
    rho_w: float = 1.0      # Шингэний нягт [т/м3]

    def slurry_flows(self):# Пульпын урсгалын дэд программ
        """
        Тооцох нь:
            Q_slurry_mass [t/h],
            Q_water_mass [t/h],
            Q_slurry_vol [m3/h]
        """
        # Урсгалын нийт жин [т/ц]
        Q_slurry_mass = self.Q_s_tph / self.w_s

        # Усны нийт жин [т/ц]
        Q_water_mass = Q_slurry_mass - self.Q_s_tph

        # Урсгалын эзэлхүүн [м3/ц]
        Q_s_vol = self.Q_s_tph / self.rho_s
        Q_w_vol = Q_water_mass / self.rho_w

        Q_slurry_vol = Q_s_vol + Q_w_vol

        return Q_slurry_mass, Q_water_mass, Q_slurry_vol


@dataclass
class LabKinetics:
    k_lab: float      # Лабораторийн кинетикийн тогтмол [1/мин]
    R_inf: float      # Хамгийн их авалт (0-1)

    def ideal_time_for_recovery(self, R_target: float) -> float:
        """
        Compute ideal residence time (no scale-up) for target recovery.
        """
        if R_target >= self.R_inf:
            raise ValueError("R_target must be less than R_inf.")
        t_ideal = -1.0 / self.k_lab * math.log(1.0 - R_target / self.R_inf)
        return t_ideal


# ==========================================
# 2. Флотацийн машины тооцоо
# ==========================================

@dataclass
class RougherDesign:
    slurry: SlurryConditions
    kinetics: LabKinetics
    R_target: float          # Зорилтот металл авалт (0-1)
    scale_factor: float      # Лаб-аас үйлддвэрлэлд шилжих коэфф-т
    cell_volume_m3: float    # Нэг камерийн эзэлхүүн [м3]

    def design(self):
        # ---- Slurry flow ----
        Q_slurry_mass, Q_water_mass, Q_slurry_vol = self.slurry.slurry_flows()

        # ---- Time: lab -> plant ----
        t_ideal = self.kinetics.ideal_time_for_recovery(self.R_target)
        t_design = t_ideal * self.scale_factor

        # ---- Total required volume ----
        V_total = Q_slurry_vol * (t_design / 60.0)   # [m3]

        # ---- Number of cells ----
        N_cells = math.ceil(V_total / self.cell_volume_m3)
        V_installed = N_cells * self.cell_volume_m3
        t_actual = V_installed / Q_slurry_vol * 60.0  # [min]

        return {
            "Q_slurry_mass_tph": Q_slurry_mass,
            "Q_water_mass_tph": Q_water_mass,
            "Q_slurry_vol_m3ph": Q_slurry_vol,
            "t_ideal_min": t_ideal,
            "t_design_min": t_design,
            "V_total_required_m3": V_total,
            "cell_volume_m3": self.cell_volume_m3,
            "N_cells": N_cells,
            "V_installed_m3": V_installed,
            "t_actual_min": t_actual
        }


# ==================================================
# 3. Optional: first-order recovery check for a bank
# ==================================================

def bank_recovery_first_order(k: float, t_cell_min: float, N_cells: int, R_inf: float = 0.95) -> float:
    """
    Approximate recovery in a bank of N CSTRs in series
    using first-order kinetics.

    k          : rate constant [1/min]
    t_cell_min : residence time per cell [min]
    N_cells    : number of cells
    R_inf      : ultimate recovery (0-1)

    Returns:
        R_bank : total recovery (0-1)
    """
    # Single CSTR recovery (underlying form)
    # C_out/C_in = 1 / (1 + k * t_cell)
    # Overall bank: (C_out/C_in)^N
    theta = 1.0 / (1.0 + k * t_cell_min)
    C_out_over_C_in = theta ** N_cells
    R_bank = R_inf * (1.0 - C_out_over_C_in)
    return R_bank


# =======================================================================
# 4. ЖИШЭЭ: 1812 т/ц хүчин чадалтай си-мо цехийн үндсэн флотацийн тооцоо
#    хатуугийн агуулга - 32% , Зорилтот металл авалт (R_target) = 92%
# =======================================================================

if __name__ == "__main__":
    # ---- Inputs you can change ----
    Q_s_tph = 1812.0
    w_s = 0.32
    rho_s = 2.8

    R_target = 0.92         # 92% target rougher recovery
    k_lab = 0.25            # 1/min (example lab kinetic constant)
    R_inf = 0.95            # 95% ultimate
    scale_factor = 1.5      # lab -> plant scale-up
    cell_volume_m3 = 160.0  # chosen cell size

    # ---- Build objects ----
    slurry = SlurryConditions(Q_s_tph=Q_s_tph, w_s=w_s, rho_s=rho_s)
    kinetics = LabKinetics(k_lab=k_lab, R_inf=R_inf)
    rougher = RougherDesign(
        slurry=slurry,
        kinetics=kinetics,
        R_target=R_target,
        scale_factor=scale_factor,
        cell_volume_m3=cell_volume_m3
    )

    # ---- Run design ----
    results = rougher.design()

    # ---- Үр дүнг хэвлэх ----
    print("=== Cu-Mo Үндсэн флотацийн төсөл ===")
    print(f"Хүчин чадал          : {Q_s_tph:.1f} т/ц")
    print(f"Хатуугийн агуулга (%): {w_s*100:.1f} %")
    print(f"Пульпын урсгал       : {results['Q_slurry_mass_tph']:.1f} т/ц")
    print(f"Урсгал дахь ус       : {results['Q_water_mass_tph']:.1f} т/ц")
    print(f"Пульпын эзэлхүүн     : {results['Q_slurry_vol_m3ph']:.1f} m3/h")
    print()
    print(f"Лабораторийн  k      : {k_lab:.3f} 1/мин")
    print(f"Лаб. авалт  R_хяз    : {R_inf*100:.1f} %")
    print(f"Зорилтот авалт R     : {R_target*100:.1f} %")
    print(f"Флот.хугацаа         : {results['t_ideal_min']:.2f} мин")
    print(f"Флот.хугацаа (төсөл) : {results['t_design_min']:.2f} мин")
    print()
    print(f"Шаардлагатай  V      : {results['V_total_required_m3']:.1f} м3")
    print(f"Камерийн      V      : {results['cell_volume_m3']:.1f} м3")
    print(f"Камерийн тоо         : {results['N_cells']}")
    print(f"Нийт эзэлхүүн        : {results['V_installed_m3']:.1f}м3")
    print(f"Флот.хугацаа(жинхэнэ): {results['t_actual_min']:.2f} мин")
    
    

Monday, December 1, 2025

ХЭВЛҮҮЛСЭН МАТЕРИАЛЫН ЖАГСААЛТ


  1. С.Давааням, Г.Даваацэрэн, Я.Пүрвээ, Зэс-молибдены хүдрийн баяжуулалт, Хүдэр бэлдэх процесс, Эрдэнэт үйлдвэрийн ажилчид, техникумын оюутнуудад зориулсан сурах бичиг,1987, Эрдэнэт
  1. Ц.Эрдэнэжав, Г. Даваацэрэн, Некоторые результаты исследования гидроциклонов в цикле рудного измельчения. Эрдэм шинжилгээний бичиг, Улаанбаатар №1 (9),1989, с 68-77
  1. Г.Даваацэрэн, Гидроциклоны элсний хошууны диаметрийг тээрмийн бүтээмжээр үнэлэх. ПТДС -ийн Эрдэм шинжилгээний бичиг,I/II ,1990, х. 190-194.
  1. Ш.Отгонбилэг, Г.Даваацэрэн, Влияние вкрапленности медных сульфидов руд месторождений Эрдэнэтийн  Овоо на технологические показатели., Монгол Улсын Их Сургууль, Эрдэм шинжилгээний бичиг №2(118), 1996, Улаанбаатар, х. 55-59.
  1. Ж.Баатархуу, Бортников А. В., Г.Даваацэрэн, и др. Совершенствование технологии рудоподготовки  в корпусе самоизмельчения ОФ, СП” Эрдэнэт”// Обогашение руд. -№2.-1996г-С.12-16
  1. Бортников А.В., Л.Дэлгэрбат, Г.Даваацэрэн, Результаты имитационного моделирования мельниц само и полу-самоизмельчения. Монгол улсын их сургууль, Физик-электроникийн сургууль, Эрдэм шинжилгээний бичиг, №3(132), 1998, Улаанбаатар, х. 268-273
  1. Ж.Баатархуу, Бортников А.В., Г.Даваацэрэн, и др. Интенсификация процесса рудоподготовки  с использованием мельниц мокрого самизмельчения //Горный журнал.№2. -1998. -С.51-54
  1. Ш.Отгонбилэг, Г.Даваацэрэн, Ж.Баатархуу, Влияние размера вкрапленности сульфидов меди в рудах на технологические  показатели  их обогашения //Горный журнал. -№2.-1998г.-С.47-48
  1. Ж.Баатархуу, С .Давааням, Г.Даваацэрэн, Результаты испытания мелющих шаров различного размера на технологические показатели измельчения//Научно-практическая конференция СП”Эрдэнэт”. -1998г. г.Эрдэнэт. Тезисы.-С. 52
  1. Ш.Гэзэгт, С. Давааням, Ж.Баатархуу, Г.Даваацэрэн, А.В.Бортников, В.А.Никитин, Внедрение технологии полусамоизмелчения на СП”Эрдэнэт” //Обогащение руд. – 1998. -№3.-С.15-21
  1. Ж.Баатархуу, Г.Даваацэрэн, Л.Ф.Биленко, Пути повышения показателей цикла измельчения на обогатительной фабрике ГОКа “Эрдэнэт” //Обогашение руд.-1998. -№6. -С.3-7.
  1. А.В. Бортников, В.Н.Лукницкий, В.И. Соколов, Ж.Баатархуу, Г. Даваацэрэн, Исследование  процесса одностадильного полусамоизмельчения  и возможностей использования его при  реконструкции корпуса самоимельчения ГОКа ” Эрдэнэт” // Обогашение руд. -№6-1998г-С.8-11
  1. А.В.Бортников, В.А.Никитин, В.В.Потапов, Д.Даваасамбуу, Г.Даваацэрэн, Изучение возможности позабойного усреднения руды по крепости с целью увеличения производительности мельниц полусамоизмельчения//Обогащение руд,2000.№5, с. 16-20.
  1. А.В.Бортников, И.Ш.Сатаев, В.А.Никитин, Ж.Баатархуу, Г.Даваацэрэн, Ц.Баяртай, А.Д.Самуков, Эффективность применения шаров диаметром 120 мм в процессе полусамоизмельчения //Обогашение руд.- 2001. -№2. -С.11-12.
  1. Ж.Баатархуу, Г.Даваацэрэн, Л.Ф.Биленко, Об одном из путей интенсификации процесса измельчения в шаровых  мельницах МШЦ-5500х6500 на комбинате” Эрдэнэт”// Обогашение руд. -№3.-2000г- С.3-5
  1. Ж.Баатархуу, Г.Даваацэрэн, Г.Жаргалжав, О причинах  разрушения разнопрочных смесей в шаровой мельнице //Горный журнал, 2000г, №4.-С.32-35 г.Улаанбаатар, Монголия
  1. Г.Даваацэрэн, Ж.Баатархүү, П.Оюунсүрэн, Ц.Туяа, Эрдэнэт УБҮ-ийн МШЦ-5500х6500 маркийн тээрэмд янз бүрийн хэмжээтэй бөмбөлөг хэрэглэж тээрэмдэлтийг эрчимжүүлэх асуудалд//Уул-уурхайн сэтгүүл, 2000, №3 х.16-19
  1. Г.Даваацэрэн, П.Оюунсүрэн, Б.Бат-Онолт, Янз бүрийн давс хэрэглэж нунтаглалт болон флотацийн процессийг эрчимжүүлэх асуудалд//Уул-уурхайн сэтгүүл, 2001, №3 х.21-24
  1. Бортников А.В., Самуков А.Д., Г.Даваацэрэн, Интенсификация  процесса  полусамоизмельчения на СП” Эрдэнэт”, её результаты и перспективы, в кн.Новые решения в технике и технологии добычи и переработки медно-молибденовых руд. С.64-72
  1.  Бортников А.В., Самуков А.Д.,Никитин В.А., Г.Даваацэрэн, Интенсификация  процесса  полусамоизмельчения на СП” Эрдэнэт”// Обогащение руд. 2002 г. №3
  1. Л.Дэлгэрбат, Г.Даваацэрэн, Имитационное моделирование процесса полного и полусамоизмельчения., в кн.Новые решения в технике и технологии добычи и переработки медно-молибденовых руд. С.80-85
  1. Г.Даваацэрэн, П.Оюунсүрэн, Б.Намуунгэрэл, Б.Бат-онолт, Новая  методика  расчёта технологических  схем продуктов обогащения. в кн.Новые решения в технике и технологии добычи и переработки медно-молибденовых руд. С.120-123
  1. Л.Дэлгэрбат, Ж.Лхагва, Г.Даваацэрэн, Экспертно-оптимизационноеуправление процессами измельчения и флотации медно-молибденовых руд. в кн.Новые решения в технике и технологии добычи и переработки медно-молибденовых руд. С.219-225
  1. Ц.Энхболд, Г.Даваацэрэн, Г.Цогт, Р.Дэлгэр, Бумбат үйлдвэрийн баяжуулах фабрикийн технологийн шинэчлэлт// Уул уурхайн сэтгүүл, 2004/№1(22), 11-14
  1. Ц.Энхболд, Г.Даваацэрэн,  Цагаан суваргын зэсийн ордыг ашиглан катодын зэс үйлдвэрлэх технологийн талаар// Уул уурхайн сэтгүүл, 2004/№1(22), 14-18
  1. Г.Даваацэрэн, Нунтаглалтын технологийн схемийн тооцоог компьютер хэрэглэн гүйцэтгэх нь// Уул уурхайн сэтгүүл, 2004/№1(22), 18-20.
  2. Д.Даваасамбуу, Г.Даваацэрэн, Я.Пүрвээ, Ашигт малтмалын ордын санхүү-эдийн засгийн үнэлгээ. Нэг сэдэвт бүтээл, Улаанбаатар ,2003
  1. Г.Даваацэрэн, Баяжуулах үйлдвэрийн хүдрийн бутлалт, нунтаглалтын төслийн зарим асуудалд,//Уул-уурхайн сэтгүүл,2004 ,2, х.11-15
  1. Г.Даваацэрэн, Я.Пүрвээ, Д.Даваасамбуу, Захын агуулгыг эдийн засгийн аргаар үнэлэх асуудалд//Уул-уурхайн сэтгүүл, 2004, №1,
  1. Д.Даваасамбуу, Г.Даваацэрэн, Ц.Энхболд ,Зэсийн баяжмалын гидрометаллургийн процессуудын өнөөгийн төлөв байдал, Я.Гомбосүрэн-Монгол улсын уул уурхайн салбарын нэрт эрдэмтэн,Улаанбаатар хот 2004, х.97-115
  1. Г.Даваацэрэн ,Гидроциклоны тооцоо, сонголт//Уул уурхайн сэтгүүл 2004,№4
  1.  Л.Дэлгэрбат, Г.Даваацэрэн, Н.Намдаг, Д.Далайжаргал , Автоматизированная подсистема управления технологическим процессом измельчения руд в мельницах самоизмельчения, Эрдэнэт хөгжил, 2005 №3, 51-55 х.
  1. Г.Даваацэрэн, Б.Бат-Онолт, Хүдрийг хатуулгаар нь жигдрүүлэн хагас өөрөө нунтаглалтын тээрмийн бүтээмжийг дээшлүүлэх боломжийн судалгаа, Эрдэнэт хөгжил, 2005 №3, 65-67 х.
  1. Б.Нямтайшир, Д.Содном, Г.Даваацэрэн, Монголын алт (МАК) корпораци-Монгол улсын говийн бүсийн хөгжилд, Шинжлэх ухаан , технологи,  2005 №4 , 36-41 х.
  1. Г.Даваацэрэн, Б.Бат-Онолт, Д.Хүдэрмөнх, Баяжуулах үйлдвэрийн хүдэр бэлтгэх техник, технологийн хөгжил, Уул-уурхайн сэтгүүл, 2005 № 2
  1. Д.Даваасамбуу, Г.Даваацэрэн, Ашигт малтмалын ордын үйлдвэрлэлийн захын агуулгыг тодорхойлох эдийн засгийн түргэвчилсэн аргууд, Шинжлэх ухаан, технологи сэтгүүл, 2004 он, №01,42-48 х.
  1. Г.Даваацэрэн, Ж.Золжаргал, Д.Отгончимэг, Нүүрснээс шингэн түлш үйлдвэрлэх боломж, Өнөөгийн ба хэтийн төлөв ,Эрдэнэт-Хөгжил сэтгүүл,2006 он, №3,38-44 х.
  1. Ж.Золжаргал, Г.Даваацэрэн, Нүүрснээс шингэн түлш үйлдвэрлэх боломж, түүний эрсдлийг Монте-Карлогийн аргаар үнэлэх нь,Хүрэл тогоотын семинар-2006, Эрдэм шинжилгээний бага хурлын эмхтгэл, 2006, Улаанбаатар, 49-53 х.
  1. Г.Даваацэрэн, Б.Бат-Онолт, Д.Хүдэрмөнх , Хагас өөрөө нунтаглалтын тээрмийн сонголт, тооцооны асуудалд ,Уул-уурхайн сэтгүүл,УБ, 2006 №4
  1. Г.Даваацэрэн, Б.Амартүвшин, Элдэвийн нүүрсний уурхайд хуурай баяжуулалтын технологи нэвтрүүлсэн тухай,Уул уурхайн технологи, эдийн , экологи-2007 , Эрдэм шинжилгээий хурлын эмхтгэл,237-242 х, 2007 он,
  1. Г.Даваацэрэн, Ю.Хэрлэнбаяр, Т.Нандин-Эрдэнэ, Цагаан суваргын сульфидийн хүдрийн технологийн туршилтуудын үр дүн, Уул уурхайн сэтгүүл, 2008 №4, хх.15
  1. Б.Нямтайшир, Д.Содном, Г.Даваацэрэн,  Ашигт малтмалын томоохон ордуудыг ашиглаж говийн хөгжлийг цогцоор шийдэх асуудалд, Уул уурхайн сэтгүүл, 2008 №4, хх. 6
  1. Г.Цогт, Г.Даваацэрэн, Б.Баттулга, Б.Амартүвшин,  Элдэвийн уурхайд хуурай баяжуулалтын FGX-12 иж бүрэн төхөөрөмж нэвтрүүлсэн тухай, Уул уурхайн сэтгүүл, 2008 №4, хх.36
  1. Г.Даваацэрэн, Ю.Хэрлэнбаяр, Т.Нандин-Эрдэнэ, Нүүрсийг баяжуулах технологийн дэлхийн чиг хандлага, Монгол орны нүүрсийг баяжуулах асуудалд, Уул уурхайн сэтгүүл, 2008 №4, хх. 36
  1. Г.Даваацэрэн, Ц.Цэгмид, М.Базаррагчаа. Нарийнсухайтын ордын нүүрсийг баяжуулах судалгааны үр дүн, Уул уурхайн сэтгүүл, 2010 №2
  1. Г.Даваацэрэн. Нүүрсийг баяжуулах технологийн дэлхийн чиг хандлага, Геологи уул-уурхайн мэдээ сонин, 2010, №21
  1. Г.Даваацэрэн. НүүрсийггүнболовсруулахньМонголулсынирээдүйнзорилго., Геологи , уул уурхайн мэдээ сонин, 2010 оны 9 дүгээр сар 1
  1. Г.Даваацэрэн. Хагас өөрөө нунтаглалтын тээрмийг сонгох асуудалд, Уул уурхайн сэтгүүл, 2011 №2.
  1. G.Davaatseren, H.Wittmers, M.Bazarragchaa. Past, Present Situation and Future Development of Coal Processing Industry In Mongolia,XVII International Coal Preparation congress 1-6 October 2013, Istanbul, Turkey.
  1. Г.Даваацэрэн, Ц.Цэгмид, М.Базаррагчаа, Б.Сэрдамба. Качественные характеристики и обогатимость угля месторождения Нарийнсухайт, Монголия, Известия Донецкого Горного Института, Все Украйнский научно-технический журнал, №2 (33), 2013, стр.16.
  1. Г.Даваацэрэн, С.Хандмаа, Ж.дэлгэрцэцэг.Цагаансуваргын исэлдсэн хүдрийг боловсруулах SX/EW төслийн технологийн сонголт, Эрдэс Боловсруулалт -2014, Эрдэм шинжилгээний хурлын эмхэтгэл, 33 х. 2014, Улаанбаатар
  1. Г.Даваацэрэн, Монгол улсын нүүрс боловсруулалт, Эрдэс Боловсруулалт -2014, Эрдэм шинжилгээний хурлын эмхэтгэл, 88 х. 2014, Улаанбаатар
  1. Г.Даваацэрэн, М.Базаррагчаа, Ж.Мядагмаа, Нарийнсухайтын олон үет давхрагын нүүрсийг хуурай Allair технологиор баяжуулсан хагас үйлдвэрийн туршилтын үр дүн. Эрдэс Боловсруулалт -2014, Эрдэм шинжилгээний хурлын эмхэтгэл, 91х. 2014, Улаанбаатар
  1. Г.Даваацэрэн, Монгол улсын уул уурхайн салбарын хөгжилд мэргэжлийн холбоодын үүрэг чухал, Эрдэс Боловсруулалт -2014, Эрдэм шинжилгээний хурлын эмхэтгэл, 171х. 2014, Улаанбаатар
  1. Jambal Davaasuren, Byong-Gon Kim Ju Hyoung Lee, Gendeekhuu Davaatseren, Magsar Bazarragchaa, Dry Coal Preparation of Fine particles by KAT Process, VIII International Coal Preparation Congress, 2016 , Saint Peterburg
  1. Gendeekhuu Davaatseren, Magsar Bazarragchaa, Dry AllAir Pilot Plant Test results on Naryn Sukhait’s Multilayer Coal , VIII International Coal Preparation Congress, 2016 , Saint Peterburg
  1. Г.Даваацэрэн, М.Базаррагчаа, Нүүрс баяжуулах үйлдвэрийн техник-технологийн өнөөгийн байдал, Баяжуулагч сэтгүүл, 2018 он, №1
  1. Г.Даваацэрэн, М.Базаррагчаа, Б.Сэрдамба, Нарийнсухайтын ордын олон үет давхаргын нүүрсэнд шинэ урвалжуудыг туршсан флотацийн туршилт, Баяжуулагч сэтгүүл, 2018 он , №1
  1. Г.Даваацэрэн, Ц.Цэгмид, М.Базаррагчаа, Б.Сэрдамба, Нарийнсухайтын ордын нүүрсний баяжигдах чанарын судалгаа, Баяжуулагч сэтгүүл, 2018 он , №1
  1. Г.Даваацэрэн, М.Базаррагчаа, Ц.Цэгмид, Г.Очирбат, Монголын анхны хүнд орчны модулийн нүүрс баяжуулах үйлдвэр , Баяжуулагч сэтгүүл, 2018 он , №2
  1. Г.Даваацэрэн , Хөвөлт-суултын шинжилгээний үр дүнгээр нүүрс баяжуулах үйлдвэрийн материалын балансыг аналитик аргаар тооцох нь, Баяжуулагч сэтгүүл, 2018 он , №2
  2.   Г.Шархүү, Г.Даваацэрэн, Я.Пүрвээ, Эрдэнэт үйлдвэрийн     баяжуулах фабрикийн техник-технологийн шинэчлэлтийн чиглэлийг боловсруулахад ирээдүйд олборлох хүдрийн физик-механикийн шинж чанарыг тодорхойлохын ач холбогдол, Баяжуулагч сэтгүүл, 2018 он , №2

     63.  G.Davaatseren, M.Bazarragchaa, Ts. Tsegmid, Mongolia’s first gravity fed 3-product heavy medium cyclone coal washing plant, XIX International Coal Preparation Congress, Volume 1, page 70

    64. Г.Даваацэрэн, М.Гантулга, Баяжуулах үйлдвэрийн балансын тооцоо ба өгөгдлийг тохируулах аргууд, Баяжуулагч сэтгүүл, 2020, №5

    65.  Г.Даваацэрэн, М.Базаррагчаа, Нүүрс баяжуулах үйлдвэрийн хүнд орчны гидроциклон болон тунаах технологиудын харьцуулсан судалгаа, Баяжуулагч сэтгүүл, 2020, №5

    66.  М.Базаррагчаа, Г.Даваацэрэн, Д.Энхбат, Ц.Цэгмид, Ж.Золжаргал, Дэлхийн нүүрс баяжуулах үйлдвэрүүд,  Баяжуулагч сэтгүүл, 2021, №7, хуудас 8

    67. М.Базаррагчаа, Г.Даваацэрэн, Д.Энхбат, Ц.Цэгмид, Ж.Золжаргал, Д.Хүдэрмөнх, Нүүрсийг хуурай аргаар баяжуулах технологийн рөгжлийн чиг хандлага. Баяжуулагч сэтгүүл, 2021, №7, хуудас 52

    68. Г.Даваацэрэн, Ц.Цэгмид, М.Базаррагчаа, Г.Очирбат, Нарийнсухайтын уурхайн нүүрсийг сонгомол шигшилт болон хуурай баяжуулалтын аргаар боловсруулах боломжийн талаар, Баяжуулагч сэтгүүл, 2021, №7, хуудас 73

     69. Г.Даваацэрэн, М.Базаррагчаа, Д.Хүдэрмөнх, Д.Нямдаваа, Нүүрс баяжуулах үйлдвэрийн балансын тооцоо ба өгөгдлийг тохируулах аргын тухайд.  Баяжуулагч сэтгүүл, 2021, №7, хуудас 80

70. Г.Даваацэрэн. Эрдэс боловсруулалтын судалгаанд математик-загварчлал, хиймэл оюун ба машин сургалтын аргуудыг хэрэглэх нь. Баяжуулагч сэтгүүл , 2022 он, №10, хуудас 22.

 

Friday, November 28, 2025

ПАЙТОН БОДЛОГО №1 (Сорьцлолтын төлөөлөх дээжний хамгийн бага жин)

Энэхүү python программ нь GY-ийн томьёогоор төлөөлөх дээжний хамгийн бага жинг олно.



# Gy-ийн томьёоны Python функц # Author: G. Davaatseren - Python for Mineral Processing Engineers def gy_min_sample_mass(C: float, d_mm: float, rho: float, f: float) -> float: # мм-ийг метр болгох d_m = d_mm / 1000.0 # Gy-ийн томьёо m_tonnes = (C * (d_m ** 3) * rho) / (f ** 2) return m_tonnes # Жишээ бодлогын өгөгдөл C = 0.5 # Gy constant d_mm = 50.0 # top size, мм rho = 2.7 # t/m3 f = 0.05 # 5% relative error m_min_t = gy_min_sample_mass(C, d_mm, rho, f) m_min_kg = m_min_t * 1000 # кг руу хөрвүүлэх print(f"Хамгийн бага сорьцын масс ≈ {m_min_t:.4f} тн") print(f"Эсвэл ≈ {m_min_kg:.1f} кг") # Ялгаатай ширхэглэл (d) болон алдааны түвшин (f) -ийн нөлөөг харуулах import numpy as np import matplotlib.pyplot as plt C = 0.5 rho = 2.7 # 20 мм-ээс 100 мм хүртэл d_values = np.linspace(20, 100, 9) # 20, 30, ..., 100 мм f_values = [0.1, 0.05, 0.03] # 10%, 5%, 3% plt.figure(figsize=(7,5)) for f in f_values: m_list = [] for d_mm in d_values: m_list.append(gy_min_sample_mass(C, d_mm, rho, f) * 1000) # кг plt.plot(d_values, m_list, marker="o", label=f"f = {f*100:.0f} %") plt.xlabel("Хамгийн том ширхэглэл, d (мм)") plt.ylabel("Хамгийн бага сорьцын масс, m (кг)") plt.title("Gy-ийн томьёогоор өөрчлөгдөхөд сорьцын масс") plt.grid(True) plt.legend() plt.show()





Thursday, November 20, 2025

Линч - Витены бутлалтын загвар (Lynch - Whiten)

Энэхүү python программ нь 1977 онд Линчийн боловсруулсан матрицын аргаар бутлалтын циклыг загварчлалыг гүйцэтгэнэ.

# ---------- 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")

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()