private void CalculateMaximumData() { if (maxData > 0f) { return; } List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return; } if (reliabilityModules.Count < 1) { return; } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; FloatCurve curve = rm.GetReliabilityCurve(); if (curve != null) { if (curve.maxTime > maxData) { maxData = curve.maxTime; } } } }
// Get the base or static failure rate public double GetBaseFailureRate() { if (baseFailureRate > 0) { Log("Returning cached failure rate"); return(baseFailureRate); } double totalBFR = 0f; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { Log("Unable to locate any reliability modules. Using min failure rate"); return(TestFlightUtil.MIN_FAILURE_RATE); } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; totalBFR += rm.GetBaseFailureRate(initialFlightData); } Log(String.Format("BFR: {0:F7}, Modifier: {1:F7}", totalBFR, failureRateModifier)); totalBFR = totalBFR * failureRateModifier; totalBFR = Math.Max(totalBFR, TestFlightUtil.MIN_FAILURE_RATE); baseFailureRate = totalBFR; return(baseFailureRate); }
private void CalculateMaximumData() { if (maxData > 0f) { return; } List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return; } if (reliabilityModules.Count < 1) { return; } foreach (ITestFlightReliability rm in reliabilityModules) { FloatCurve curve = rm.GetReliabilityCurve(); if (curve != null) { if (curve.maxTime > maxData) { maxData = curve.maxTime; } } } }
public List <string> GetTestFlightInfo() { List <string> infoStrings = new List <string>(); string partName = Alias; infoStrings.Add("<b>Core</b>"); infoStrings.Add("<b>Active Part</b>: " + partName); float flightData = TestFlightManagerScenario.Instance.GetFlightDataForPartName(partName); if (flightData < 0f) { flightData = 0f; } infoStrings.Add(String.Format("<b>Flight Data</b>: {0:f2}/{1:f2}", flightData, maxData)); List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules != null) { for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability reliabilityModule = reliabilityModules[i]; infoStrings.AddRange(reliabilityModule.GetTestFlightInfo()); } } return(infoStrings); }
public List <string> GetTestFlightInfo() { List <string> infoStrings = new List <string>(); string partName = Alias; infoStrings.Add("<b>Core</b>"); infoStrings.Add("<b>Active Part</b>: " + partName); float flightData = TestFlightManagerScenario.Instance.GetFlightDataForPartName(partName); if (flightData < 0f) { flightData = 0f; } infoStrings.Add(String.Format("<b>Flight Data</b>: {0:f2}/{1:f2}", flightData, maxData)); List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules != null) { Log("Getting info from reliability modules"); foreach (ITestFlightReliability reliabilityModule in reliabilityModules) { infoStrings.AddRange(reliabilityModule.GetTestFlightInfo()); } } return(infoStrings); }
public double GetBaseFailureRateForScope(String scope) { // Since the Base Failure Rate does not change during the lifetime of a part // we cache that data internally so as to not have to call the Reliability module // constantly. Therefore here we are returning what we have if we have it, // or else getting it from the Reliability module and caching that for next time. scope = scope.ToLower().Trim(); // LogFormatted_DebugOnly(String.Format("TestFlightCore: GetBaseFailureRateForScope({0})",scope)); if (baseFailureRate == null) { // LogFormatted_DebugOnly("BaseFailureRate data is invalid"); return(TestFlightUtil.MIN_FAILURE_RATE); } if (baseFlightData == null) { // LogFormatted_DebugOnly("baseFlightData is invalid"); return(TestFlightUtil.MIN_FAILURE_RATE); } if (baseFailureRate.ContainsKey(scope)) { // LogFormatted_DebugOnly("TestFlightCore: Returning cached Base Failure Rate"); return(baseFailureRate[scope]); } else { // LogFormatted_DebugOnly("TestFlightCore: Calculating Base Failure Rate from Reliability modules"); double totalBFR = 0; double data = 0; FlightDataBody body = baseFlightData.GetFlightData(scope); if (body != null) { data = body.flightData; } List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part); if (reliabilityModules == null) { return(TestFlightUtil.MIN_FAILURE_RATE); } foreach (ITestFlightReliability rm in reliabilityModules) { totalBFR += rm.GetBaseFailureRateForScope(data, scope); } totalBFR = Mathf.Max((float)totalBFR, (float)TestFlightUtil.MIN_FAILURE_RATE); baseFailureRate.Add(scope, totalBFR); return(totalBFR); } }
public override string GetInfo() { // This methods collects data from all the TestFlight modules and combines it into one string List <string> infoStrings = new List <string>(); List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias, false); if (reliabilityModules != null) { for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability reliabilityModule = reliabilityModules[i]; var s = reliabilityModule.GetModuleInfo(); if (!string.IsNullOrEmpty(s)) { infoStrings.Add(s); } } } List <ITestFlightFailure> failureModules = TestFlightUtil.GetFailureModules(this.part, Alias, false); if (failureModules != null) { for (int i = 0, failureModulesCount = failureModules.Count; i < failureModulesCount; i++) { ITestFlightFailure failureModule = failureModules[i]; var s = failureModule.GetModuleInfo(); if (!string.IsNullOrEmpty(s)) { infoStrings.Add(s); } } } if (infoStrings.Count > 0) { return(string.Join("\n", infoStrings.ToArray())); } return(base.GetInfo()); }
// Get the Reliability Curve for the part public FloatCurve GetBaseReliabilityCurve() { FloatCurve curve; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return(null); } foreach (ITestFlightReliability rm in reliabilityModules) { curve = rm.GetReliabilityCurve(); if (curve != null) { return(curve); } } return(null); }
public FloatCurve GetBaseReliabilityCurveForScope(String scope) { scope = scope.ToLower().Trim(); FloatCurve curve; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part); if (reliabilityModules == null) { return(null); } foreach (ITestFlightReliability rm in reliabilityModules) { curve = rm.GetReliabilityCurveForScope(scope); if (curve != null) { return(curve); } } return(null); }
// Get the Reliability Curve for the part public FloatCurve GetBaseReliabilityCurve() { FloatCurve curve; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part, Alias); if (reliabilityModules == null) { return(null); } for (int i = 0, reliabilityModulesCount = reliabilityModules.Count; i < reliabilityModulesCount; i++) { ITestFlightReliability rm = reliabilityModules[i]; curve = rm.GetReliabilityCurve(); if (curve == null) { continue; } return(curve); } return(null); }
// Get the base or static failure rate public double GetBaseFailureRate() { if (baseFailureRate != 0) { return(baseFailureRate); } double totalBFR = 0f; List <ITestFlightReliability> reliabilityModules = TestFlightUtil.GetReliabilityModules(this.part); if (reliabilityModules == null) { return(TestFlightUtil.MIN_FAILURE_RATE); } foreach (ITestFlightReliability rm in reliabilityModules) { totalBFR += rm.GetBaseFailureRate(initialFlightData); } totalBFR = totalBFR * failureRateModifier; totalBFR = Math.Max(totalBFR, TestFlightUtil.MIN_FAILURE_RATE); baseFailureRate = totalBFR; return(baseFailureRate); }
// Get all Reliability Modules that are bound to a given alias public static List <ITestFlightReliability> GetReliabilityModules(Part part, string alias) { return(TestFlightUtil.GetReliabilityModules(part, alias)); }