Coverage for agentlib_flexquant/data_structures/globals.py: 100%

34 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2026-03-26 09:43 +0000

1"""Script containing global variables""" 

2 

3from typing import Literal 

4 

5# fixed string definitions 

6PREP_TIME = "prep_time" 

7MARKET_TIME = "market_time" 

8FLEX_EVENT_DURATION = "flex_event_duration" 

9PROFILE_DEVIATION_WEIGHT = "profile_deviation_weight" 

10PROFILE_COMFORT_WEIGHT = "profile_comfort_weight" 

11TIME_STEP = "time_step" 

12PREDICTION_HORIZON = "prediction_horizon" 

13FLEXIBILITY_OFFER = "FlexibilityOffer" 

14LINEAR = 'linear' 

15CONSTANT = 'constant' 

16COLLOCATION = 'collocation' 

17INTEGRATION_METHOD = Literal[LINEAR, CONSTANT] 

18FlexibilityDirections = Literal["positive", "negative"] 

19POWER_ALIAS_BASE = "_P_el_base" 

20POWER_ALIAS_NEG = "_P_el_neg" 

21POWER_ALIAS_POS = "_P_el_pos" 

22STORED_ENERGY_ALIAS_BASE = "_E_stored_base" 

23STORED_ENERGY_ALIAS_NEG = "_E_stored_neg" 

24STORED_ENERGY_ALIAS_POS = "_E_stored_pos" 

25full_trajectory_suffix: str = "_full" 

26base_vars_to_communicate_suffix: str = "_base" 

27shadow_suffix: str = "_shadow" 

28COLLOCATION_TIME_GRID = 'collocation_time_grid' 

29PROVISION_VAR_NAME = "in_provision" 

30ACCEPTED_POWER_VAR_NAME = "_P_external" 

31RELATIVE_EVENT_START_TIME_VAR_NAME = "rel_start" 

32RELATIVE_EVENT_END_TIME_VAR_NAME = "rel_end" 

33 

34# cost function in the shadow mpc. obj_std and obj_flex are to be evaluated according 

35# to user definition 

36SHADOW_MPC_COST_FUNCTION = ( 

37 "return ca.if_else(self.time < self.prep_time.sym + " 

38 "self.market_time.sym, obj_std, ca.if_else(self.time < " 

39 "(self.prep_time.sym + self.flex_event_duration.sym + " 

40 "self.market_time.sym), obj_flex, obj_std))" 

41) 

42 

43 

44def return_baseline_cost_function(power_variable: str, comfort_variable: str) -> str: 

45 """Return baseline cost function 

46 

47 Args: 

48 power_variable: name of the power variable 

49 comfort_variable: name of the comfort variable 

50 

51 Returns: 

52 Cost function in the baseline mpc, obj_std is to be evaluated according to 

53 user definition 

54 

55 """ 

56 if comfort_variable: 

57 cost_func = ( 

58 f"return ca.if_else(self.{PROVISION_VAR_NAME}.sym, " 

59 f"ca.if_else(self.time < self.{RELATIVE_EVENT_START_TIME_VAR_NAME}.sym, obj_std, " 

60 f"ca.if_else(self.time >= self.{RELATIVE_EVENT_END_TIME_VAR_NAME}.sym, obj_std, " 

61 f"sum([self.profile_deviation_weight*(self.{power_variable} - " 

62 f"self.{ACCEPTED_POWER_VAR_NAME})**2, " 

63 f"self.{comfort_variable}**2 * self.profile_comfort_weight]))),obj_std)" 

64 ) 

65 else: 

66 cost_func = ( 

67 f"return ca.if_else(self.{PROVISION_VAR_NAME}.sym, " 

68 f"ca.if_else(self.time < self.{RELATIVE_EVENT_START_TIME_VAR_NAME}.sym, obj_std, " 

69 f"ca.if_else(self.time >= self.{RELATIVE_EVENT_END_TIME_VAR_NAME}.sym, obj_std, " 

70 f"sum([self.profile_deviation_weight*(self.{power_variable} - " 

71 f"self.{ACCEPTED_POWER_VAR_NAME})**2]))),obj_std)" 

72 ) 

73 return cost_func