Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def A1(s):
- # print math.e
- if s >= 60: return 1.0
- return 1 / (math.pow(math.e, 60 - abs(s)))
- def A2(s):
- if s <= 10: return 1.0
- return 1 / (1 + math.pow(math.e, abs(10 - s)))
- def B1(s):
- if s >= 0.8: return 1.0
- return 1 / (1 + math.pow(0.2 + s, 3))
- def B2(s):
- if 0 <= s <= 0.1: return 1.0
- return 1 / (1 + math.pow(0.9 + s, 2))
- def C1():
- return 2000
- def C2():
- return 500
- def C3():
- return 100
- def Rule1_min(s, e):
- return min(A2(s), B2(e))
- def Rule2_min(s, e):
- return min(A1(s), B2(e))
- def Rule3_min(s, e):
- return min(A1(s), B1(e))
- def COG(w, c):
- if len(w) != len(c):
- return -1
- else:
- broitel = 0
- imenitel = 0
- for i in range(len(w)):
- broitel += w[i] * c[i]
- imenitel += w[i]
- return broitel / imenitel
- def Presmetaj(h):
- resenie = {}
- flag = True
- saat = 6
- inkrement = 1
- temperatura = 15
- while flag:
- if saat == 18:
- inkrement = -1
- w = [Rule1_min(temperatura, h), Rule2_min(temperatura, h), Rule3_min(temperatura, h)]
- c = [C1(), C2(), C3()]
- resenie[(saat, h)] = (temperatura, round(COG(w, c), 4))
- temperatura += inkrement * 1.5
- if saat == 24:
- saat = 1
- else:
- saat += 1
- # print saat, inkrement, temperatura
- if temperatura == 15 and inkrement <= 0: break
- return resenie
- if __name__ == "__main__":
- h = input()
- resenie = Presmetaj(h)
- print resenie
Add Comment
Please, Sign In to add comment