Exploiting Structure In Combinatorial Problems With Applications In Computational Sustainability