Beispiel #1
0
        public void SetProgress(int value, SENSOR sensor)
        {

            switch (sensor)
            {
                case SENSOR.EEG:
                    this.Invoke((MethodInvoker)delegate
                    {
                        eegProgress.Value = value;
                    });
                    break;
                case SENSOR.HR:
                    this.Invoke((MethodInvoker)delegate
                    {
                        hrProgress.Value = value;
                    });
                    break;
                case SENSOR.GSR:
                    this.Invoke((MethodInvoker)delegate
                    {
                        gsrProgress.Value = value;
                    });
                    break;
                case SENSOR.FACE:
                    this.Invoke((MethodInvoker)delegate
                    {
                        faceProgress.Value = value;
                    });
                    break;
            }
        }
        public List <SENSOR> DanhSachCamBienCuaThietBi(string IDDV)
        {
            AGRIBOTSYSTEMDataContext context = new AGRIBOTSYSTEMDataContext();
            List <DVSS> lstDeviceSenSor      = context.DVSSes
                                               .Where(x => x.IDDV == IDDV)
                                               .ToList();

            var list = new List <DVSS>();

            foreach (var e in lstDeviceSenSor)
            {
                list.Add(new DVSS
                {
                    IDDV = e.IDDV,
                    IDSS = e.IDSS
                });
            }


            List <SENSOR> lstSensor = new List <SENSOR>();

            foreach (var item in lstDeviceSenSor)
            {
                SENSOR dv = context.SENSORs.FirstOrDefault(x => x.ID == item.IDSS);
                dv.DVSSes        = null;
                dv.TYPE_SS       = null;
                dv.WARNINGSMAXes = null;

                lstSensor.Add(dv);
            }
            return(lstSensor);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            SENSOR sENSOR = db.SENSORS.Find(id);

            db.SENSORS.Remove(sENSOR);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "Id,uid,threshold")] SENSOR sENSOR)
 {
     if (ModelState.IsValid)
     {
         db.Entry(sENSOR).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(sENSOR));
 }
        public ActionResult Create([Bind(Include = "Id,uid,threshold")] SENSOR sENSOR)
        {
            if (ModelState.IsValid)
            {
                db.SENSORS.Add(sENSOR);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(sENSOR));
        }
Beispiel #6
0
        private static void LogSENSOR(SENSOR sensor, int i, string header)
        {
            string sensorHeader = header + "SENSOR ";

            Log.Trace(sensorHeader + "index=" + i.ToString());
            LogCOMPONENT((COMPONENT)sensor, sensorHeader);

            Log.Trace(sensorHeader + "position=" + sensor.position.ToString());
            LogSpecifiedDate(sensor.installTime, sensor.installTimeSpecified, sensorHeader, "installTime");
            LogSpecifiedDate(sensor.birthDate, sensor.birthDateSpecified, sensorHeader, "birthDate");
            LogSpecifiedProp(sensor.alarmAlert, sensor.alarmAlertSpecified, sensorHeader, "alarmAlert");
            LogSpecifiedProp(sensor.alarmLow, sensor.alarmLowSpecified, sensorHeader, "alarmLow");
            LogSpecifiedProp(sensor.alarmHigh, sensor.alarmHighSpecified, sensorHeader, "alarmHigh");
            LogSpecifiedProp(sensor.alarmTWA, sensor.alarmTWASpecified, sensorHeader, "alarmTWA");
            LogSpecifiedProp(sensor.alarmSTEL, sensor.alarmSTELSpecified, sensorHeader, "alarmSTEL");
            LogSpecifiedProp(sensor.overRange, sensor.overRangeSpecified, sensorHeader, "overRange");
            LogSpecifiedProp(sensor.calTimeOut, sensor.calTimeOutSpecified, sensorHeader, "calTimeOut");
            LogSpecifiedProp(sensor.polarity, sensor.polaritySpecified, sensorHeader, "polarity");
            LogSpecifiedProp(sensor.tempMax, sensor.tempMaxSpecified, sensorHeader, "tempMax");
            LogSpecifiedProp(sensor.tempMin, sensor.tempMinSpecified, sensorHeader, "tempMin");
            LogSpecifiedProp(sensor.peakReading, sensor.peakReadingSpecified, sensorHeader, "peakReading");
            Log.Trace(sensorHeader + "calGasCode=" + sensor.calGasCode);
            LogSpecifiedProp(sensor.calGasConcentration, sensor.calGasConcentrationSpecified, sensorHeader, "calGasConcentration");
            LogSpecifiedProp(sensor.unitOfMeasurement, sensor.unitOfMeasurementSpecified, sensorHeader, "unitOfMeasurement");
            Log.Trace(sensorHeader + "gasDecting=" + sensor.gasDecting);
            LogSpecifiedProp(sensor.responseFactor, sensor.responseFactorSpecified, sensorHeader, "responseFactor");
            Log.Trace(sensorHeader + "softwareVersion=" + sensor.softwareVersion);
            Log.Trace(sensorHeader + "hardwareVersion=" + sensor.hardwareVersion);
            Log.Trace(sensorHeader + "dataVersion=" + sensor.dataVersion);
            LogSpecifiedProp(sensor.spanCoefMin, sensor.spanCoefMinSpecified, sensorHeader, "spanCoefMin");
            LogSpecifiedProp(sensor.spanCoefMax, sensor.spanCoefMaxSpecified, sensorHeader, "spanCoefMax");
            LogSpecifiedProp(sensor.zeroMin, sensor.zeroMinSpecified, sensorHeader, "zeroMin");
            LogSpecifiedProp(sensor.zeroMax, sensor.zeroMaxSpecified, sensorHeader, "zeroMax");
            LogSpecifiedProp(sensor.deadBand, sensor.deadBandSpecified, sensorHeader, "deadBand");
            LogSpecifiedProp(sensor.filter.ToString(), sensor.filterSpecified, sensorHeader, "filter");
            LogSpecifiedProp(sensor.tempCompLow, sensor.tempCompLowSpecified, sensorHeader, "tempCompLow");
            LogSpecifiedProp(sensor.tempCompHigh, sensor.tempCompHighSpecified, sensorHeader, "tempCompHigh");
            LogSpecifiedProp(sensor.tempCompM50, sensor.tempCompM50Specified, sensorHeader, "tempCompM50");
            LogSpecifiedProp(sensor.tempCompM40, sensor.tempCompM40Specified, sensorHeader, "tempCompM40");
            LogSpecifiedProp(sensor.tempCompM30, sensor.tempCompM30Specified, sensorHeader, "tempCompM30");
            LogSpecifiedProp(sensor.tempCompM20, sensor.tempCompM20Specified, sensorHeader, "tempCompM20");
            LogSpecifiedProp(sensor.tempCompM10, sensor.tempCompM10Specified, sensorHeader, "tempCompM10");
            LogSpecifiedProp(sensor.tempCompZ0, sensor.tempCompZ0Specified, sensorHeader, "tempCompZ0");
            LogSpecifiedProp(sensor.tempCompP10, sensor.tempCompP10Specified, sensorHeader, "tempCompP10");
            LogSpecifiedProp(sensor.tempCompP20, sensor.tempCompP20Specified, sensorHeader, "tempCompP20");
            LogSpecifiedProp(sensor.tempCompP30, sensor.tempCompP30Specified, sensorHeader, "tempCompP30");
            LogSpecifiedProp(sensor.tempCompP40, sensor.tempCompP40Specified, sensorHeader, "tempCompP40");
            LogSpecifiedProp(sensor.tempCompP50, sensor.tempCompP50Specified, sensorHeader, "tempCompP50");
            LogSpecifiedProp(sensor.tempCompP60, sensor.tempCompP60Specified, sensorHeader, "tempCompP60");
            LogSpecifiedProp(sensor.tempCompP70, sensor.tempCompP70Specified, sensorHeader, "tempCompP70");
            LogSpecifiedProp(sensor.displayDecimal, sensor.displayDecimalSpecified, sensorHeader, "displayDecimal");
        }
        // GET: SENSORs/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SENSOR sENSOR = db.SENSORS.Find(id);

            if (sENSOR == null)
            {
                return(HttpNotFound());
            }
            return(View(sENSOR));
        }
        public bool UpdateStatus(string ID, string value)
        {
            try
            {
                AGRIBOTSYSTEMDataContext context = new AGRIBOTSYSTEMDataContext();
                SENSOR dv = context.SENSORs.FirstOrDefault(x => x.ID == ID);

                if (dv != null)
                {
                    dv.NUMBER = value;
                    context.SubmitChanges();
                    return(true);
                }
            }
            catch { }
            return(false);
        }
Beispiel #9
0
                    public static SENSOR ToSensor(string kks_code)
                    {
                        SENSOR sensorRes = new SENSOR()
                        {
                            id_object = -1,num_item = -1
                        };

                        int value = -1;

                        if ((kks_code.Contains("OBJECT") == true) &&
                            (kks_code.Contains("ITEM") == true) &&
                            (kks_code.Contains("_") == true))
                        {
                            if (int.TryParse(kks_code.Split('_')[0].Substring("OBJECT".Length),out value) == true)
                            {
                                sensorRes.id_object = value;

                                if (int.TryParse(kks_code.Split('_')[1].Substring("ITEM".Length),out value) == true)
                                {
                                    sensorRes.num_item = value;
                                }
                                else
                                {
                                    ;
                                }
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        {
                            ;
                        }

                        return(sensorRes);
                    }
Beispiel #10
0
        private IEnumerable<Tuple<List<double>, int>> GetTrainingData(SENSOR machine, int start, int trainingEnd)
        {

            //Split into training & prediction set
            List<List<double>> featureVectors = new List<List<double>>();
            List<int> timeStamps = new List<int>();

            if (machine == SENSOR.GSR)
            {
                int stepSize = 100;
                for (int i = 0; i < _fdAnomaly.gsrData.Last().timestamp - _fdAnomaly.gsrData.First().timestamp - GSR_DURATION + GSR_DELAY; i += stepSize)
                {
                    List<double> featureVector = new List<double>();
                    List<double> data = _fdAnomaly.gsrData.SkipWhile(x => (x.timestamp - _fdAnomaly.gsrData.First().timestamp) < i + GSR_DELAY).TakeWhile(x => i + GSR_DURATION > (x.timestamp - _fdAnomaly.gsrData.First().timestamp)).Select(x => (double)x.resistance).ToList();
                    if (data.Count == 0) continue;

                    featureVector.Add(data.Average());
                    featureVector.Add(data.Max());
                    featureVector.Add(data.Min());
                    double avg = data.Average();
                    double sd = Math.Sqrt(data.Average(x => Math.Pow(x - avg, 2)));
                    featureVector.Add(sd);
                    featureVectors.Add(featureVector);
                    timeStamps.Add(i);
                }
            }
            featureVectors = featureVectors.NormalizeFeatureList<double>(Normalize.OneMinusOne).ToList();
            var dataSet = featureVectors.Zip(timeStamps, (first, second) => { return Tuple.Create(first, second); });

            var trainingSet = dataSet.SkipWhile(x => x.Item2 < start).TakeWhile(x => x.Item2 < trainingEnd);

            return trainingSet;
        }
Beispiel #11
0
        public static List <DataReading> GetDataFromInterval(List <DataReading> original, int start, SENSOR machine)
        {
            int offset   = 0;
            int duration = 0;

            if (machine == SENSOR.GSR)
            {
                offset   = 2000;
                duration = 5000;
            }

            List <DataReading> splicedData = new List <DataReading>();

            splicedData.AddRange(
                original.Where(
                    x => x.timestamp >= (start + original.First().timestamp + offset) &&
                    x.timestamp <= (start + original.First().timestamp + duration
                                    )
                    )
                );

            return(splicedData);
        }
Beispiel #12
0
 private async Task<NoveltyResult> DoVotingNoveltyDetection(SENSOR sensor, int start, int end, double nu, string type)
 {
     string sensorPath = path + "/" + sensor.ToString();
     var data = featureVectors[sensor].Select(x => x.Features).ToList();
     ConcurrentStack<SVMParameter> svmParams = new ConcurrentStack<SVMParameter>();
     svmParams.PushRange(GenerateVotingSVMParameters(nu).ToArray());
     SetProgressMax(svmParams.Count + 1);
     NoveltyResult bestResult = null;
     Mutex bestResultMu = new Mutex(false, sensor.ToString());
     int count = 1;
     List<Task> tasks = new List<Task>();
     for (int i = 0; i < threadMAX.Value; i++)
     {
         Task task = Task.Run(() => PredictionVoteThread(ref count, sensor, start, end, ref svmParams, data, svmParams.Count, ref bestResult, bestResultMu, type));
         tasks.Add(task);
     }
     await Task.WhenAll(tasks);
     
     bestResultMu.Dispose();
     return bestResult;
 }
Beispiel #13
0
        private void PredictionNuThread(ref int count, SENSOR sensor, int start, int end, ref ConcurrentStack<SVMParameter> svmParams, List<SVMNode[]> data, int svmCount, ref NoveltyResult bestCoveredResult, ref Mutex mutex, ref ConcurrentBag<string> nuResults)
        {
            OneClassClassifier occ = new OneClassClassifier(data);
            List<OneClassFV> anomali = new List<OneClassFV>();
            List<Events> eventResult = new List<Events>();
            int maxCount = svmCount;
            string sensorPath = path + "/" + sensor.ToString();
            foreach (Events p in events)
            {
                var evt = p.Copy();
                eventResult.Add(evt);
            }
            while (!svmParams.IsEmpty)
            {
                SVMParameter svmParam = null;
                svmParams.TryPop(out svmParam);
                if (svmParam == null)
                {
                    break;
                }
                anomali = new List<OneClassFV>();
                occ.CreateModel(svmParam);
                anomali.AddRange(occ.PredictOutliers(featureVectors[sensor].Where(x => start < x.TimeStamp && x.TimeStamp < end).ToList()));
                PointsOfInterest dPointsOfInterest = new PointsOfInterest(anomali);

                foreach (Events evt in eventResult)
                {
                    evt.SetPointOfInterest(dPointsOfInterest);
                }

                NoveltyResult tempResult = new NoveltyResult(dPointsOfInterest, eventResult, start, end, svmParam, anomali);
                /*NoveltyResult.ConfusionMatrix cfm = tempResult.CalculateConfusionMatrix();
                decimal tpr = ((decimal)cfm.TruePostive) / ((decimal)cfm.TruePostive + cfm.FalseNegative);
                decimal fpr = 1 - ((decimal)cfm.TrueNegative / ((decimal)cfm.TrueNegative + cfm.FalsePostive));
                */
                double temp = tempResult.FlaggedAreaSize();

                double temp2 = tempResult.CalculateTotalNormalArea();
                double areaCovered = ((double)tempResult.FlaggedAreaSize() / tempResult.CalculateTotalNormalArea() > 1) ? 1 : tempResult.FlaggedAreaSize() / (double)tempResult.CalculateTotalNormalArea();
                nuResults.Add($"{tempResult.parameter.Nu.ToString()}:"
                   + $"{tempResult.CalculateHitResult().eventHits/ (double)tempResult.CalculateHitResult().eventsTotal};" 
                   + $"{tempResult.CalculateHitResult().hits / ((double)tempResult.CalculateHitResult().misses+ tempResult.CalculateHitResult().hits)};"
                   + $"{areaCovered}");

                mutex.WaitOne();
                count++;
                SetProgress(count, sensor);
                mutex.ReleaseMutex();
            }
            Log.LogMessage(sensor + " done!");
        }
Beispiel #14
0
        private void PredictionThread(ref int count, SENSOR sensor, int start, int end, ref ConcurrentStack<SVMParameter> svmParams, List<SVMNode[]> data, int svmCount, ref NoveltyResult bestCoveredResult, ref Mutex mutex)
        {
            OneClassClassifier occ = new OneClassClassifier(data);
            List<OneClassFV> anomali = new List<OneClassFV>();
            List<Events> eventResult = new List<Events>();
            List<OneClassFV> outliersFromSam = new List<OneClassFV>();
            int maxCount = svmCount;
            string sensorPath = path + "/" + sensor.ToString();
            foreach (Events p in events)
            {
                var evt = p.Copy();
                eventResult.Add(evt);
            }
            while (!svmParams.IsEmpty)
            {
                SVMParameter svmParam = null;
                svmParams.TryPop(out svmParam);
                if (svmParam == null)
                {
                    break;
                }
                anomali = new List<OneClassFV>();
                occ.CreateModel(svmParam);
                anomali.AddRange(occ.PredictOutliers(featureVectors[sensor].Where(x => start < x.TimeStamp && x.TimeStamp < end).ToList()));
                PointsOfInterest dPointsOfInterest = new PointsOfInterest(anomali);

                foreach (Events evt in eventResult)
                {
                    evt.SetPointOfInterest(dPointsOfInterest);
                }

                NoveltyResult tempResult = new NoveltyResult(dPointsOfInterest, eventResult, start, end, svmParam, anomali);
                /*NoveltyResult.ConfusionMatrix cfm = tempResult.CalculateConfusionMatrix();
                decimal tpr = ((decimal)cfm.TruePostive) / ((decimal)cfm.TruePostive + cfm.FalseNegative);
                decimal fpr = 1 - ((decimal)cfm.TrueNegative / ((decimal)cfm.TrueNegative + cfm.FalsePostive));
                */
                mutex.WaitOne();

                if (bestCoveredResult == null)
                {
                    bestCoveredResult = new NoveltyResult(dPointsOfInterest, eventResult, start, end, svmParam, anomali);
                }
                else if (tempResult.CalculateCoveredScore() > bestCoveredResult.CalculateCoveredScore())
                {
                    //bestResult = new NoveltyResult(dPointsOfInterest, eventResult, start, end, svmParam, anomali); ;
                    bestCoveredResult = tempResult;
                }

                count++;
                SetProgress(count, sensor);
                mutex.ReleaseMutex();
            }
            Log.LogMessage(sensor + " done!");
        }
Beispiel #15
0
       // private int numberOfTasks = 10;
        private async Task<NoveltyResult> DoNoveltyDetection(SENSOR sensor, int start, int end)
        {
            string sensorPath = path + "/" + sensor.ToString();
            var data = featureVectors[sensor].Select(x => x.Features).ToList();
            ConcurrentStack<SVMParameter> svmParams = new ConcurrentStack<SVMParameter>();
            //Debug purpose
            /*for (int i = 0; i < 10; i++)
            {
                SVMParameter s = new SVMParameter();
                s.C = 100;
                s.Gamma = 0.01;
                s.Kernel = SVMKernelType.RBF;
                s.Type = SVMType.ONE_CLASS;
                s.Nu = 0.01;
                svmParams.Push(s);
            }*/
            svmParams.PushRange(GenerateOneClassSVMParameters().ToArray());
            SetProgressMax(svmParams.Count + 1);
            NoveltyResult bestCoveredResult = null;
            Mutex bestResultMu = new Mutex(false, sensor.ToString());
            int count = 1;
            List<Task> tasks = new List<Task>();
            for (int i = 0; i < threadMAX.Value; i++)
            {
                Task task = Task.Run(() => PredictionThread(ref count, sensor, start, end, ref svmParams, data, svmParams.Count, ref bestCoveredResult, ref bestResultMu));
                tasks.Add(task);
            }
            await Task.WhenAll(tasks);
            List<int> integers = Enumerable.Range(1, 100).ToList();
            List <double> nus = integers.Select(x => ((double)x) / 100).ToList();
            //Cover
            foreach (double d in nus)
            {
                SVMParameter para = new SVMParameter();
                para.Gamma = bestCoveredResult.parameter.Gamma;
                para.Nu = d;
                para.Kernel = bestCoveredResult.parameter.Kernel;
                svmParams.Push(para);
            }

            count = 1;
            SetProgressMax(svmParams.Count + 1);
            bestResultMu.Dispose();
            bestResultMu = new Mutex(false, sensor.ToString());
            List<Task> nuCov = new List<Task>();
            ConcurrentBag<string> covNu = new ConcurrentBag<string>();
            for (int i = 0; i < threadMAX.Value; i++)
            {
                Task task = Task.Run(() => PredictionNuThread(ref count, sensor, start, end, ref svmParams, data, svmParams.Count, ref bestCoveredResult, ref bestResultMu, ref covNu));
                tasks.Add(task);
            }
            await Task.WhenAll(tasks);
            File.WriteAllLines(path + "/Params.txt", new List<string> { bestCoveredResult.parameter.Gamma.ToString(), bestCoveredResult.parameter.Kernel.ToString() });
            File.WriteAllLines(path + $"/{sensor.ToString()}CovNu.txt", covNu.ToList());
            
            bestResultMu.Dispose();
            return bestCoveredResult;
        }
Beispiel #16
0
 private List<OneClassFV> PredictSlice(SENSOR machine, List<OneClassFV> data)
 {
     return machines[machine].PredictOutliers(data);
 }
Beispiel #17
0
        private void CreateSVM(SENSOR machine, List<OneClassFV> trainingSet)
        {

            var data = trainingSet.Select(x => x.Features).ToList();

            OneClassClassifier occ = new OneClassClassifier(data);
            SVMParameter svmP = new SVMParameter();
            svmP.Kernel = SVMKernelType.RBF;
            svmP.C = 100;
            svmP.Gamma = 0.01;
            svmP.Nu = 0.01;
            svmP.Type = SVMType.ONE_CLASS;
            occ.CreateModel(svmP);

            machines.Add(machine, occ);
        }