I am trying to generate output consisting of three-tuples (A,B,C), where A,B, and C are three different datatypes representing different values. I also have a collection of functions $f_i \in F$ which each take in either one, two, or all of A,B, and C as input, and output whether a condition regarding the relevant variables holds or not. Many $f_i$ compute things about the relationships between A, B, and C. I want to search for the values of (A, B, C) which maximize the number of elements of F which return true.
What search techniques can I use? It seems that standard techniques wouldn't preserve good interdependencies between A and B values which already exist in the population.