Discrete-choice Multi-agent Optimization: Decentralized Hard Constraint Satisfaction for Smart Cities