We consider the problem of finding values of $A_3(n,d)$, i.e. the maximal size of a ternary code of length n and minimum distance d. Our approach is based on a search for good lower bounds and a comparison of these bounds with known upper bounds. Several lower bounds are obtained using a genetic local search algorithm. Other lower bounds are obtained by constructing codes. For those cases in which lower and upper bounds coincide, this yields exact values of $A_3(n,d)$. A table is included containing the known values of the upper and lower bounds for $A_3(n,d)$, with n = 16. For some values of n and d the corresponding codes are given.