Complex models, more data: simpler programming?

The complexity of models used for or considered for use in genetic evaluation is increasing. Examples of new models are test-day models in dairy cattle, growth models in beef cattle, and models with dominance or/and QTL effects. These models are usually linear but analyses of some traits may require nonlinear models, which are usually more complicated to write and test. More complicated models may require a larger data set. In the future we may expect new types of models that will be used to analyze even larger data sets. In order to support new models, the computer programs need to be upgradeable and therefore easy to understand or simple. Programs in a matrix language are usually simple but inefficient and cannot work with larger data sets. In order to support large data sets, programs need to be efficient, which usually means complicated and hard to modify. Traditionally, mixed model packages available in animal breeding were written with efficiency in mind. Although they are useful at a time when they are developed, they become outdated. For example, none of the packages available in 1994 (Misztal, 94) supported the now-popular random regressions. Some of these packages have been updated to include random regressions, but some may be too complicated to update. Two developments can lead to simple yet efficient programs: increase in computer power and programming languages with objectoriented features. Greater computer power allows avoidance of optimizations that would complicate programs. Better programming languages allow to express the same algorithms simpler but as efficient. 2. Software complexity and Optimization