-
Notifications
You must be signed in to change notification settings - Fork 4
RPN (Asset Criticality)
Desumai edited this page Aug 18, 2023
·
7 revisions
The formula to calculate RPNs is system score * breakdown frequency * breakdown impact
. The formula is located in lib\criticality\functions.dart
.
To use asset RPN to calculate asset priority, possible priority values are classified
into RPN ranges (e.g. Very low <= 100, 100 < low < = 200). These ranges are calculated using rpnDistRange(rpnList, rpnPercentDist)
.
Pseudocode (without efficiency boosting steps or case checking):
//Calculates the maximum RPN value for an asset priority group according
//to the target asset priority group distributions given by a list
//from least to greatest asset priority (very low to very high). Returns a
//list of the maximum RPN value (inclusive) for RPN priority groups from low to high.
rpnList = list of rpns
percentDistribution = list of target percent distributions from least to greatest priority
FOR rpn IN rpnList
IF rpn <= 0
REMOVE rpn from rpnList
SORT rpnList from least to greatest
results = []
targetDistribution = 0
FOR(i = 0; i < percentDistribution.length, i++)
targetDistribution += percentDistribution[i]
index = round(rpnList.length * targetDistribution) - 1
diff = targetDistribution - (rpnList.length - index - 1)/list.length
IF count(rpnList[index] in rpnList) > 1
firstIndex = rpnList.firstIndexOf(rpnList[index])
tempDiff = targetDistribution - (rpnList.length - firstIndex- 1)/list.length
IF(tempDiff < diff && firstIndex != -1)
diff = tempDiff
index = firstIndex
lastIndex = rpnList.lastIndexOf(rpnList[index])
tempDiff = targetDist - (rpnList.length - lastIndex - 1)/list.length
IF(tempDiff < diff && lastIndex!= -1)
diff = tempDiff
index = lastIndex
result.append(rpnList[index]
FOR(j = i; j < percentDistribution.length, j++)
percentDistribution[j] += diff / (percentDistribution.length - i - 1)
return result
Currently algorithm does not check for duplicates when finding rpn priority ranges. Only one check is done at the end before returning the results.