Services for smart cities.
This project is actually based on the one for routing telephone calls, and you'll need to read Roy Freedman's paper from 1996 to understand the idea, even though the setting for this project is more modern.
In Roy's paper you'll see that SS7 telephone systems had routers with attached coprocessors, each consisting of an HPC cluster that would have perhaps 8 or 16 nodes. When an incoming 800 or 866 telephone call entered the router, the router would switch
the call into the cluster, which would need to look up the actual phone number to route the call to, and then return it.
Your job, then, is to implement the kind of mechanism Roy describes in his paper, but with adaptations to match it to a very different setting: we want to use the solution in a smart city or a smart building, whereas Roy was focused on real-time behavior for
the SS7 telephone coprocessor. If this idea of using something from one setting but adapting it to work in a new environment is confusing, pause now and talk to a TA or to a professor to make sure you can visualize what we have in mind.
Now thinking about your target setting, namely a smart city with smart buildings, you'll need to start by identifying use cases for a kind of controller that could embody machine learning tools and solutions in order to adapt rapidly as conditions change.
Read about the smart buildings project at U.C. Berkeley to get some ideas if this concept seems very confusing and new -- cutting edge concepts are often hard to visualize because until someone writes papers and books about them, all the ideas are completely
Some obvious examples include controlling traffic lights (but unlike a solution that works just at the light itself, you could do it at a scale spanning the whole city), controlling pedestrian cross-walk signals, routing traffic on the various highways around
and through the city, controlling street lights and other kinds of electrical signage, controlling interior and exterior lighting, etc. There are even some suggestions for smart materials that can support more load if power is applied: they are light and flexible
under normal conditions, but become stronger when power is employed to stiffen them. You could think about elevator control, and escalators. All over a modern city you find chances to optimize and make life better, save power, reduce pollution, eliminate gridlock,
Now back to what Roy did. As you'll see, Roy worked with a much older version of Isis, but it worked much like Isis2. What he explains is that even though the solution needs a fault-tolerant multicast, using Isis multicast in that role was a mistake. Instead,
he ends up using the Isis Toolkit to supervise and control his cluster solution, but he routes the actual telephone number mapping requests through the HPC cluster subsystem in a more efficient way that actually runs mostly over TCP. In effect, he uses Isis
to decide who should have a TCP connection to whom, and for other similar roles, but not to carry the actual queries.
However, Roy's paper was written long ago, and he worked on switching phone calls. Your job is to follow his lead but revisit those same questions using Isis2, and in the context of your smart city control tasks (or at least the specific tasks
you focused upon; don't try to do everything!) Implement an HPC cluster solution that can run optimization software on multiple nodes in parallel (e.g. a convex solver or a neural network), with training data gathered first and then later with real data
entering and being "decided upon" as events occur. Now adapt Roy's ideas from his VOIP call router to be used in this new setting. You'll need to experiment to discover the ideal design point for a more modern solution of this kind, either
getting traces or somehow using a model to generate synthetic (fake) data to test your code.
By testing scenarios with tens of thousands of events (e.g. decisions about traffic scheduling or whatever, under various conditions), you can measure min, max and average performance and even graph error bars, and you can experiment with various request sizes,
corresponding to varying amounts of data captured from the cameras or other sensor devices embedded into the environment. How would you solve this solution if the sensors return small amounts of information? Would the answer differ if the input to your neural
network or solver was larger? How should your smart city or building handle power outages that cause the cluster to fail? How would you handle localized failures, like the crash of one node out of 16?