An Optimization-Based Model Of Collective Motion