Let's Get Clustering!
You now have the scores you need. All you need to do now is set up an optimization model to find optimal community assignments.
Now, I'm going to be honest with you up front. Finding optimal communities using graph modularity is a more intense optimization setup than what you encountered in Chapter 2. This problem is often solved with complex heuristics such as the popular “Louvain” method (see http://perso.uclouvain.be/vincent.blondel/research/louvain.html
for more info), but this is a code-free zone, so you're going to make do with Solver.
To make this possible, you're going to attack the problem using an approach called divisive clustering or hierarchical partitioning. All that means is that you're going to set up the problem to find the best way to split the graph into two communities. Then you're going to split those two into four, and on and on until Solver decides that the best way to maximize modularity is to stop...