So, welcome to the summary for module two. So what do we see in the story, Jimmy? >> The story is getting exciting because our three heroes, they formed the armies and they also had their first battle and first major victory against the yellow turban army. And after that they have actually also joined hand with other warlords and form a coalition. Which was led by Yuan Shao, and then we also see that Cao Cao is also part of the coalition as well. >> All right, so that's interesting. >> They're on the same side. >> For the moment. I'm giving away the future story. >> And then the coalition also successfully forced Dong Zhuo out of the Hulao by defeating the Bagua army formation. >> So what are we seeing technically? Well, this module is all about sets and in discrete optimization problems we often have sets with reasoning about sets of objects. And here we've talked about how to represent sets and how to make a decision about sets. And we've seen at least three ways that we can model a set. So we can use the built in set variables that MiniZinc has some solve support directly and we can represent a set by basically Boolean variables by saying which elements are in. We can represent by zero one variables saying how many copies of an element are in. >> And of course when the set that we're dealing with may have special properties, such as when their cardinality is fixed or bounded. Then we can make use of an array to represent such sets. >> Yeah, so the array representations are much, much more efficient if we're selecting a very small number of elements from a very large set. So we only really have to worry about the number of elements that we select. >> Right. Of course there are advantages, but there are also issues that we have to deal with because they're using such representation we might end up having multiple representation of the same set element. >> Absolutely. And this is a problem we'll see throughout the course. A problem of symmetry, so where we have multiple arrays, they can represent the same set and we basically need to add constraints, which force, but only one of those representations will be left over. >> What kind of constraints should we add? >> So we add ordering constraints, as we've seen. But it gets more complicated. A pure ordering constraint is easy for the fixed cardinality set, but when we have a bounded cardinality set, then we have a dummy element that we're going to have to add to our representation. And we may have to have duplicates of that. >> Okay, so set is a very important topic. >> So sets are critical to very many discrete optimization problems. >> What do we do in the workshop? >> So in the workshop we're going to be basically selecting a set, exactly the problem we've sort of looked at through the entire module. And here we're selecting a set of negotiators to negotiate the surrender of the Bagua and there's some complex interactions between those sets. And you can try, you should try solving this workshop problem using both the direct set representation and using an array representation. >> Mm-hm. And my understanding is that besides having an upper bound on the cardinality, the sets that we are dealing with in the workshop also has a lower bound as well. >> Yes, but that is not too difficult to deal with. >> Okay, so remember to try the problems before seeing the solution video. >> So the second assignment is quite a bit more difficult than the first assignment. The first assignment was deliberately very easy. We're going to be selecting a set of warriors. It's going to be very similar to the workshop. And this is one of the things we'll try to make that the workshop problem will give you a lot of practice for the methods you need for the assignment. So selecting a set of warriors. You can try different set representations, and our grader will work regardless of what set representation you use. >> Okay, have fun and see you after the next module.