Why using a computer support?
this is a good question, but not so tricky. First of, have you imagine to create multiple protocols and rearranging databases on a 3.5" display? that sound a little bit crazy. In order to have a lots of functions, it's more useful to have a computer for this support.
But why don't we use the iPhone like a computer, I mean to plug it on a larger screen and keyboard and let's go ? This part could be possible, and we hope it'll be one day. Just for now our algorithm of merged protocol use some language/tool which doesn't exist yet on iPhone SDK. So we should create/use/transform a Desktop iPhone system and create the language/tool, it's a bit hard at this time... :)
What the software will look like?
The idea is to create a software which looks like easy to use. The user need to have two main tool to use :
- The databases: see them, look in them, clic&drop in it.
- the Protocol: a nice white piece of paper with tools to create the protocol.
Actually the presentation is not the main part of our work, and we are still not sure we're gonna do the software like this.
The idea is also to allow the user to use different screen/window if he wants to. For the case of dual screens, he can use one for the protocol and one for the databases.
We though of using as many format as possible, like CSV, TXT, XML, or even HTML to present and allow the protocol to be fully use in any type of software.
Explication & examples
the main part on which we are focusing, is the merged protocols algorithm. To well understand the process just look at this picture.
It represent 2 protocols. Each protocol is characterized by balloons of different colors and one continuous red part green line. Each balloon is a step; put in the fridge 20mn, 5mn 5000RPM centrifugation, anything you want it to be. The identical step are represented by the same color.
The red line represent the minimum time for the next step. "after making my cake I have to put it 20mn at 150°C" under this time the step will not be validated. The green represent the maximum time for the next step (still with the cake) "I can put my cake 20m, but I also let it be 40mn at 150°C" upper this time, the step will not be validated.
As you can see we have different variable the two limits for each step : Min and Max, and the special type of the step (color). The goal of this algorithm is to transform the two line in one with the less time or step possible. To identify the time a upper black arrow is represented on the left size of the picture.
So at this point, we can see that the two different protocols begin at time=0, the two first steps are different. We can't start like this "making the cake and go for a walk at the same time". So the algorithm have to try the two fist possibilities :
We will call these two situations Merge-A1 and Merge-B1 respectively (A for Protocol A, 1 for first up). As you can see all the first step doesn't have a green Max line upper them (because they are the first), which that we can try to make other possibility like Merge-A2, Merge-A3, Merge-B2 or Merge-B3.
At this time, Merge-B3 or Merge-A3 are possibilities that exist, obviously we can try to make the Protocol A finish it ant start the protocol B, but we didn't gain time or step, but the algorithm have to try all the possibility because some Merge-Ax (with high x) can take less time than expected and be very optimum. for the example we are only dealing with Merge-A1 and Merge-B1.
This step done we look at the B2/A1 balloons. Merge-A1 show that B2 is in conflict with A3 (balloons). On each conflict like the first one, we have several possibilities, but in this case we'll have less possibilities because of the maximum "green" limit. Let's continue
The first picture shows a new possibility. When the two steps are the same we can mixed then together (and add some times if necessary). For the Merge-B1, the merged adapt itself with the Maximum limit. There, and we have to look for the next step. Here some have already understand that we are in a recursive algorithm.
Tis algorithm can be represent by a n-tree. Every choice comes up with a new node and every leaves/nodes as possible. So every possibility is calculated and are false or true. Each True possibility is noted and we know it time and number of step.
In another way of resolving this problem we can use in constraint programming. This type of programming use language to interpret the constraints and solve them with complex algorithms. Prolog is one well known, and can be used on OS X but not on iPhone actually.