Beispiel #1
0
    def __init__(self, temporary):
        gasturbine = GasTurbine(
            temporary)  # 为求H_CHP_out_max 和 C_CHP_out_max调整pl = 1
        boiler = Boiler(temporary)
        absorptionchiller = AbsorptionChiller(temporary)
        self.E_out_max = gasturbine.nominal
        self.heat_ele_ratio = 0.94 * gasturbine.effi_th_nom / gasturbine.effi_ele_nom  # 0.94: 热电比认为可不变.xlsx 文件里F 列
        if gasturbine.get_H_out(Parameters.get_nominal_GasTurbine(
                temporary)) <= boiler.heat_in_max:
            boiler_heat_in = gasturbine.get_H_out(
                Parameters.get_nominal_GasTurbine(temporary))
            # 进入余热锅炉的热量,但设计的结果一定是gasturbine.get_H_out(P.nominal_GasTurbine) >= boiler.heat_in_max #
        else:
            boiler_heat_in = boiler.heat_in_max

        self.H_out_max = boiler.get_H_out(boiler_heat_in) * (1 - Parameters.k)

        if boiler.get_H_out(boiler_heat_in
                            ) * Parameters.k <= absorptionchiller.heat_in_max:
            absorptionchiller_heat_in = boiler.get_H_out(
                boiler_heat_in) * Parameters.k
            # 进入制冷机的热量,但设计的结果一定是 boiler.get_H_out(boiler_heat_in) * P.k >= absorptionchiller.heat_in_max
        else:
            absorptionchiller_heat_in = absorptionchiller.heat_in_max

        self.C_out_max = absorptionchiller.get_C_out(absorptionchiller_heat_in)
Beispiel #2
0
 def __init__(self, t, temporary, number):
     demand = DemandData()
     chp = CHPInternalCombustionEngine(temporary, number)
     boiler = Boiler(temporary)
     if demand.H_steam[t] <= chp.heat_steam_out_max:
         self.steam = demand.H[t]
         self.gas_boiler_out_for_steam = 0
     else:
         self.steam = chp.heat_steam_out_max
         self.gas_boiler_out_for_steam = demand.H_steam[t] - self.steam
     self.exhaust_gas = boiler.get_H_in(self.steam)
Beispiel #3
0
    def __init__(self, temporary, number):
        self.internal_combustion_engine = InternalCombustionEngine(
            number, temporary)
        self.boiler = Boiler(temporary)
        self.absorption_chiller = DoubleEffectAbsorptionChiller(temporary)
        self.number = number
        self.temporary = temporary
        self.ele_out_max = self.internal_combustion_engine.nominal
        # chp.heat_steam_out_max是exhaust gas全部进入锅炉的蒸汽
        # chp.heat_out_max 是exhaust gas全部进入锅炉的蒸汽 + 缸套水热
        # chp.heat_space_water_max 是exhaust gas全部进入制冷机制热 + 缸套水热
        # chp.cold_out_max 是exhaust gas和jacket water全部进入制冷剂的情况
        # chp.cold_out_max_exhaust_gas 是exhaust gas全进入制冷机的情况
        if self.internal_combustion_engine.get_exhaust_gas_pl(
                1) * self.boiler.effi >= self.boiler.nominal:
            self.heat_steam_out_max = self.boiler.nominal
        else:
            self.heat_steam_out_max = self.internal_combustion_engine.get_exhaust_gas_pl(
                1) * self.boiler.effi
        self.heat_out_max = self.heat_steam_out_max + self.internal_combustion_engine.get_jacket_water_pl(
            1)

        if (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_heat >=
                self.absorption_chiller.heat_nominal):
            self.heat_space_water_max = (
                self.absorption_chiller.heat_nominal +
                self.internal_combustion_engine.get_jacket_water_pl(1))
        else:
            self.heat_space_water_max = (
                self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_heat +
                self.internal_combustion_engine.get_jacket_water_pl(1))

        cold = (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double +
                self.internal_combustion_engine.get_jacket_water_pl(1) *
                self.absorption_chiller.COP_single)
        if cold >= self.absorption_chiller.nominal:
            self.cold_out_max = self.absorption_chiller.nominal
        else:
            self.cold_out_max = cold

        if (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double >=
                self.absorption_chiller.nominal):
            self.cold_out_max_exhaust_gas = self.absorption_chiller.nominal
        else:
            self.cold_out_max_exhaust_gas = (
                self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double)
Beispiel #4
0
def signal_cold(t, temporary, cold_stor, season):  # 储电够,储热够,储冷不够
    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()
    if season == 0:
        demand_ele = demand.cold_E
    elif season == 1:
        demand_ele = demand.heat_E
    else:
        demand_ele = demand.transition_E

    elestorage_ele_out = demand_ele[t]
    heatstorage_heat_out = demand.H[t]
    coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
    coldstorage_cold_in = 0
    powergrid_ele_out = 0
    gasboiler_heat_out = 0
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)

    if demand.C[t] <= coldstorage_cold_out + chp.C_out_max:
        absorptionchiller_cold_out = demand.C[t] - coldstorage_cold_out
        heatpump_cold_out = 0
    else:
        absorptionchiller_cold_out = chp.C_out_max
        heatpump_cold_out = demand.C[t] - coldstorage_cold_out - absorptionchiller_cold_out
    absorptionchiller_heat_in = absorptionchiller.get_H_in(absorptionchiller_cold_out)
    boiler_heat_out = absorptionchiller_heat_in / Parameters.k
    boiler_heat_out_users = boiler_heat_out * (1 - Parameters.k)
    heatstorage_heat_in = boiler_heat_out_users
    boiler_heat_in = boiler.get_H_in(boiler_heat_out)
    gasturbine_ele_out = boiler_heat_in / chp.heat_ele_ratio
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    heatpump_ele_in = heatpump.get_E_in(heatpump_cold_out)

    if heatpump_ele_in <= gasturbine_ele_out:
        elestorage_ele_in = gasturbine_ele_out - heatpump_ele_in
        heatpump_powergrid = 0
    else:
        elestorage_ele_in = 0
        heatpump_powergrid = heatpump_ele_in - gasturbine_ele_out

    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in, heatstorage_heat_out,
              elestorage_ele_in, elestorage_ele_out, absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out, gasboiler_fuel, gasturbine_fuel,
              heatpump_powergrid)
    return result
Beispiel #5
0
def signal_ele(t, temporary, ele_stor):
    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    elestorage = EleStorage(temporary)
    demand = DemandData()
    heatpump_powergrid = 0
    heatpump_cold_out = 0
    gasboiler_heat_out = 0
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)
    coldstorage_cold_out = demand.C[t]
    heatstorage_heat_out = demand.H[t]
    elestorage_ele_in = 0
    elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
    if demand.E[t] > (elestorage.get_E_out_max(ele_stor) +
                      chp.E_out_max) * Parameters.delttime:  # 储电+ CHP + 电网
        powergrid_ele_out = demand.E[t] - elestorage.get_E_out_max(
            ele_stor) - chp.E_out_max
        gasturbine_ele_out = chp.E_out_max  # kWh
    else:  # 储电+ CHP
        gasturbine_ele_out = demand.E[t] - elestorage.get_E_out_max(ele_stor)
        powergrid_ele_out = 0
    gasturbine_heat_out = gasturbine.get_H_out(gasturbine_ele_out)
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    if gasturbine_heat_out <= boiler.heat_in_max:  # 防止汽轮机输出热量 > 余热锅炉允许进入热量
        boiler_heat_in = gasturbine_heat_out
    else:
        boiler_heat_in = boiler.heat_in_max
    boiler_heat_out = boiler.get_H_out(boiler_heat_in)
    boiler_heat_out_users = boiler_heat_out * (1 - Parameters.k)
    absorptionchiller_heat_in = boiler_heat_out * Parameters.k
    absorptionchiller_cold_out = absorptionchiller.get_C_out(
        absorptionchiller_heat_in)
    coldstorage_cold_in = absorptionchiller_cold_out
    heatstorage_heat_in = boiler_heat_out_users
    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in,
              heatstorage_heat_out, elestorage_ele_in, elestorage_ele_out,
              absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out,
              gasboiler_fuel, gasturbine_fuel, heatpump_powergrid)  # 15项
    return result
 def __init__(self, temporary, number):
     internal_combustion_engine = InternalCombustionEngine(
         number, temporary)
     boiler = Boiler(temporary)
     absorption_chiller = DoubleEffectAbsorptionChiller(temporary)
     self.ele_out_max = internal_combustion_engine.nominal
     if internal_combustion_engine.get_exhaust_gas_pl(
             1) * boiler.effi >= boiler.nominal:
         self.heat_out_max = boiler.nominal
     else:
         self.heat_out_max = internal_combustion_engine.get_exhaust_gas_pl(
             1) * boiler.effi
     cold = (internal_combustion_engine.get_exhaust_gas_pl(1) *
             absorption_chiller.COP_double +
             internal_combustion_engine.get_jacket_water_pl(1) *
             absorption_chiller.COP_single)
     if cold >= absorption_chiller.nominal:
         self.cold_out_max = absorption_chiller.nominal
     else:
         self.cold_out_max = cold
Beispiel #7
0
def running_judge(temporary, number, season, mode, steam_or_not):
    heatstor = 0
    coldstor = 0
    elestor = 0
    cold_stor_list = []
    heat_stor_list = []
    ele_stor_list = []
    chp = CHP(temporary, number)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    absorption_chiller = AbsorptionChiller(temporary)
    boiler = Boiler(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    totalfuel_gasturbine = 0
    totalfuel_gasboiler = 0
    totalele_powergrid = 0
    total_ele_waste = 0
    total_heat_waste = 0
    total_cold_waste = 0
    demand = DemandData()
    if season == 0:
        demand_ele = demand.cold_E
        demand_cold = demand.C
        if steam_or_not == 0:
            demand_heat = []
            for hour in range(24):
                demand_heat.append(0)
        else:
            demand_heat = demand.cold_Steam
    elif season == 1:
        demand_ele = demand.heat_E
        if steam_or_not == 0:
            demand_heat = demand.H
        else:
            demand_heat = []
            for hour in range(24):
                demand_heat.append(demand.H[hour] + demand.heat_Steam[hour])
        demand_cold = []
        for hour in range(24):
            demand_cold.append(0)
    else:
        demand_ele = demand.transition_E
        demand_cold = []
        if steam_or_not == 0:
            demand_heat = []
            for hour in range(24):
                demand_heat.append(0)
                demand_cold.append(0)
        else:
            demand_heat = demand.transition_Steam
            for hour in range(24):
                demand_cold.append(0)

    for t in range(0, demand.E_sheetnrows - 1, Parameters.delttime):
        cold_stor_list.append(coldstor)
        heat_stor_list.append(heatstor)
        ele_stor_list.append(elestor)
        if mode == 0:  # 以冷定热再定电
            chp_cold = min(demand_cold[t], chp.C_out_max)
            boiler_heat_out = absorption_chiller.get_H_in(
                chp_cold) / Parameters.k
            chp_heat = boiler_heat_out * (1 - Parameters.k)
            if demand_heat[t] > heatstorage.get_H_out_max(
                    heatstor) + chp_heat + gasboiler.nominal:
                return 0
            else:
                result = mode_cold_first(t, temporary, number, coldstor,
                                         heatstor, elestor, season,
                                         steam_or_not)
        elif mode == 1:  # 以电定热再定冷  暂缺base load运行(运行模式已写好,就是还没加进来)
            chp_ele = min(demand_ele[t], chp.E_out_max)
            boiler_heat_in = chp_ele / chp.heat_ele_ratio
            chp_heat = boiler.get_H_out(boiler_heat_in) * (1 - Parameters.k)
            chp_cold = chp_heat / (1 - Parameters.k) * Parameters.k
            if ((demand_heat[t] > heatstorage.get_H_out_max(heatstor) +
                 chp_heat + gasboiler.nominal)
                    | (demand_cold[t] > coldstorage.get_C_out_max(coldstor) +
                       chp_cold + heatpump.nominal)):
                return 0
            else:
                result = mode_ele_first(t, temporary, number, coldstor,
                                        heatstor, elestor, season,
                                        steam_or_not)
        else:
            if (t >= 7) & (t <= 21):
                if season == 0:
                    if demand_cold[t] > coldstorage.get_C_out_max(
                            coldstor) + chp.C_out_max + heatpump.nominal:
                        return 0
                else:
                    if demand_heat[t] > heatstorage.get_H_out_max(
                            heatstor) + chp.H_out_max + gasboiler.nominal:
                        return 0
            else:
                if season == 0:
                    if demand_cold[t] > coldstorage.get_C_out_max(
                            coldstor) + heatpump.nominal:
                        return 0
                else:
                    if demand_heat[t] > heatstorage.get_H_out_max(
                            heatstor) + gasboiler.nominal:
                        return 0
            result = mode_base_load(t, temporary, number, coldstor, heatstor,
                                    elestor, season, steam_or_not)
        coldstorage_cold_in = result[0]
        coldstorage_cold_out = result[1]
        heatstorage_heat_in = result[2]
        heatstorage_heat_out = result[3]
        elestorage_ele_in = result[4]
        elestorage_ele_out = result[5]
        powergrid_ele_out = result[11]
        gasboiler_fuel = result[12]
        gasturbine_fuel = result[13]
        totalfuel_gasturbine = totalfuel_gasturbine + gasturbine_fuel
        totalfuel_gasboiler = totalfuel_gasboiler + gasboiler_fuel
        totalele_powergrid = totalele_powergrid + powergrid_ele_out
        elestor = elestorage.get_S(elestor, elestorage_ele_in,
                                   elestorage_ele_out)
        if elestor > elestorage.nominal:
            total_ele_waste = total_ele_waste + elestor - elestorage.nominal
            elestor = elestorage.nominal  # 若冲进的电过多,则剩余部分浪费
        heatstor = heatstorage.get_S(heatstor, heatstorage_heat_in,
                                     heatstorage_heat_out)
        if heatstor > heatstorage.nominal:
            total_heat_waste = total_heat_waste + heatstor - heatstorage.nominal
            heatstor = heatstorage.nominal
        coldstor = coldstorage.get_S(coldstor, coldstorage_cold_in,
                                     coldstorage_cold_out)
        if coldstor > coldstorage.nominal:
            total_cold_waste = total_cold_waste + coldstor - coldstorage.nominal
            coldstor = coldstorage.nominal
    output = (1, totalfuel_gasturbine, totalfuel_gasboiler, totalele_powergrid,
              total_ele_waste, total_heat_waste, total_cold_waste)
    return output
Beispiel #8
0
def signal_heat(t, temporary, cold_stor, heat_stor):  # 储电够,储热不够
    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()

    elestorage_ele_out = demand.E[t]
    heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
    heatstorage_heat_in = 0
    powergrid_ele_out = 0

    if demand.H[t] <= heatstorage_heat_out + chp.H_out_max:
        boiler_heat_out_users = demand.H[t] - heatstorage_heat_out
        gasboiler_heat_out = 0
    else:
        boiler_heat_out_users = chp.H_out_max
        gasboiler_heat_out = demand.H[
            t] - heatstorage_heat_out - boiler_heat_out_users
    boiler_heat_out = boiler_heat_out_users / (1 - Parameters.k)
    boiler_heat_in = boiler.get_H_in(boiler_heat_out)
    gasturbine_ele_out = boiler_heat_in / chp.heat_ele_ratio
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    absorptionchiller_cold_out = absorptionchiller.get_C_out(boiler_heat_out *
                                                             Parameters.k)
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)

    if demand.C[t] <= coldstorage.get_C_out_max(cold_stor):
        coldstorage_cold_out = demand.C[t]
        coldstorage_cold_in = absorptionchiller_cold_out
        heatpump_cold_out = 0
    elif (
        (demand.C[t] > coldstorage.get_C_out_max(cold_stor) &
         (demand.C[t] <=
          coldstorage.get_C_out_max(cold_stor) + absorptionchiller_cold_out))):
        coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
        coldstorage_cold_in = coldstorage_cold_out + absorptionchiller_cold_out - demand.C[
            t]
        heatpump_cold_out = 0
    else:
        coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
        coldstorage_cold_in = 0
        heatpump_cold_out = demand.C[
            t] - coldstorage_cold_out - absorptionchiller_cold_out
    heatpump_ele_in = heatpump.get_E_in(heatpump_cold_out)

    if heatpump_ele_in <= gasturbine_ele_out:  # 热泵的电首先由chp供电
        heatpump_powergrid = 0
        elestorage_ele_in = gasturbine_ele_out - heatpump_ele_in
    else:
        heatpump_powergrid = heatpump_ele_in - gasturbine_ele_out
        elestorage_ele_in = 0
    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in,
              heatstorage_heat_out, elestorage_ele_in, elestorage_ele_out,
              absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out,
              gasboiler_fuel, gasturbine_fuel, heatpump_powergrid)
    return result
Beispiel #9
0
def signal_ele(t, temporary, cold_stor, heat_stor, ele_stor):  # 储电不够
    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()

    elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
    elestorage_ele_in = 0
    if demand.E[t] > elestorage_ele_out + chp.E_out_max:
        powergrid_ele_out = demand.E[t] - elestorage_ele_out - chp.E_out_max
        gasturbine_ele_out = gasturbine.nominal
    else:  # 可由chp系统满足
        gasturbine_ele_out = demand.E[t] - elestorage_ele_out
        powergrid_ele_out = 0
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    gasturbine_heat_out = gasturbine.get_H_out(gasturbine_ele_out)
    boiler_heat_out = boiler.get_H_out(gasturbine_heat_out)
    boiler_heat_out_users = boiler_heat_out * (1 - Parameters.k)
    absorptionchiller_heat_in = boiler_heat_out * Parameters.k
    absorptionchiller_cold_out = absorptionchiller.get_C_out(
        absorptionchiller_heat_in)

    if demand.H[t] <= heatstorage.get_H_out_max(heat_stor):
        heatstorage_heat_out = demand.H[t]
        heatstorage_heat_in = boiler_heat_out_users
        gasboiler_heat_out = 0
    elif ((demand.H[t] > heatstorage.get_H_out_max(heat_stor))
          & (demand.H[t] <=
             heatstorage.get_H_out_max(heat_stor) + boiler_heat_out_users)):
        heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
        heatstorage_heat_in = boiler_heat_out_users + heatstorage_heat_out - demand.H[
            t]
        gasboiler_heat_out = 0
    else:  # 要用燃气锅炉
        heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
        heatstorage_heat_in = 0
        gasboiler_heat_out = demand.H[
            t] - heatstorage_heat_out - boiler_heat_out_users
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)

    if demand.C[t] <= coldstorage.get_C_out_max(cold_stor):
        coldstorage_cold_out = demand.C[t]
        coldstorage_cold_in = absorptionchiller_cold_out
        heatpump_cold_out = 0
    elif ((demand.C[t] > coldstorage.get_C_out_max(cold_stor)) &
          (demand.C[t] <=
           coldstorage.get_C_out_max(cold_stor) + absorptionchiller_cold_out)):
        coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
        coldstorage_cold_in = coldstorage_cold_out + absorptionchiller_cold_out - demand.C[
            t] / Parameters.delttime
        heatpump_cold_out = 0
    else:
        coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
        coldstorage_cold_in = 0
        heatpump_cold_out = (demand.C[t] -
                             coldstorage.get_C_out_max(cold_stor) -
                             absorptionchiller_cold_out)
    heatpump_powergrid = heatpump.get_E_in(heatpump_cold_out)  # 此时热泵耗电全部由电网提供
    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in,
              heatstorage_heat_out, elestorage_ele_in, elestorage_ele_out,
              absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out,
              gasboiler_fuel, gasturbine_fuel, heatpump_powergrid)
    return result
Beispiel #10
0
def signal_heat(t, temporary, heat_stor, ele_stor):  # 储冷> 冷需求, 储热 < 热需求

    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    demand = DemandData()
    heatpump_powergrid = 0
    heatpump_cold_out = 0
    coldstorage_cold_out = demand.C[t]
    heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
    heatstorage_heat_in = 0
    if demand.H[t] > heatstorage.get_H_out_max(
            heat_stor) + chp.H_out_max:  # 储热+ CHP + 燃气锅炉
        gasboiler_heat_out = demand.H[t] - heatstorage.get_H_out_max(
            heat_stor) - chp.H_out_max
        boiler_heat_out_users = chp.H_out_max
    else:  # 储热+ CHP
        boiler_heat_out_users = demand.H[t] - heatstorage.get_H_out_max(
            heat_stor)
        gasboiler_heat_out = 0
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)
    boiler_heat_out = boiler_heat_out_users / (1 - Parameters.k)
    boiler_heat_in = boiler.get_H_in(boiler_heat_out)
    gasturbine_heat_out = boiler_heat_in
    gasturbine_ele_out = gasturbine_heat_out / chp.heat_ele_ratio
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    if boiler_heat_out * Parameters.k <= absorptionchiller.heat_in_max:  # 防止锅炉产热*P.k 大于制冷机允许进入的热量
        absorptionchiller_heat_in = boiler_heat_out * Parameters.k
    else:
        absorptionchiller_heat_in = absorptionchiller.heat_in_max
    absorptionchiller_cold_out = absorptionchiller.get_C_out(
        absorptionchiller_heat_in)
    coldstorage_cold_in = absorptionchiller.get_C_out(
        absorptionchiller_heat_in)
    if demand.E[t] <= elestorage.get_E_out_max(ele_stor):  # 储电
        elestorage_ele_out = demand.E[t]
        elestorage_ele_in = gasturbine_ele_out
        powergrid_ele_out = 0
    elif ((demand.E[t] > elestorage.get_E_out_max(ele_stor)) &
          (demand.E[t] <=
           elestorage.get_E_out_max(ele_stor) + gasturbine_ele_out)):
        # 储电+ CHP
        elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
        elestorage_ele_in = gasturbine_ele_out + elestorage.get_E_out_max(
            ele_stor) - demand.E[t] / Parameters.delttime
        powergrid_ele_out = 0
    else:  # 储电+ CHP + 电网
        elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
        elestorage_ele_in = 0
        powergrid_ele_out = demand.E[t] - elestorage.get_E_out_max(
            ele_stor) - gasturbine_ele_out
    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in,
              heatstorage_heat_out, elestorage_ele_in, elestorage_ele_out,
              absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out,
              gasboiler_fuel, gasturbine_fuel, heatpump_powergrid)
    return result
Beispiel #11
0
def signal_cold(t, temporary, cold_stor, heat_stor, ele_stor):  # 储冷不够

    chp = CHP(temporary)
    gasturbine = GasTurbine(temporary)
    boiler = Boiler(temporary)
    absorptionchiller = AbsorptionChiller(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()

    coldstorage_cold_out = coldstorage.get_C_out_max(cold_stor)
    coldstorage_cold_in = 0
    if demand.C[t] > (coldstorage.get_C_out_max(cold_stor) + chp.C_out_max):
        # 储冷 + CHP + 热泵满足
        heatpump_cold_out = demand.C[t] - coldstorage.get_C_out_max(
            cold_stor) - chp.C_out_max
        # 热泵产冷
        absorptionchiller_cold_out = chp.C_out_max
    else:  # 储冷+ CHP 满足
        heatpump_cold_out = 0
        absorptionchiller_cold_out = demand.C[t] - coldstorage.get_C_out_max(
            cold_stor)
    heatpump_ele_in = heatpump.get_E_in(heatpump_cold_out)  # 热泵耗电
    absorptionchiller_heat_in = absorptionchiller.get_H_in(
        absorptionchiller_cold_out)
    boiler_heat_out = absorptionchiller_heat_in / Parameters.k
    boiler_heat_out_users = boiler_heat_out * (1 - Parameters.k)
    boiler_heat_in = boiler.get_H_in(boiler_heat_out)
    gasturbine_heat_out = boiler_heat_in
    gasturbine_ele_out = gasturbine_heat_out / chp.heat_ele_ratio
    gasturbine_fuel = gasturbine.get_fuel(gasturbine_ele_out)
    if gasturbine_ele_out >= heatpump_ele_in:
        gasturbine_ele_out_users = gasturbine_ele_out - heatpump_ele_in  # 别忘了
        heatpump_powergrid = 0
    else:
        gasturbine_ele_out_users = 0
        heatpump_powergrid = heatpump_ele_in - gasturbine_ele_out
    if demand.H[t] <= heatstorage.get_H_out_max(heat_stor):  # 储热即可满足
        heatstorage_heat_in = boiler_heat_out_users
        heatstorage_heat_out = demand.H[t]
        gasboiler_heat_out = 0
    elif ((demand.H[t] > heatstorage.get_H_out_max(heat_stor)) &
          (demand.H[t] <=
           boiler_heat_out_users + heatstorage.get_H_out_max(heat_stor))):
        # 储热+ CHP 满足,多余存入储热
        heatstorage_heat_in = boiler_heat_out_users + heatstorage.get_H_out_max(
            heat_stor) - demand.H[t]
        # 储热先供热,CHP产热再存入储热
        heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
        gasboiler_heat_out = 0
    else:  # DemandData.H[t] > (boiler_heat_out_users + heatstorage.get_H_out_max(heat_stor)):   # 储热+ CHP + 燃气锅炉 满足
        gasboiler_heat_out = demand.H[
            t] - boiler_heat_out_users - heatstorage.get_H_out_max(heat_stor)
        heatstorage_heat_in = 0
        heatstorage_heat_out = heatstorage.get_H_out_max(heat_stor)
    gasboiler_fuel = gasboiler.get_Fuel_in(gasboiler_heat_out)
    if demand.E[t] <= elestorage.get_E_out_max(ele_stor):  # 储电满足
        elestorage_ele_in = gasturbine_ele_out_users
        elestorage_ele_out = demand.E[t]
        powergrid_ele_out = 0
    elif ((demand.E[t] > elestorage.get_E_out_max(ele_stor)) &
          (demand.E[t] <=
           elestorage.get_E_out_max(ele_stor) + gasturbine_ele_out_users)):
        # 储电 + CHP 满足,多余存入储电
        elestorage_ele_in = elestorage.get_E_out_max(
            ele_stor) + gasturbine_ele_out_users - demand.E[t]
        elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
        powergrid_ele_out = 0
    else:  # 储电+ CHP + 电网
        elestorage_ele_in = 0
        elestorage_ele_out = elestorage.get_E_out_max(ele_stor)
        powergrid_ele_out = (demand.E[t] - elestorage.get_E_out_max(ele_stor) -
                             gasturbine_ele_out_users)
    result = (coldstorage_cold_in, coldstorage_cold_out, heatstorage_heat_in,
              heatstorage_heat_out, elestorage_ele_in, elestorage_ele_out,
              absorptionchiller_cold_out, boiler_heat_out, gasturbine_ele_out,
              heatpump_cold_out, gasboiler_heat_out, powergrid_ele_out,
              gasboiler_fuel, gasturbine_fuel, heatpump_powergrid)  # 15 项
    return result
Beispiel #12
0
class CHPInternalCombustionEngine:
    # 只有制冷模式和制热模式两种
    def __init__(self, temporary, number):
        self.internal_combustion_engine = InternalCombustionEngine(
            number, temporary)
        self.boiler = Boiler(temporary)
        self.absorption_chiller = DoubleEffectAbsorptionChiller(temporary)
        self.number = number
        self.temporary = temporary
        self.ele_out_max = self.internal_combustion_engine.nominal
        # chp.heat_steam_out_max是exhaust gas全部进入锅炉的蒸汽
        # chp.heat_out_max 是exhaust gas全部进入锅炉的蒸汽 + 缸套水热
        # chp.heat_space_water_max 是exhaust gas全部进入制冷机制热 + 缸套水热
        # chp.cold_out_max 是exhaust gas和jacket water全部进入制冷剂的情况
        # chp.cold_out_max_exhaust_gas 是exhaust gas全进入制冷机的情况
        if self.internal_combustion_engine.get_exhaust_gas_pl(
                1) * self.boiler.effi >= self.boiler.nominal:
            self.heat_steam_out_max = self.boiler.nominal
        else:
            self.heat_steam_out_max = self.internal_combustion_engine.get_exhaust_gas_pl(
                1) * self.boiler.effi
        self.heat_out_max = self.heat_steam_out_max + self.internal_combustion_engine.get_jacket_water_pl(
            1)

        if (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_heat >=
                self.absorption_chiller.heat_nominal):
            self.heat_space_water_max = (
                self.absorption_chiller.heat_nominal +
                self.internal_combustion_engine.get_jacket_water_pl(1))
        else:
            self.heat_space_water_max = (
                self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_heat +
                self.internal_combustion_engine.get_jacket_water_pl(1))

        cold = (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double +
                self.internal_combustion_engine.get_jacket_water_pl(1) *
                self.absorption_chiller.COP_single)
        if cold >= self.absorption_chiller.nominal:
            self.cold_out_max = self.absorption_chiller.nominal
        else:
            self.cold_out_max = cold

        if (self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double >=
                self.absorption_chiller.nominal):
            self.cold_out_max_exhaust_gas = self.absorption_chiller.nominal
        else:
            self.cold_out_max_exhaust_gas = (
                self.internal_combustion_engine.get_exhaust_gas_pl(1) *
                self.absorption_chiller.COP_double)

    def get_heat_out_pl(self, pl):  # exhaust gas进入制冷机制热水,jacket water直接制热水
        heat_out = (self.internal_combustion_engine.get_exhaust_gas_pl(pl) *
                    self.absorption_chiller.COP_heat +
                    self.internal_combustion_engine.get_jacket_water_pl(pl))
        return heat_out

    def get_heat_water_though_cold(self, judge_cold):  # 冷热模式,无热蒸汽,以热定电
        exhaust_gas = judge_cold / self.absorption_chiller.COP_double
        pl = self.internal_combustion_engine.get_pl_through_exhaust_gas(
            exhaust_gas)
        coefficient = (
            (self.internal_combustion_engine.ice_database_one[4] * pl +
             self.internal_combustion_engine.ice_database_one[5]) /
            ((self.internal_combustion_engine.ice_database_one[6] * pl +
              self.internal_combustion_engine.ice_database_one[7]) *
             self.absorption_chiller.COP_double))
        heat_water = coefficient * judge_cold
        return heat_water

    def get_heat_through_steam(self, steam, jacket_water_k):  # 冷热电模式,有热蒸汽,以热定电
        exhaust_gas = self.boiler.get_H_in(steam)
        pl = self.internal_combustion_engine.get_pl_through_exhaust_gas(
            exhaust_gas)
        heat_water = self.internal_combustion_engine.get_jacket_water_pl(
            pl) * (1 - jacket_water_k)
        return heat_water

    def get_cold_through_steam(self, steam, jacket_water_k):  # 冷热电模式,有热蒸汽,以热定电
        exhaust_gas = self.boiler.get_H_in(steam)
        pl = self.internal_combustion_engine.get_pl_through_exhaust_gas(
            exhaust_gas)
        jacket_water = self.internal_combustion_engine.get_jacket_water_pl(pl)
        cold = self.absorption_chiller.COP_single * jacket_water * jacket_water_k
        return cold

    def get_cold_through_ele(self, ele):  # 冷模式,以电定冷
        pl = ele / self.internal_combustion_engine.nominal
        exhaust_gas = self.internal_combustion_engine.get_exhaust_gas_pl(pl)
        jacket_water = self.internal_combustion_engine.get_jacket_water_pl(pl)
        cold = self.absorption_chiller.get_cold_out(exhaust_gas, jacket_water)
        return cold

    def get_heat_through_ele(self, ele):  # 热模式,以电定热
        pl = ele / self.internal_combustion_engine.nominal
        exhaust_gas = self.internal_combustion_engine.get_exhaust_gas_pl(pl)
        heat = (self.absorption_chiller.get_heat_out(exhaust_gas) +
                self.internal_combustion_engine.get_jacket_water_pl(pl))
        return heat

    def get_cold_and_heat_through_ele(self, ele):  # 冷热电模式,以电定热
        pl = ele / self.internal_combustion_engine.nominal
        exhaust_gas = self.internal_combustion_engine.get_exhaust_gas_pl(pl)
        jacket_water = self.internal_combustion_engine.get_jacket_water_pl(pl)
        cold = self.absorption_chiller.get_cold_out_only_gas(exhaust_gas)
        heat = jacket_water
        return cold, heat
Beispiel #13
0
def running_judge(temporary, mode, season):
    heatstor = 0
    coldstor = 0
    elestor = 0
    cold_stor_list = []
    heat_stor_list = []
    ele_stor_list = []
    chp = CHP(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    absorption_chiller = AbsorptionChiller(temporary)
    boiler = Boiler(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    totalfuel_gasturbine = 0
    totalfuel_gasboiler = 0
    totalele_powergrid = 0
    demand = DemandData()
    if season == 0:
        demand_ele = demand.cold_E
    elif season == 1:
        demand_ele = demand.heat_E
    else:
        demand_ele = demand.transition_E

    for t in range(0, demand.E_sheetnrows - 1, Parameters.delttime):
        cold_stor_list.append(coldstor)
        heat_stor_list.append(heatstor)
        ele_stor_list.append(elestor)
        if mode == 0:  # 以冷定热再定电
            chp_cold = min(demand.C[t], chp.C_out_max)
            boiler_heat_out = absorption_chiller.get_H_in(
                chp_cold) / Parameters.k
            chp_heat = boiler_heat_out * (1 - Parameters.k)
            if demand.H[t] > heatstorage.get_H_out_max(
                    heatstor) + chp_heat + gasboiler.nominal:
                return 0
            else:
                result = mode_cold_first(t, temporary, coldstor, heatstor,
                                         elestor, season)
        else:  # 以电定热再定冷  暂缺base load运行(运行模式已写好,就是还没加进来)
            chp_ele = min(demand_ele[t], chp.E_out_max)
            boiler_heat_in = chp_ele / chp.heat_ele_ratio
            chp_heat = boiler.get_H_out(boiler_heat_in) * (1 - Parameters.k)
            chp_cold = chp_heat / (1 - Parameters.k) * Parameters.k
            if ((demand.H[t] > heatstorage.get_H_out_max(heatstor) + chp_heat +
                 gasboiler.nominal)
                    | (demand.C[t] > coldstorage.get_C_out_max(coldstor) +
                       chp_cold + heatpump.nominal)):
                return 0
            else:
                result = mode_ele_first(t, temporary, coldstor, heatstor,
                                        elestor, season)
        coldstorage_cold_in = result[0]
        coldstorage_cold_out = result[1]
        heatstorage_heat_in = result[2]
        heatstorage_heat_out = result[3]
        elestorage_ele_in = result[4]
        elestorage_ele_out = result[5]
        powergrid_ele_out = result[11]
        gasboiler_fuel = result[12]
        gasturbine_fuel = result[13]
        totalfuel_gasturbine = totalfuel_gasturbine + gasturbine_fuel
        totalfuel_gasboiler = totalfuel_gasboiler + gasboiler_fuel
        totalele_powergrid = totalele_powergrid + powergrid_ele_out
        elestor = elestorage.get_S(elestor, elestorage_ele_in,
                                   elestorage_ele_out)
        if elestor > elestorage.nominal:
            elestor = elestorage.nominal  # 若冲进的电过多,则剩余部分浪费
        heatstor = heatstorage.get_S(heatstor, heatstorage_heat_in,
                                     heatstorage_heat_out)
        if heatstor > heatstorage.nominal:
            heatstor = heatstorage.nominal
        coldstor = coldstorage.get_S(coldstor, coldstorage_cold_in,
                                     coldstorage_cold_out)
        if coldstor > coldstorage.nominal:
            coldstor = coldstorage.nominal
    output = 1, totalfuel_gasturbine, totalfuel_gasboiler, totalele_powergrid
    return output
Beispiel #14
0
 def __init__(self, temporary, number):
     heat_stor = 0
     cold_stor = 0
     ele_stor = 0
     chp = CHPInternalCombustionEngine(temporary, number)
     ice = InternalCombustionEngine(number, temporary)
     boiler = Boiler(temporary)
     absorption_chiller = DoubleEffectAbsorptionChiller(temporary)
     gas_boiler = GasBoiler(temporary)
     heat_pump = HeatPump(temporary)
     heatstorage = HeatStorage(temporary)
     coldstorage = ColdStorage(temporary)
     elestorage = EleStorage(temporary)
     demand = DemandData()
     time = demand.E_sheetnrows - 1
     sum_heat = sum(demand.H)
     sum_cold = sum(demand.C)
     jacket_water_k = sum_cold / (sum_cold + sum_heat)
     fuel = []
     ele_bought = []
     ele_ice = []
     heat_boiler = []
     cold_absorption_chiller = []
     for t in range(0, time, Parameters.delttime):
         if demand.H_steam[t] > chp.heat_steam_out_max + gas_boiler.nominal:
             self.judge = 0
         else:
             judge_heat_steam = min(demand.H_steam[t],
                                    chp.heat_steam_out_max)
             judge_heat = chp.get_heat_through_steam(
                 judge_heat_steam, jacket_water_k)
             judge_cold = chp.get_cold_through_steam(
                 judge_heat_steam, jacket_water_k)
             if ((demand.H[t] + demand.H_steam[t] >
                  heatstorage.get_H_out_max(heat_stor) + judge_heat +
                  chp.heat_steam_out_max + gas_boiler.nominal)
                     | (demand.C[t] > coldstorage.get_C_out_max(cold_stor) +
                        judge_cold + heat_pump.nominal)):
                 self.judge = 0
             else:
                 self.judge = 1
         if self.judge == 0:
             break
         else:
             heat_steam_drive = HeatSteamDrive(t, temporary, number)
             self.heat_steam = heat_steam_drive.steam
             self.gas_boiler_for_steam = heat_steam_drive.gas_boiler_out_for_steam
             exhaust_gas = boiler.get_H_in(self.heat_steam)
             pl = ice.get_pl_through_exhaust_gas(exhaust_gas)
             self.ele = pl * ice.nominal
             jacket_water = ice.get_jacket_water_pl(pl)
             self.heat_for_other = jacket_water * (1 - jacket_water_k)
             if jacket_water * jacket_water_k * absorption_chiller.COP_single >= absorption_chiller.nominal:
                 self.cold = absorption_chiller.nominal
             else:
                 self.cold = jacket_water * jacket_water_k * absorption_chiller.COP_single
             heat_follow = HeatFollow(t, temporary, heat_stor,
                                      self.heat_for_other)
             heat_stor = heat_follow.heat_stor
             self.gas_boiler_for_other = heat_follow.gas_boiler_out
             self.gas_boiler_total = self.gas_boiler_for_steam + self.gas_boiler_for_other
             cold_follow = ColdFollow(t, temporary, cold_stor, self.cold)
             cold_stor = cold_follow.cold_stor
             ele_follow = EleFollow(t, temporary, ele_stor, self.ele)
             ele_stor = ele_follow.ele_stor
             fuel.append(
                 ice.get_fuel(pl) +
                 gas_boiler.get_Fuel_in(self.gas_boiler_total))
             ele_bought.append(
                 ele_follow.ele_bought +
                 heat_pump.get_E_in(cold_follow.heat_pump_out))
         ele_ice.append(self.ele)
         heat_boiler.append(self.heat_steam + self.gas_boiler_total)
         cold_absorption_chiller.append(self.cold)
         if cold_stor > coldstorage.nominal:
             cold_stor = coldstorage.nominal
         if heat_stor > heatstorage.nominal:
             heat_stor = heatstorage.nominal
         if ele_stor > elestorage.nominal:
             ele_stor = elestorage.nominal
     self.fuel = sum(fuel)
     self.ele_bought = sum(ele_bought)
     self.emission_calculate_ice = sum(ele_ice)
     self.emission_calculate_boiler = sum(heat_boiler)
     self.emission_calculate_absorption_chiller = sum(
         cold_absorption_chiller)
     self.emission_calculate_grid = self.ele_bought