Factorial designs are generally used when it is desired to observe different levels of various factors and determine whether there are interactions between the factors. Traditionally it is assumed that the individual runs of the experiment are uncorrelated with zero mean and constant variance; however, it may be more realistic to consider the individual runs to be correlated in some sense and hence this should be taken into account in the analysis of the experiment. The correlation structure will have some bearing on the optimal design which is to some degree determined by the order in which the runs are conducted. The means to determine such run orders are examined. The purpose of this thesis is to examine the effects of correlated errors on the design of factorial experiments and in particular to determine optimal designs under such circumstances. Due to the size of the designs that may be encountered, it is not always possible to consider all available solutions, and consequently it is necessary to implement some form of search method to determine an optimal design. To this end, two heuristic search methods, simulated annealing and tabu, are used to determine optimal values for combinatorial searches. Since it is not always possible to state explicitly the upper (or lower) bound on a particular optimality, we present a number of results obtained using the search methods mentioned and draw conclusions to determine the structure of optimal designs for certain parameter sets. We also examine designs for which the bounds are known to validate the values returned from the search routines. Often, in practice, the correlation is unknown or estimated with uncertainty. To this end it is advantageous to have some sort of indication as to how well a design per- forms when the assumed correlation is in fact different to the true correlation. There are two possible sources of error, the correlation value and the correlation structure. To determine whether or not the designs found will have optimal qualities for a range of correlations, we have included robustness tables to show where and how the designs found retain their optimality for differing correlations. In the robustness tables we assume a correlation to optimize the design and given said design calculate the optimality for a number of other correlations each of which represent the true correlation under differing circumstances. For some situations, particularly in industry, there may be cost constraints involved in the experiment being conducted, so an unconstrained optimal design is not always a viable solution. While searching for the optimal design, we may add a weighting to the optimality value and generate relatively optimal designs that minimize the cost associated with conducting the experiment. After introducing the concepts necessary to give a background for the work conducted, in Chapter 3 we will examine the designs that are small enough to be exhaustively searched. Obviously it is not possible to exhaustively search all the possible designs of interest, so we must consider some possible search methods. The methods used are described in some detail in Chapter 4. As this thesis is of a computational nature there is a program associated with the work described within, and the routines and use of the program are expanded in Chapter 5. Finally, in the last chapter, we look at some of the possible designs which the program is capable of finding, and how they relate to each other in order to define some of the structure necessary for optimal factorial designs and compare our results with known results where they exist.