I've decided to explore the possibility of a little project to keep my brain cells ticking over, it might not even take off but as a fun project it certainly isn't going to hurt to explore it a bit.
For anyone that knows me from either in person or via this very community then hopefully you understand I LOVE a challenge. Well this is certainly going to be that. I want to pit my brain against the collective brains of the OSIsoft developers involved in the PI Analysis Processor to see who can solve a Rubik's cube the fastest!
(Solved in case no one believes me...and no I didn't peel off the stickers and put them back on!)
I've wanted to do something like this for a while ever since I saw the code name of "Project Rubik" from OSIsoft for what has now evolved into the "PI Integrator for Business Analysis" (or whatever its name is as of today). I guess there are probably a bunch of cubers out there in the community and within OSIsoft. By no means am I a speed cuber who gets anywhere near those crazy folk who solve within 5 seconds, I'm more of a 60 second solver (40 seconds with some fluke moves). Anyway, that should give you some time scales for what I am thinking about in terms of the PI Analysis Processor.
(In case you're interested, a couple of years ago someone once gave me a Rubik's cube and told me to solve it. I had never even picked a Rubik's cube up before. I couldn't do it. I was annoyed. So I learnt how to solve one in a week or so using F2L algorithms. I've been able to solve it every time ever since then.)
Now it isn't that straightforward, there is a bunch of stuff I am going to have to do to feed data into the PI Analysis Processor in order for it to work out what its next move should be. Actually, it might completely destroy my 60 second time for solving and make me look silly but hey it would still be worth it as a small development project that is supposed to be fun.
At first I was going to use my Microsoft Kinect skills to have a small program feeding in the cube's current position to the PI Analysis Processor, then the PI Analysis Processor would spit out the next move to the program... but I decide that is a bridge too far for now. Maybe I'll do that at a later date, but then again maybe I'll build a robot from Lego to perform the moves for the PI Analysis Processor!
What I am intending to do is create some Templates in AF to represent a Rubik's cube. Then I will have a small utility/program that will simulate a Rubik's cube's position and feed the position of each cube segment into a series of PI Points. The PI Analysis Processor will then "somehow" (T.B.D.) feedback what the next move should be in order to solve...but one step at a time. I'm going to call the utility PAT (can't think where that name came from ). For each move that the PI Analysis Processor suggests then PAT will need to receive the move, accept it and then perform the move, feeding back the Rubik's cube's new position (which should match the sequence already determined by the PI Analysis Processor). The PI Analysis Processor may need a helping hand by way of a custom DR to perform some specific F2L algorithms but I'll come to that when I start experimenting.
It is worth bearing in mind that even if the PI Analysis Processor is using Event Triggered Analyses then it is performed in 250ms buckets under the hood, so I may have a little bit of an advantage in being able to solve quicker...but then again the more I type the more I think I am going to get beaten good and proper.
I'm interested in everyone's input at this point. Crazy idea? (I hope so.)
The more likes on the blog post the faster I'll start investigating.
I'm off to get some coffee, and a pen & paper...oh, and something to scratch my head with.