Esempio n. 1
0
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            IList <double> rpmData = set.GetParameterOfType(
                PsaParameterType.EngineRpm).GetDoubles();
            IList <double> injectionTimeData = set.GetParameterOfType(
                PsaParameterType.InjectionTime).GetDoubles();
            CorrelatedMedianExtractor extractor =
                new CorrelatedMedianExtractor(rpmData, injectionTimeData, 5);
            double value = extractor.GetForBaseValue((int)rpm);

            if (double.IsNaN(value))
            {
                return;
            }
            ISettingsAtomApplier applier = new SettingsAtomApplier(
                Settings.SettingsMolecule.GetPriorityAtom());
            double mark = applier.GetMarkForValue(value);

            if (double.IsNaN(mark))
            {
                return;
            }
            MarksHistory[date] = mark;
        }
Esempio n. 2
0
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            IList <double>        rpmData  = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>        timeData = set.GetParameterOfType(PsaParameterType.InjectionTime).GetDoubles();
            EngineStartupDetector detector = new EngineStartupDetector(rpmData);

            if (!detector.EngineStartupDetected())
            {
                return;
            }
            IList <int> indexes  = detector.GetEngineStartupPointIndexes();
            double      peakTime = 0;

            foreach (int i in indexes)
            {
                double newPeakTime = StartupRegionExtractor.Extract(i, timeData).Max();
                if (newPeakTime > peakTime)
                {
                    peakTime = newPeakTime;
                }
            }
            if (peakTime == 0)
            {
                return;
            }
            SettingsAtomApplier applier = new SettingsAtomApplier(
                Settings.SettingsMolecule.GetPriorityAtom());
            double mark = applier.GetMarkForValue(peakTime);

            MarksHistory[date] = mark;
        }
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            IList <double>        rpmData      = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>        requiredData = set.GetParameterOfType(requiredParameter).GetDoubles();
            EngineStartupDetector detector     = new EngineStartupDetector(rpmData);

            if (!detector.EngineStartupDetected())
            {
                return;
            }
            IList <int> startupIndexes = detector.GetEngineStartupPointIndexes();

            foreach (int startupIndex in startupIndexes)
            {
                double peak = StartupRegionExtractor.Extract(startupIndex, requiredData).Max();
                if (double.IsNaN(peak))
                {
                    continue;
                }
                SettingsAtomApplier applier = new SettingsAtomApplier(
                    Settings.SettingsMolecule.GetPriorityAtom());
                double mark = applier.GetMarkForValue(peak);
                if (!double.IsNaN(mark))
                {
                    MarksHistory[date] = mark;
                }
            }
        }
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            IList <double>            rpmData           = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>            pressureDeltaData = set.GetParameterOfType(PsaParameterType.FuelSystemPressureDelta).GetDoubles();
            CorrelatedMedianExtractor medianExtractor   =
                new CorrelatedMedianExtractor(rpmData, pressureDeltaData, 5);
            double value = medianExtractor.GetForBaseValue(Convert.ToDouble((int)Rpm));

            if (double.IsNaN(value))
            {
                return;
            }
            SettingsAtomApplier applier = new SettingsAtomApplier(
                Settings.SettingsMolecule.GetPriorityAtom());

            MarksHistory[date] = applier.GetMarkForValue(value);
        }
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            IList <double>            rpmLine        = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>            chargeTimeLine = set.GetParameterOfType(requiredParameter).GetDoubles();
            CorrelatedMedianExtractor exractor       = new CorrelatedMedianExtractor(
                rpmLine, chargeTimeLine, 5);
            double value = exractor.GetForBaseValue((int)Rpm);

            if (double.IsNaN(value))
            {
                return;
            }
            SettingsAtomApplier applier = new SettingsAtomApplier(
                Settings.SettingsMolecule.GetPriorityAtom());

            MarksHistory[date] = applier.GetMarkForValue(value);
        }
Esempio n. 6
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;
        }
        protected override void PickFromPsaParametersSet(
            DateTime date, PsaParametersSet set)
        {
            PsaParameterData rpm = set.GetParameterOfType(
                PsaParameterType.EngineRpm);
            PsaParameterData voltage = set.GetParameterOfType(
                PsaParameterType.BatteryVoltage);
            IList <double> startupVoltageValues =
                ExtractStartupVoltageValues(rpm, voltage);

            if (startupVoltageValues.Count == 0)
            {
                // no action - this set does not have engine start info
                return;
            }
            double minVoltageValue      = startupVoltageValues.Min();
            SettingsAtomApplier applier = new SettingsAtomApplier(
                Settings.SettingsMolecule.GetPriorityAtom());
            double mark =
                Math.Round(applier.GetMarkForValue(minVoltageValue), 1);

            MarksHistory[date] = mark;
        }