next up previous
Next: Conclusion Up: CS4444: Project 2 - Previous: Implementation

Analysis

FFA had three central problems. First, under some extreme conditions (15 copies), its overlapping polygon detection code sometimes failed. Despite checking whether one polygon's vertices were contained within anothers and checking whether each pair of edges between two polygons intersected, FFA overlapping polygons detection fails. Secondly, our global optimization module failed. Thus, FFA had a tendency to build horizontally, form a row of cookie copies, and waste an entire row of space. Had these two bugs been fixed, FFA would have been much more competitive relative to its rankings. A lesser problem is FFA's ``back away'' procedure, which moves an added shape away from the previously laid shapes. It could have been could have been replaced by something more robust and efficient.

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)

Figure 5: Early Layout of Arrow Cookie Shape
\begin{figure}\begin{center}
\begin{tabular}{c}
\psfig{figure=f_array_2.eps}\end{tabular}\end{center}\end{figure}

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.

Figure 6: Layout of Multiple Arrow Cookie Shapes
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\epsfxsize =2in
\...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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)

Figure 7: Early Layout of Dumbbell Cookie Shape
\begin{figure}\begin{center}
\begin{tabular}{c}
\psfig{figure=f_dumbbell_2.eps}\end{tabular}\end{center}\end{figure}

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.

Figure 8: Layout of Multiple Dumbbell Cookie Shapes
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\epsfxsize =2in
\...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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)

Figure 9: Layout of Multiple Lightning Cookie Shapes
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\epsfxsize =2in
\...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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)

Figure 10: Layout of P.out Cookie Shape
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\multicolumn{1}{l...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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)

Figure 11: Layout of a Number of Group 6's Cookie Shapes
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\epsfxsize =2in
\...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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)

Figure 12: Layout of a Number of Group 5's Cookie Shapes
\begin{figure}\begin{center}
$\begin{array}{c@{\hspace{1in}}c}
\epsfxsize =2in
\...
...p 5 Solution} & \mbox{\bf Winning Solution}
\end{array}$\end{center}\end{figure}

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.


next up previous
Next: Conclusion Up: CS4444: Project 2 - Previous: Implementation
Stephen Lee 2003-10-14