The first challenge in solving a real world problem is capturing/sensing the domain data. Reproducibility of specific situations is yet another challenge. Simulation has been a popular method to approximate a model of the problem and use optimization algorithms or heuristics to propose a cost-minimized solution. We will adopt this approach, and since we have a reasonably accurate model approximated from real data, you will get accurate constraints, reproducibility and control right out of the bat.
The Unity game engine is a wonderful platform as it allows us to interact with shape and motion. Furthermore, we can take advantage of the excellent Vector and Math library functions that serve as a foundation to modeling complex motion and shape. Lastly, with a modern object oriented language like C#, one can quickly prototype ideas without being bogged down with memory leaks and ugly crashes.
The good news is that you do not need to break your head on the complex animation task. It will be provided to you at the start of the Hackathon. You need to devise an intelligent solution to the problem statement. The numbers you search for as part of your optimized solution will drive the animation in real-time. If you adopt a machine learning approach, you need to first decide which model you are going to apply: unsupervised learning (e.g. Support Vector Machines), or supervised learning (e.g. training a Neural Network with good and bad examples). You would typically need to rerun the simulation N times (e.g. 100 or 1000 or 10000 times) until you converge on the best solution. The platform provided thankfully allows you to fast-forward the simulation during training. You can take advantage of powerful 3rd party libraries and tools to do the cost minimization step and return tweaked values to the game engine in real time. You will need to come prepared with your own inter-process data communication between Unity and the 3rd party tool of your choice (e.g. data exchange via sockets between your Unity script and Octave or Weka). An alternative approach might be to implement Search Tree or Genetic Algorithms in Unity C# to figure out the best solution iteratively, without needing a 3rd party tool. Lastly, you can integrate a 3rd party optimization library as a Unity plugin, and implement the learning loop with API library function calls right inside Unity (e.g. using OpenCV api).