crossover operator that favors big subtrees over small ones



Hi,

I'm using tree-based genetic programming and I'm looking for a
crossover operator that somehow selects subtrees in such a way that is
favors longer subtrees over short ones. The reason is that most nodes
in a tree are leafs or their subtrees are just 2 levels deep, so that
those nodes get selected much more often than the fewer higher-level
nodes that are the top of bigger subtrees.

Replacing bigger subtrees may be more effective in finding new
successful solutions than replacing short subtrees (or single nodes).

Does anybody know any good methods to deal with this problem?

Thanks

.