private AnalyticRuleSettings GetSettings( int n, CheckpointRpm rpm, IList <AnalyticRuleSettings> rules) { return(rules.First( r => CylinderNumberToCoilRuleTypeMapper.Map(r.RuleType) == n && RpmToCoilRuleTypeMapper.Map(r.RuleType) == rpm)); }
public AnalyticRulePetrolEngineInjectionTimeForRpm( CheckpointRpm rpm, AnalyticRuleSettings settings) : base(settings) { this.rpm = rpm; RegisterRequiredParameter(PsaParameterType.EngineRpm); RegisterRequiredParameter(PsaParameterType.InjectionTime); }
protected FitterLambdaVoltageBase(VehicleInformation info, CheckpointRpm rpm, AnalyticRuleType type) { if (info == null) { throw new ArgumentNullException("info"); } this.info = info; this.rpm = rpm; this.type = type; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { // 1. get our target rpm from settings PsaParameterData rpmParameter = set.GetParameterOfType(PsaParameterType.EngineRpm); // 2. find data in the dataset PsaParameterData oxygenSensorVoltageParameter = set.GetParameterOfType(GetOxygenSensorParameter()); // 3. get base line (rpm) IList <double> baseLine = rpmParameter.GetDoubles(); // 4. get dependant line (probe voltage) IList <double> dependantLine = oxygenSensorVoltageParameter.GetDoubles(); // 5. extract correlated median for base RPM value CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(baseLine, dependantLine, BaseValuesDifferencePercentageThreshold); CheckpointRpm rpm = GetTargetRpm(); double corellatedMedian = extractor.GetForBaseValue(Convert.ToDouble(rpm)); if (double.IsNaN(corellatedMedian)) { return; } // 6. apply atom settings SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = Math.Round(applier.GetMarkForValue(corellatedMedian), 1); // 7. save to marks history MarksHistory[date] = mark; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet source) { IList <double> baseLine = source.GetParameterOfType( PsaParameterType.EngineRpm).GetDoubles(); IList <double> dependantLine = source. GetCertainInjectorCorrections(injectorNumber).GetDoubles(); CorrelatedMedianExtractor correlatedMedianExtractor = new CorrelatedMedianExtractor(baseLine, dependantLine, BaseValuesDifferencePercentageThreshold); CheckpointRpm targetRpm = RuleTypeToRpm.Map(settings.RuleType); double resultValue = correlatedMedianExtractor.GetForBaseValue( Convert.ToDouble(targetRpm)); if (double.IsNaN(resultValue)) { return; } SettingsAtomApplierByAbsoluteValue applier = new SettingsAtomApplierByAbsoluteValue( settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(resultValue); }
private AnalyticRuleSettings GetInjectorCorrectionRuleSettings( IList <AnalyticRuleSettings> settings, CheckpointRpm rpm) { return(settings.FirstOrDefault(s => RuleTypeToRpm.Map(s.RuleType) == rpm)); }