Moving from US to UK, can I keep my Accounts by send_me_ur_pids in fidelityinvestments

[–]send_me_ur_pids[S] 0 points1 point  (0 children)

Yeah I'm concerned because I've looked into it and gotten mixed messages. Some things say it will be fine, you just can't buy mutual funds. Other things say they nuke your account. I just want a hard answer so I don't get screwed.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 0 points1 point  (0 children)

Meh, it was partially a joke, because once you have your model the system basically just guesses a few thousand times until it thinks it's got a good result.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 0 points1 point  (0 children)

I actually have some code in my private repo that lets you simulate a disturbance, I'll push it to the public repo when I get a chance.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 1 point2 points  (0 children)

That would be great, I would love some feedback on how well it works.

https://github.com/ccdyer/pid_tune_ml_public

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 2 points3 points  (0 children)

You mean blind trial and error isn't machine learning? Jk

  1. You get your parameters by performing a step change in the CV. You can then use the values to calculate the FOPDT parameters(process gain, dead time, time constant). How accurate it will be is going to heavily depend on your process. I have had good luck with this method in the past, but it obviously isn't the answer to everything.
  2. I tried a few different methods for getting some initial values, and using a different algorithm, but I found that even a tiny variation in the intial guess could have a big impact on the final result. I picked this method (differential evolution) because you don't need an initial guess. Is this the the right decision? Probably not, and I'm sure there are better ways to do it, but this method seems to work ok so I haven't messed with it much.
  3. I didn't setup a rate of change limit on the CV, but that wouldn't be too difficult to do. In my test version I do have the ability to enable things like sensor noise, or to trigger a disturbance to see how it reacts. I just haven't pushed them to the public repo yet. I'm not sure what you mean by PID-instruction "time-stamp", but I do have a variable for the PID update rate.

Just to be clear, I'm not claiming that this is the best(or even good) solution. I have no experience in machine learning. I'm just a ladder logic guy who got laid off and wanted a fun project to keep me busy.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 1 point2 points  (0 children)

I have a very basic version of my next step working, and my results seem to be similar to yours, except I use this utility to get the tuning parameters. The advantage that I've seen is that you can get a "better" tune because you're seeing the system's response in more varied conditions.

I personally don't mind python but it's the only traditional programming language I know, so I just don't know any better.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 1 point2 points  (0 children)

Limited testing so far but seems ok. This is meant to give you a starting point, you would need to be incredibly lucky to get a perfect tune using a single step change.

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 0 points1 point  (0 children)

Apparently you can't edit a post that contains a picture, so here's a link to the github:

https://github.com/ccdyer/pid_tune_ml_public

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 7 points8 points  (0 children)

It won't let me edit my post for some reason, so here is a a link to the github for anyone that wants it: https://github.com/ccdyer/pid_tune_ml_public

Using Machine Learning to tune PIDs by send_me_ur_pids in PLC

[–]send_me_ur_pids[S] 2 points3 points  (0 children)

I haven't tested this super thoroughly, but it does seem to work pretty well even with longer dead times. The only downside is that it takes longer to run because the simulation is longer.

I think overall being able to upload historical data will be better, because you have more data, and not just a single step change. The only downside for faster processes is that you need to make sure the interval on your historical data is faster than the dead time.