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)); }
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); }
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); }
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; }
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); }
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; }
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!"); }
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!"); }
// 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; }
private List<OneClassFV> PredictSlice(SENSOR machine, List<OneClassFV> data) { return machines[machine].PredictOutliers(data); }
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); }