Simple Example:
Anery
- Anery X Anery
- Normal het. Anery X Anery
- Normal het. Anery X Normal het. Anery
(Just to be sure, that there is NO known het - otherwise we could go on using Ghost, Snow, etc. etc.)
Okay, let's get one step further:
Snow
- Snow X Snow
- Snow X Anery het. Amel
- Snow X Amel het. Anery
- Snow X Normal het. Anery, Amel
- Anery het. Amel X Anery het. Amel
- Anery het. Amel X Amel het. Anery
- Anery het. Amel X Normal het. Anery, Amel
- Amel het. Anery X Anery het. Amel
- Amel het. Anery X Amel het. Anery
- Amel het. Anery X Normal het. Anery, Amel
- Normal het. Anery, Amel X Normal het. Anery, Amel
...now imagine a few hets or triple recessive morphs. Thats not a monster, the program is easy, but the output of the program is so huge, that it seems useless to have that list.
The most efficient plan is not available, cause the result is a set of efficient plans. I will explain why - the most efficient pairing is desired morph X desired morph, right? The least expensive pairing would be e.g. Normal het. Anery, Amel X Normal het. Anery, Amel or the P generation only consisting of all genes that are needed. (one could bring this down to a set cover problem, but I think I'm drifting away....)
Okay, so, what we have is a so called multi-objective optimization, cause with having objectives like the ratio of the desired morph in the F2, the cost for the parents, the risk (imagine poss.hets.) and so on, there is no such thing like a single efficient or optimal solution. The goal to find is a so called Pareto-optimal set.
So, the user should get a set of results. Okay?
Lets go one step further: To evaluate each combination, we need to model costs for each morph and also if the breeder already has them. So, we would need a specification of animals including their sexes.
...hmmm, I could bring the whole thing down to a program and maybe I will do that as soon as I have time. I don't think that anyone will use it, but my research topic is multi-objective optimization using evolutionary algorithms, and so I'm quite familiar with that kind of problems. I just want to take away some dreams of getting an easy and handy solution to this problem.