component_level_recovery_activities_model

class pyrecodes.component_recovery_model.component_level_recovery_activities_model.ComponentLevelRecoveryActivitiesModel(recovery_model_parameters: dict, REPAIR_ACTIVITY_NAME='Repair')

Bases: AbstractRecoveryModel

Component recovery model that considers multiple recovery activities defined on a component level.

This model accounts for several impeding factors and a single repair activity.

Attributes:

damage_level (float): The damage level of the component (between 0 and 1). damage_to_functionality_relation (relation.Relation): The relation to get the functionality level based on the current damage level. recovery_activities (dict): A dictionary of recovery activities parameters. REPAIR_ACTIVITY_NAME (str): The name of the repair activity - one that actually reduces the damage level.

check_preceding_activities(time_step) None

Check if preceding activities are finished for all recovery activities and set the preceding_activities_finished attribute accordingly.

damage_level: float
damage_to_functionality_relation: Relation
demand_is_active(recovery_activity: RecoveryActivity) bool

Check if the demand for a recovery activity is active at the current time step. Demand is active if the preceding activities are finished, the damage level is greater than 0, and the activity is not finished.

find_recovery_activity_that_demands_the_resource(resource_name: str) RecoveryActivity

Find the recovery activity that demands the resource resource_name at the current time step.

Args:

resource_name (str): The name of the resource.

Returns:

RecoveryActivity: The recovery activity that demands the resource.

Raises:

ValueError: If no recovery activity demands the resource.

get_damage_level() float

Get the current damage level of the component. It’s 1 - the progress level of the repair activity.

Returns:

float: The damage level (between 0 and 1).

get_demand() dict

Get the resource demand needed to meet the demand of all recovery activities currently in progress.

Returns:

dict: A dictionary of resource demands for active recovery activities.

preceding_activities_finished(recovery_activity_object: RecoveryActivity) bool

Check if preceding activities for a single recovery activity are finished.

Args:

recovery_activity_object (RecoveryActivity): The recovery activity to check.

Returns:

bool: True if all preceding activities are finished, False otherwise.

recover(time_step: int) None

Perform recovery for a time step. Increase the level of all activities that are not finished, for which all preceding activities are finished and the resource demand is met.

Args:

time_step (int): The time step for which recovery is performed.

TODO: Not sure if there should be a for loop with start and end time steps or just get the length and multiply by the rate. Compare computational time.

recovery_activities: dict
set_activities_demand_to_met() None

Set the demand for recovery activities to met. This is done before resource are distributed at each time step, as resource distribution can only reduce the percent of met demand of a component - this is an iRe-CoDeS assumption.

set_initial_damage_level(damage_level: float) None

Set the initial damage level. The damage level must be between 0 and 1.

Sets the progress level of all activities to 0 and the progress level of the repair activity to 1 - damage_level.

Args:

damage_level (float): The initial damage level (between 0 and 1).

set_initial_repair_activity_state(damage_level: float) None

Set the initial state of the repair activity. Initial level is 1 - damage_level and the rate is damage_level / duration to ensure that the component is repaired in the specified duration.

Args:

damage_level (float): The initial damage level (between 0 and 1).

set_met_demand_for_recovery_activities(resource_name: str, percent_of_met_demand: float) None

Set the percent of met demand for a recovery activity that requires the resource resource_name. This method is called during resource distribution.

Args:

resource_name (str): The name of the resource. percent_of_met_demand (float): The percent of met demand (between 0 and 1).:

TODO:

Add recovery activity name as input parameter. This will allow the same resource to be demanded by multiple recovery activities at the same time. Not possible at the moment. With the demand active implemented, two activities can demand the same resource but only one will be active at a time.

set_parameters(parameters: dict) None

Set parameters for all recovery activities. Parameters are preceding activities, duration, and demand of activities.

Args:

parameters (dict): Parameters for the recovery model.