Sida 11 av 20

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 22:28:23
av Lennart Aspenryd
Ett bra och ärligt sätt att få respons på sina tankar är ju att lägga ut en viss problemställning.
Det finns alltid lösningar, men Tid Pengar och allmänna Resurser kan ställa till det.
Så Upp till bevis Lägg ut problem och lösning. Jag antar att TomasL inte vill släppa sina egna regleringar, men exempel på del lösningar kan vara sevärda! Samma för dig DanielM ! Ge konkreta exempel!

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 23:01:12
av DanielM
TomasL bluffar nog lite.

Men visst ska jag ge ett gott exempel! Här är ett problem som löste. Adaptiv PI-regulator. Nu börjar många säkert yra "För avancerat". Men lyssna nu noga :)

Vi alla vet att en PI-regulator kan beskrivas lite enkelt på formeln:
\(u(t) = Pe(t) + I \int e(t)\)

Där \(P, I\) väljs utav användaren. En PI-regulator används oftast för att D-delen kan ställa till det vid brus, eller om man har dålig intepolering.

Detta är en Adaptive Model Reference Control regulator. I praktiken en självinställande PI-regulator. Ja, den fungerar.
\(u(t) = -\gamma r(t) \int(r(t)y(t) - r^2(t)) - \gamma y(t)\int(y^2(t) - y(t)r(t))\)

Där \(\gamma\) är ett litet tal t.ex. 0.0001. Det är inlärningsfaktorn. Hemligheten bakom detta är att man "konverterar" om "P":et till ett "I" där P:et växer grundat på hur långt ifrån vi ligger från felet och I:et växer grundat på hur starkt felet är, dock inte hur långt det är från referensen.

Om man känner för det så kan man seriekoppla en överföringsfunktion tillsammans med \(r(t)\)

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 23:03:00
av TomasL
TomasL bluffar nog lite.
Varför skulle jag bluffa, och vad skulle jag bluffa om?

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 23:11:25
av TomasL
Vore intressant att veta hur du hanterar slumpmässiga störningar, av slumpmässig storlek och slumpmässig längd och slumpmässiga i tid. Dvs reglera ett system där ditt ärvärde i princip är vitt brus.

Eftersom Ditt system kräver en noggrant definierad modell (dvs inte slumpmässig), och inlärning (det går per definition inte att lära ett system baserat på slumpmässiga förändringar).

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 23:22:59
av DanielM
TomasL skrev:
TomasL bluffar nog lite.
Varför skulle jag bluffa, och vad skulle jag bluffa om?
Du verkar mystiskt hemlighetsfull och du var inte medveten om att brus finns i verkligheten, men du var snabb på att hänvisa att du har lång arbetserfarenhet och du förkastar andras metoder utan att ens veta vad diskussionen handlar om.

Vitt brus är något som alla känner till som håller på med signaler. Jag gav dig även ett praktiskt sätt där man kan räkna på det vita bruset. Jag klandrar inte folk som inte kan allt. Men jag får misstankar att du gillar gärna att blåsa upp dig lite. Jag vet att du är duktig och har enorm kompetens, men skryt märks faktiskt. :)
TomasL skrev:Vore intressant att veta hur du hanterar slumpmässiga störningar, av slumpmässig storlek och slumpmässig längd och slumpmässiga i tid. Dvs reglera ett system där ditt ärvärde i princip är vitt brus.

Eftersom Ditt system kräver en noggrant definierad modell (dvs inte slumpmässig), och inlärning (det går per definition inte att lära ett system baserat på slumpmässiga förändringar).
Jag brukar framkoppla störningar som stör processen. I eventuellt identifiera om processen. Märker jag att störningen har en fix dödtid så brukar jag sätta in en medveten fördröjning.

Japp! Det går att lära på slumpmässiga signaler. Det är väldigt svårt och kräver mycket data. Men LSTM-nätverk används för "forecasting" och då kan du skapa en modell som räknar fram att "snart" så kommer störningen tillbaka. LSTM-nätverk används först och främst vid skrivning av text på google, men används mycket väl inom aktiemarknaden. Jag har dock inte stött på stokastiska processer än. Närmast är väll en LQG med kalman filter. Men enklaste att styra en process som utsätts slumpmässig störning är att identifiera om processen.

För att bygga ett LSTM-nätverk så krävs t.ex. kunskaper i Java, statistik (regression) och Deeplearning4J.
http://deeplearning4j.org/

Det jag håller på med är deterministiska processer som är linjära inom visst område (0-100 grader t.ex.), men dom behöver den där automatiska intrimmningen. Det kan vara en PID eller så kan det vara det jag beskrev ovan. :tumupp:

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 2 december 2019, 23:56:31
av TomasL
Nja, jag tror du inte riktigt fattat, det går inte förutse slumpmässiga störningar, på grund av att de är just slumpmässiga, det går ej heller att förutse storleken på störningarna eftersom även den är slumpmässig, samt att det inte går att förutse längden på störningen, eftersom den också är slumpmässig.
Följaktligen är det fullständigt omöjligt att lära ett system utifrån detta.

Om du då som du säger filtrerar bort det vita bruset, ja, då har du ingen signal kvar, eftersom signalen är just vitt brus (i princip), dvs slumpmässiga störningar av slumpmässig magnitud med slumpmässig längd.
Du verkar mystiskt hemlighetsfull och du var inte medveten om att brus finns i verkligheten, men du var snabb på att hänvisa att du har lång arbetserfarenhet och du förkastar andras metoder utan att ens veta vad diskussionen handlar om.
Hmm, my bad, jag tolkade det som ett påhopp, dvs att jag har vitt brus i skallen, vilket jag iofs har, eftersom jag tänker i "multipla dimensioner", typ. :wink:

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 3 december 2019, 00:25:28
av DanielM
Jag vet att det går inte till 100% att prediktera. Annars vore aktiemarknaden kaos(are). Men desto mer mätdata man har, desto närmare kommer man. Det är detta som är tanken med LSTM. Men som jag sade, enklaste är att omdefiniera rekrusivt systemet för varje iteration och reglera, trots störningar.

Har man "superfilter" (jag kallar det för det) så har man ingen signal kvar. Fasförskjutningen i filtret blir enorm och förstärkningen blir låg. Det är korrekt. Det är därför man använder estimering för brus. Ett kalman filter är ett klassiskt och väl beprövad metod för att estimera. Så jag brukar lägga till ett kalman filter när jag har störningar i mätningen. Har du en modell av systemet så kan du använda ett Bucy-Kalman filter. Sådant filter fungerar riktigt bra om processen är någorlunda linjär. Dessutom väldigt robust då filtret är enkelt.

Det har helt uppenbart att vi talade om signaler. Påhopp är något som du håller på med "Typiskt för inkompetenta programmerare", " lär dig skriva program eller byt bransh", "huruvida man skriver skitkod eller inte", "visar hur okunnig du är" osv.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 3 december 2019, 00:34:57
av TomasL
Aktiemarknaden har inte något slumpmässigt beteende, utan är snarare väldigt förutsägbar, följaktligen relativt enkel att modellera.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 3 december 2019, 00:37:43
av DanielM
Har man mycket data, som jag sade ovan, så kommer man väldigt nära.

Regression är enormt kraftfullt! Jag använder regression dagligen.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 3 december 2019, 00:45:41
av TomasL
Det kvittar hur mycket data du har, slumpmässigt är just slumpmässigt, det är först när du har en oändlig mängd data över en oändligt lång tid, som du kan börja tolka rätt.
Ta spel exempelvis, det finns av naturliga skäl inga system som kan förutspå vinster i slumpspel, såsom Lotto mfl, oavsett hur mycket data det finns.
I spel såsom Trav mm kan du med viss lycka förutspå utgången, med hjälp av statistik och data.

Så nej du klarar inte av dessa reglerproblem med ditt system.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 3 december 2019, 20:03:30
av DanielM
Har du ens hörtalas som sannolikhet? Det går att komma väldigt nära, men inte exakt. Varför tror du det forskas otroligt mycket inom sannolikhetsläran?

Vad vet du om det? Du verkar veta allt, det du inte ens har sett. Skärpning nu.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 5 december 2019, 13:10:27
av maDa
Som att slå i ett spik med kärnvapen.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 5 december 2019, 15:18:41
av svanted
ett märkligt bråk i diffusa termer...

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 6 december 2019, 21:00:36
av DanielM
Bara så ni vet det så funderar jag på att ta TomasL's råd att ändra om float till long :) Eller uint32_t med andra ord.

Jag hoppas det ska gå bra att bara ersätta floats med heltalsberäkning? Inget annat jag behöver ta hänsyn till?
Jag tänker använda typedef.

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Postat: 6 december 2019, 21:15:51
av TomasL
För att det skall vara effektivt, så behöver du skala om dina data på lämpligt sätt, samt fundera på hur matematiken ser ut, dvs utnyttja processorn till det maximala, dvs använda skiftoperationer i stället för division och multiplikation osv.
Du kan helt enkelt inte bara ta det befintliga och typedefa dina floats till heltal, det funkar inte.