{"id":25827,"date":"2019-11-20T17:06:14","date_gmt":"2019-11-20T16:06:14","guid":{"rendered":"http:\/\/help.qualiware.it\/qw-help\/?p=25827"},"modified":"2020-01-01T22:59:56","modified_gmt":"2020-01-01T21:59:56","slug":"stima-di-valori-in-un-task-utilizzando-i-modelli-di-machine-learning-e-la-primitiva-qwml-prediction","status":"publish","type":"post","link":"https:\/\/help.qualiware.it\/qw-help\/stima-di-valori-in-un-task-utilizzando-i-modelli-di-machine-learning-e-la-primitiva-qwml-prediction\/","title":{"rendered":"Stima di valori in un Task utilizzando i modelli di Machine Learning e la primitiva QWml.Prediction"},"content":{"rendered":"<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">' In questo esempio viene effettuata la stima di due valori di livello idrometrico utilizzando la primitiva QWml.Prediction e partendo da due differenti modelli di Machine Learning, \r\n' aventi codice \"0002\" e \"0003\". \r\n' La stima viene memorizzata nella tabella IOTLOG, e i valori delle variabili indipendenti vengono acquisiti sempre dalla tabella IOTLOG, e corrispondono alle ultime letture disponibili\r\n' dei livelli in due punti a monte rispetto al punto per il quale si vuole calcolare la stima. Quest'ultima sar\u00e0 riferita riferita a 4 ore avanti rispetto all'orario dell'ultima lettura \r\n' nel punto pi\u00f9 a valle prima di quello per il quale si calcola la stima, supponendo che questo sia il periodo che l'acqua impiega a percorrere la distanza fra i due punti.\r\n\r\nDim Q as new QWTable\r\nQ.Database=DB\r\nQ.sql=\"select * from IOTLOG\"\r\nQ.allowallrecords=false\r\nQ.active=true\r\n\r\nDim Q1 as new QWTable\r\nQ1.Database=DB\r\nQ1.sql=\"select \"\r\nQ1.sql+=\"i.DATA,\"\r\nQ1.sql+=\"convert(real,(select VALUE from IOTLOG i1 where i1.DATA=Dateadd(minute,-1*60,i.DATA) and i1.DEVICENAME='RENO' and i1.SENSORNAME = 'SASSO MARCONI')) as 'SASSO_MARCONI', \"\r\nQ1.sql+=\"convert(real,(select VALUE from IOTLOG i1 where i1.DATA=i.DATA and i1.DEVICENAME='RENO' and i1.SENSORNAME = 'CHIUSA CASALECCHIO')) as 'CHIUSA_CASALECCHIO' \"\r\nQ1.sql+=\"from IOTLOG i where DEVICENAME='RENO' and SENSORNAME='BONCONVENTO' and DATA&gt;=dateadd(day,-2,getdate()) group by DATA order by DATA \"\r\nQ1.allowallrecords=false\r\nQ1.active=true\r\n\r\nwhile not q1.rowset.endofset\r\n   ' Stima l'altezza \r\n   dim errmsg as string\r\n   dim score as double\r\n   dim values as new assocarray\r\n   values(\"SASSO_MARCONI\")=q1.rowset.fields(\"SASSO_MARCONI\").value\r\n   values(\"CHIUSA_CASALECCHIO\")=q1.rowset.fields(\"CHIUSA_CASALECCHIO\").value   \r\n\r\n   if not empty(q1.rowset.fields(\"SASSO_MARCONI\").value) and not empty(q1.rowset.fields(\"CHIUSA_CASALECCHIO\").value)\r\n      score=QWml.Prediction(DB.QWSession, \"0002\", Values, errmsg) ' Previsione\r\n   \r\n      if empty(errmsg)\r\n         dim Data as datetime=dateadd(Dateinterval.minute,4*60,q1.rowset.fields(\"DATA\").value) ' La data cui si riferisce la stima \u00e8 4 ore avanti quella della lettura a Casalecchio, che \u00e8 approssimativamente il tempo impiegato dal flusso a percorrere il tragitto\r\n\r\n         if not q.rowset.findkey(Data,\"RENO\",\"BONCONVENTO_P4H_0002\")\r\n             q.beginappend()\r\n             q.replace(\"DATA\",data)\r\n             q.replace(\"DEVICENAME\",\"RENO\")\r\n             q.replace(\"SENSORNAME\",\"BONCONVENTO_P4H_0002\")\r\n             q.replace(\"VALUE\",score)\r\n            q.saverecord()\r\n         End If\r\n      else\r\n         throw new exception(\"Errore durante la stima 0002: \"+errmsg)\r\n      End If\r\n      \r\n      score=QWml.Prediction(DB.QWSession, \"0003\", Values, errmsg) ' Previsione\r\n   \r\n      if empty(errmsg)\r\n         dim Data as datetime=dateadd(Dateinterval.minute,4*60,q1.rowset.fields(\"DATA\").value) ' La data cui si riferisce la stima \u00e8 4 ore avanti quella della lettura a Casalecchio, che \u00e8 approssimativamente il tempo impiegato dal flusso a percorrere il tragitto\r\n\r\n         if not q.rowset.findkey(Data,\"RENO\",\"BONCONVENTO_P4H_0003\")\r\n             q.beginappend()\r\n             q.replace(\"DATA\",data)\r\n             q.replace(\"DEVICENAME\",\"RENO\")\r\n             q.replace(\"SENSORNAME\",\"BONCONVENTO_P4H_0003\")\r\n             q.replace(\"VALUE\",score)\r\n            q.saverecord()\r\n         End If\r\n      else\r\n         throw new exception(\"Errore durante la stima: \"+errmsg)\r\n      End If\r\n      \r\n   End If \r\n\r\n   Q1.rowset.next()\r\nEnd While\r\n\r\nQ.active=false\r\nQ1.active=false\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&#8216; In questo esempio viene effettuata la stima di due valori di livello idrometrico utilizzando la primitiva QWml.Prediction e partendo da due differenti modelli di Machine Learning, &#8216; aventi codice &#8220;0002&#8221; e &#8220;0003&#8221;. &#8216; La stima viene memorizzata nella tabella IOTLOG, e i valori delle variabili indipendenti vengono acquisiti sempre dalla tabella IOTLOG, e corrispondono&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[65],"tags":[82],"acf":[],"_links":{"self":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/25827"}],"collection":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/comments?post=25827"}],"version-history":[{"count":0,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/25827\/revisions"}],"wp:attachment":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/media?parent=25827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/categories?post=25827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/tags?post=25827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}