The following sections detail FFA's performance on a few selected shapes
from the tournament. In particular, we highlight where the previously
described problems were evident through the course of the tournament.
Arrow Cookie (Figures 5 and 6)
The arrow shape is a shape that fits out player well. It has both
convex corners and concave corners. Some corners have an angle of
90 degrees. Therefore, it is possible for a perfect match. Clearly,
our player finds a proper match, one that minimizes the wasted area
between the corners. However, as can be seen in Figure 5,
it would have been ideal to simply have lined the arrows up along the
width of the dough. Furthermore, it is possible to line two arrows up
without wasting more space than one arrow does.
Our player does a nice job of minimizing space between cookies here. The
five leftmost cookies are not lined up bad at all. With global optimization,
our algorithm would have ranked higher when placing the arrow cookie
shape. The winning solution wastes plenty of space between the cookies
and does not at all take in concern the perfect match that exists. On
the other hand, it minimizes the amount of dough used.
Dumbbell Cookie (Figures 7 and 8)
The dumbbell cookie differs from the arrow cookie because no obvious
corners match. Our player will still find matching corners, but it is not
optimal for minimizing the dough usage. The dumbbell cookie is almost
the worst case for our cookie cutter. A cookie with all convex corners
would be even worse, but it is not applicable here because our cookie
cutter uses the matching edges algorithm in those situations.
Figure 7 exemplifies two cookies which match properly. The corner that our program chooses is the best ideal for this particular shape and number of copies.
In Figure 8, FFA picks corners that it believes
minimizes waste. Sometimes, it looks like the chosen corners are not the
best choice, even for our cutter, because the shape is very big. On the
other hand, FFA compensates for the dough boundaries and rotates the
cookie so it fits the height. In this case, the boundary compensation
improved our results.
Lightning Cookie (Figure 9)
In Figure 9, The lightning cookie is a bad shape for
our player because the same corner will be matched each time a copy is
laid down. When two cookies are merged, the will be an opening for a
new merge on the other side of the newly merged cookie. On top of that,
the corner that is being matched is not an effective match in the first
place, especially not when the match happens in the length direction of
the dough.
As expected, our player picked the same corner match for each copy of
the shape. Once again, it was FFA's lack of global optimization that
produced our poor results. Furthermore, the lightning cookie is not
suitable for matching corners, as evident from the winning solution. In
the winning solution, almost every different corner match is used to
mutually minimize the length of the dough.
P.out Cookie (Figure 10)
P.out is interesting because all of its corners are convex corners. Under
these circumstances, our cookie cutter uses a different technique than
matching corners. Instead, it lines up edges. It lines up the longest
edges that also have the smallest difference in length. The result would
again have been better if global optimization had been added.
Figure 10 shows how FFA consistently chooses the
same edges. The problem is similar to what happened with the
lightning cookie. However, if the cookie would have had vertices of
different length, the lack of global optimization would have been less
apparent. Consequently, FFA would have tended to pick edges of different
length and would not just have added cookies in one direction.
Group 6's Cookie (Figure 11)
FFA should hypothetically find a tight fit for the cookie shape shown
in Figure 11. Unfortunately, for this cookie, the other
corners do not appear to be a good overall match under our corner matching
scheme, and thus, are not chosen by our cookie cutter. FFA's solution for
Group 6's cookie shows a fundamental flaw of our approach. Primarily,
it's corner choosing scheme did not pick the perfect match. To find a
perfect match, all corners have to be lined up correctly. The cookie
have to be positioned so that no parts overlap, including the points
that cannot be shared. The piece that is supposed to fit inside has to
be slightly smaller than the hole it fits.
Group 5's Cookie (Figure 12)
Our cookie, as shown in Figure 12, is a mixture of a few
of different problems discussed in class. Our cookie is big, has edges
that can be perfectly lined up, has corners that do and do not match,
and has parts that protrudes out to make it hard to find efficient
patterns. It is irregular on the whole.
Our cookie cutter does a fair job on this cookie. We occasionally ranked in the middle of the groups. It found a few good corner matches and did a fair job of lining up few edges. The lack of global optimization is our most significant deficiency.