  This paper presents Cologne, a declarative optimization platform that enables
constraint optimization problems (COPs) to be declaratively specified and
incrementally executed in distributed systems. Cologne integrates a declarative
networking engine with an off-the-shelf constraint solver. We have developed
the Colog language that combines distributed Datalog used in declarative
networking with language constructs for specifying goals and constraints used
in COPs. Cologne uses novel query processing strategies for processing Colog
programs, by combining the use of bottom-up distributed Datalog evaluation with
top-down goal-oriented constraint solving. Using case studies based on cloud
and wireless network optimizations, we demonstrate that Cologne (1) can
flexibly support a wide range of policy-based optimizations in distributed
systems, (2) results in orders of magnitude less code compared to imperative
implementations, and (3) is highly efficient with low overhead and fast
convergence times.
