CLP vs. Standard Prolog
We've been working hard for some time now on three core things:1. A killer GUI framework for our next Application.
2. A Prolog algorithm capable of some amazing feats.
3. A way to properly test and quantify the amazing Prolog feats.
We're making some progress on (1), (2) is completed -- but needs some tuning, and (3) is almost done.
I've stuck our amazing intern, Travis, on the process of (3), and considering he didn't write (2), and is still in high-school, he's done some excellent things with our automation and testing. For example, we can now simulate a restaurant environment whereby people show up very quickly at certain times, or not at all. We can then throw these imaginary people into imaginary "wait queues" and apply various versions of (2) and "see" the results. And "see" is where we have a problem.
Well, perhaps "seeing" is not the problem. Perhaps it's the slow speed in which we direct ourselves towards "seeing". I can't / won't elaborate on what (2) is doing, except to say that if six parties are waiting to be seated in a restaurant, and there's 50 tables, then without our "virtual tables", there are some (50^6) * 6! combinations of where to seat EACH party. On our test systems, decently equipped in RAM and processing speed, it can take between 10 and 30 minutes to crunch all of those possible combinations. Ouch.
So, we're looking into CLP (Constraint Logic Programming), which appears to be an off-shoot of our problem. It hopefully will provide some better / faster results. I know that in certain problem domains, we can expect to see 8x speed enhancements. But, an 8x speed enhancement over 30 minutes still means that we have to process for 3.5 minutes. This is still unacceptable. That number should be under 30 seconds.
Our next possibility will be to look at slicing portions of the problem onto a small cluster of machines, to allow each machine to tackle part of the problem. Luckily, our problem domain falls easily into the class of problems which is both easily solved in a cluster of machines. I don't mind building a small cluster to test our theories -- however, the question may become "How do we convince our customers that they need to pay us monthly for this service?"
0 Comments:
Post a Comment
<< Home