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
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
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
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
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 # 初判失败,系统不可用
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
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