예제 #1
0
def RunningJudge(temporary):
    heatstor = 0
    coldstor = 0
    elestor = 0
    cold_stor_list = []
    heat_stor_list = []
    ele_stor_list = []
    chp = CHP(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    elestorage = EleStorage(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    totalfuel_gasturbine = 0
    totalfuel_gasboiler = 0
    totalele_powergrid = 0
    demand = DemandData()

    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 ((demand.H[t] >
             (heatstorage.get_H_out_max(heatstor) + chp.H_out_max +
              gasboiler.nominal) * Parameters.delttime) |
            (demand.C[t] >
             (coldstorage.get_C_out_max(coldstor) + chp.C_out_max +
              heatpump.nominal) * Parameters.delttime)):
            return 0
        else:
            result = RunningProcess(t, temporary, coldstor, heatstor,
                                    elestor)  # result是个数组
            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
예제 #2
0
def FeasibleRegion(temporary):
    chp = CHP(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()
    for t in range(0, demand.E_sheetnrows - 1, Parameters.delttime):
        if ((heatstorage.H_out_nominal + chp.H_out_max + gasboiler.nominal) * Parameters.delttime < demand.H[t]) |\
                ((coldstorage.C_out_nominal + chp.C_out_max + heatpump.nominal) * Parameters.delttime < demand.C[t]):
            return 0
    return 1
예제 #3
0
def MaxOutputJudge(
        temporary):  # CHP 最大产能情况下是否可行, 该函数下的 储热 储冷 是假想的,没有额定容量的 储热 储冷
    heatstor = 0
    coldstor = 0
    heat_out_max = 0
    cold_out_max = 0
    chp = CHP(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    heatstorage = HeatStorage(temporary)
    coldstorage = ColdStorage(temporary)
    demand = DemandData()
    for t in range(0, demand.E_sheetnrows - 1, Parameters.delttime):
        if ((heat_out_max + chp.H_out_max + gasboiler.nominal)*Parameters.delttime >= demand.H[t]) &\
                ((cold_out_max + chp.C_out_max + heatpump.nominal)*Parameters.delttime >= demand.C[t]):
            # 判断进入储热的热量和储热放出的热量 #
            if (chp.H_out_max + gasboiler.nominal
                ) * Parameters.delttime >= demand.H[t]:  # 最大产生热量大于热需求,热量可存入储热器
                heat_in = ((
                    (chp.H_out_max + gasboiler.nominal) * Parameters.delttime -
                    demand.H[t]) / Parameters.delttime)
                heat_out = 0
            else:  # 最大产生热量小于热需求,储热器放热
                heat_in = 0
                heat_out = (
                    (demand.H[t] -
                     (chp.H_out_max + gasboiler.nominal) * Parameters.delttime)
                    / Parameters.delttime)
                # 此时heat_out 一定小于 heat_out_max
            heatstor = heatstorage.get_S(heatstor, heat_in, heat_out)
            heat_out_max = heatstorage.get_H_out_max(heatstor)

            # 接下来判断进入储冷的冷量和储冷放出的冷量 #

            if (chp.C_out_max + heatpump.nominal
                ) * Parameters.delttime >= demand.C[t]:  # 最大产生冷量大于热需求,冷量可存入储热器
                cold_in = (
                    (chp.C_out_max + heatpump.nominal) * Parameters.delttime -
                    demand.C[t]) / Parameters.delttime
                cold_out = 0
            else:  # 最大产生冷量小于热需求,储冷器放冷
                cold_in = 0
                cold_out = (demand.C[t] - (chp.C_out_max + heatpump.nominal) *
                            Parameters.delttime) / Parameters.delttime
                # 此时cold_out 一定小于 cold_out_max
            coldstor = coldstorage.get_S(coldstor, cold_in, cold_out)
            cold_out_max = coldstorage.get_C_out_max(coldstor)
        else:
            return 0  # 任何时刻需求超过储能 + CHP 最大产能,系统都不行
    return 1
예제 #4
0
def signal_ele(t, temporary, elestor):

    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] / Parameters.delttime
    heatstorage_heat_out = demand.H[t] / Parameters.delttime
    elestorage_ele_in = 0
    elestorage_ele_out = elestorage.get_E_out_max(elestor)
    if demand.E[t] > (elestorage.get_E_out_max(elestor) +
                      chp.E_out_max) * Parameters.delttime:  # 储电+ CHP + 电网
        powergrid_ele_out = demand.E[
            t] / Parameters.delttime - elestorage.get_E_out_max(
                elestor) - chp.E_out_max
        gasturbine_ele_out = chp.E_out_max * Parameters.delttime  # kWh
    else:  # 储电+ CHP
        gasturbine_ele_out = demand.E[
            t] / Parameters.delttime - elestorage.get_E_out_max(elestor)
        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
예제 #5
0
def RoughJudge(temporary):
    ele_demand_sum = 0
    heat_demand_sum = 0
    cold_demand_sum = 0
    chp = CHP(temporary)
    gasboiler = GasBoiler(temporary)
    heatpump = HeatPump(temporary)
    demand = DemandData()
    for t in range(0, demand.E_sheetnrows - 1,
                   Parameters.delttime):  # 暗含了H 和 C 的sheetnrows 和 E 的相同
        ele_demand_sum = ele_demand_sum + demand.E[t]
        heat_demand_sum = heat_demand_sum + demand.H[t]
        cold_demand_sum = cold_demand_sum + demand.C[t]
    if (heat_demand_sum <= (chp.H_out_max + gasboiler.nominal)*Parameters.delttime * (demand.H_sheetnrows-1)) & \
            (cold_demand_sum <= (chp.C_out_max + heatpump.nominal) * Parameters.delttime * (demand.C_sheetnrows-1)):
        return 1  # 初判成功,返回1,继续判断
    else:
        return 0  # 初判失败,系统不可用
예제 #6
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) *
                      Parameters.delttime):
        # 储冷 + CHP + 热泵满足
        heatpump_cold_out = demand.C[
            t] / Parameters.delttime - 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] / Parameters.delttime - 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) *
                       Parameters.delttime):  # 储热即可满足
        heatstorage_heat_in = boiler_heat_out_users
        heatstorage_heat_out = demand.H[t] / Parameters.delttime
        gasboiler_heat_out = 0
    elif ((demand.H[t] >
           heatstorage.get_H_out_max(heat_stor) * Parameters.delttime) &
          (demand.H[t] <=
           (boiler_heat_out_users + heatstorage.get_H_out_max(heat_stor)) *
           Parameters.delttime)):
        # 储热+ CHP 满足,多余存入储热
        heatstorage_heat_in = boiler_heat_out_users + heatstorage.get_H_out_max(heat_stor) - \
                              (demand.H[t] / Parameters.delttime)
        # 储热先供热,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] / Parameters.delttime - 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) * Parameters.delttime:  # 储电满足
        elestorage_ele_in = gasturbine_ele_out_users
        elestorage_ele_out = demand.E[t] / Parameters.delttime
        powergrid_ele_out = 0
    elif ((demand.E[t] >
           elestorage.get_E_out_max(ele_stor) * Parameters.delttime) &
          (demand.E[t] <=
           (elestorage.get_E_out_max(ele_stor) + gasturbine_ele_out_users) *
           Parameters.delttime)):
        # 储电 + CHP 满足,多余存入储电
        elestorage_ele_in = elestorage.get_E_out_max(ele_stor) + gasturbine_ele_out_users - demand.E[t] / \
                            Parameters.delttime
        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] / Parameters.delttime -
                             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
예제 #7
0
def signal_heat(t, temporary, heatstor, elestor):  # 储冷> 冷需求, 储热 < 热需求

    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] / Parameters.delttime
    heatstorage_heat_out = heatstorage.get_H_out_max(heatstor)
    heatstorage_heat_in = 0
    if demand.H[t] > (heatstorage.get_H_out_max(heatstor) +
                      chp.H_out_max) * Parameters.delttime:  # 储热+ CHP + 燃气锅炉
        gasboiler_heat_out = demand.H[
            t] / Parameters.delttime - heatstorage.get_H_out_max(
                heatstor) - chp.H_out_max
        boiler_heat_out_users = chp.H_out_max
    else:  # 储热+ CHP
        boiler_heat_out_users = demand.H[
            t] / Parameters.delttime - heatstorage.get_H_out_max(heatstor)
        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(
            elestor) * Parameters.delttime:  # 储电
        elestorage_ele_out = demand.E[t] / Parameters.delttime
        elestorage_ele_in = gasturbine_ele_out
        powergrid_ele_out = 0
    elif (
        (demand.E[t] > elestorage.get_E_out_max(elestor) * Parameters.delttime)
            & (demand.E[t] <=
               (elestorage.get_E_out_max(elestor) + gasturbine_ele_out) *
               Parameters.delttime)):
        # 储电+ CHP
        elestorage_ele_out = elestorage.get_E_out_max(elestor)
        elestorage_ele_in = gasturbine_ele_out + elestorage.get_E_out_max(
            elestor) - demand.E[t] / Parameters.delttime
        powergrid_ele_out = 0
    else:  # 储电+ CHP + 电网
        elestorage_ele_out = elestorage.get_E_out_max(elestor)
        elestorage_ele_in = 0
        powergrid_ele_out = demand.E[
            t] / Parameters.delttime - elestorage.get_E_out_max(
                elestor) - 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