Using constraint programming to schedule generic experiments in an automated lab. Experiments are complex and fragile so we expose a dsl for describing the constraints and objectives of each task so that the biology/chemistry doesn't go awry. One of the hardest parts of this isn't the optimization but the upfront work of defining what is/isn't necessary to be able to encode about an experiment. You want the api to provide as much control as possible without allowing the author to over constrain the problem, or introduce irrelevant steps into an experiment just because that's how they're done by hand.