Exemplo n.º 1
0
 private AnalyticRuleSettings GetSettings(
     int n, CheckpointRpm rpm, IList <AnalyticRuleSettings> rules)
 {
     return(rules.First(
                r => CylinderNumberToCoilRuleTypeMapper.Map(r.RuleType) == n &&
                RpmToCoilRuleTypeMapper.Map(r.RuleType) == rpm));
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 private AnalyticRuleSettings GetInjectorCorrectionRuleSettings(
     IList <AnalyticRuleSettings> settings, CheckpointRpm rpm)
 {
     return(settings.FirstOrDefault(s =>
                                    RuleTypeToRpm.Map(s.RuleType) == rpm));
 }