protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue) { if (!(condition is ICpkCondition cpkCondition)) { _parameters.Logger.Error($"No {nameof(cpkCondition)} condition received for settings creation."); return(null); } if (!(referenceValue is IReferenceValue <double>)) { throw new ArgumentException($"The received reference value is not {nameof(IReferenceValue<double>)}"); } List <double> validElementList = GetValidElementList(measurementSerieData); double average = GetAverage(validElementList); double std = GetStandardDeviation(validElementList, average); double usl = average + cpkCondition.HalfTolerance; double lsl = average - cpkCondition.HalfTolerance; double cp = (usl - lsl) / (6 * std); _parameters.Logger.LogMethodTrace($"{nameof(StdCalculation1D)}: Calculated Cp: {cp}, USL: {usl}, LSL: {lsl}, average: {average}"); return(new QCellsCalculationResult(_parameters.DateTimeProvider.GetDateTime(), true, measurementSerieData, cp, usl, lsl, average)); }
protected CalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, T result, T average) : base(creationTime, successful) { MeasurementSerie = measurementSerie; ResultValue = result; Average = average; }
protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue) { List <double> validElementList = GetValidElementList(measurementSerieData); double average = GetAverage(validElementList); _parameters.Logger.LogTrace($"{nameof(AverageCalculation1D)}: Calculated average: {average}."); return(new SimpleCalculationResult(_parameters.DateTimeProvider.GetDateTime(), true, measurementSerieData, average, average)); }
protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue) { List <double> validElementList = measurementSerieData.MeasuredPoints.Where(p => p.Valid).Select(p => p.Value).ToList(); double average = GetAverage(validElementList); double std = GetStandardDeviation(validElementList, average); _parameters.Logger.LogTrace($"{nameof(StdCalculation1D)}: Calculated standard devaition: {std}, average: {average}"); return(new SimpleCalculationResult(_parameters.DateTimeProvider.GetDateTime(), true, measurementSerieData, std, average)); }
public ICalculationResult Calculate(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue) { if (measurementSerieData?.MeasuredPoints == null) { _parameters.Logger.LogError("Received measdata is null."); return(null); } try { if (condition.CalculationTypeHandler.CalculationType != CalculationType) { throw new ArgumentException($"The current calculation (type: {CalculationType}) can not run with the received condition {condition.CalculationTypeHandler}"); } return(InternalCalculation(measurementSerieData, condition, referenceValue)); } catch (Exception ex) { _parameters.Logger.LogError($"Exception occured:{ex.Message}"); return(null); } }
protected override ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue) { if (!(condition is ICpkCondition cpkCondition)) { throw new ArgumentNullException($"No {nameof(ICpkCondition)} condition received for {CalculationType} settings creation."); } // CpkCalculation changes into CpCalculation if (referenceValue == null) { return(base.InternalCalculation(measurementSerieData, condition, null)); } if (!(referenceValue is IReferenceValue <double> doubleReferenceValue)) { throw new ArgumentException($"The received reference value is not {nameof(IReferenceValue<double>)}"); } List <double> validElementList = GetValidElementList(measurementSerieData); double average = GetAverage(validElementList); double std = GetStandardDeviation(validElementList, average); double usl = doubleReferenceValue.Value + cpkCondition.HalfTolerance; double lsl = doubleReferenceValue.Value - cpkCondition.HalfTolerance; double cpk = Math.Min((average - usl) / (3 * std), (lsl - average) / (3 * std)); _parameters.Logger.LogMethodTrace($"{nameof(StdCalculation1D)}: Calculated Cp: {cpk}, USL: {usl}, LSL: {lsl}, average:{average}"); return(new QCellsCalculationResult(_parameters.DateTimeProvider.GetDateTime(), true, measurementSerieData, cpk, usl, lsl, average)); }
protected virtual List <double> GetValidElementList(IMeasurementSerie measurementSerieData) { return(measurementSerieData.MeasuredPoints.Where(p => p.Valid).Select(p => p.Value).ToList()); }
protected abstract ICalculationResult InternalCalculation(IMeasurementSerie measurementSerieData, ICondition condition, IReferenceValue referenceValue);
public SimpleCalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, double result, double average) : base(creationTime, successful, measurementSerie, result, average) { }
public QCellsCalculationResult(DateTime creationTime, bool successful, IMeasurementSerie measurementSerie, double result, double usl, double lsl, double average) : base(creationTime, successful, measurementSerie, result, average) { USL = usl; LSL = lsl; }