So,
last time I created a mock RTS game with three basic units and posed some questions about which compositions of units would be most effective and least effective. I've run some simulations since then based off the following rules:
- All units will start a battle with 1.00 "health".
- Attacks will be turn-based.
- Each turn, every unit that started the round with positive health will deal X/100 damage to every enemy unit with positive health. X is the respective combat effectiveness against that particular unit.
- All attacks will affect all living unit opponents simultaneously (although the exact damage to each individual opponent will vary based on effectiveness). In terms of gaming jargon, this could be considered "Area of Effect" attacks. This is to remove the complication of sequencing from the simulations.
- If a unit receives a enough damage in a particular round to reduce its health from positive to non-positive, it will still attack during that round. This is to remove the complication of "first strike" from the simulations.
- Once all a team's units have their health reduced to non-positive values, it will be unable to attack and deemed the losing team.
- Once the opposing team loses, the winning team will be evaluated based on the sum of the health of all its surviving units.
- If both teams lose the final members on the same round, the match is deemed a draw. By definition, all "mirror matches" (when two teams of identical compositions face off) will be draws.
For a team of 9 and these 3 basic units, there are 55 permutations for teams. To further simplify things, I only considered 10 teams: the "pure" teams (9 of the same unit), "combo" teams (6 of one unit and 3 of another), and a "hybrid" team (exactly 3 of each unit). That reduces the number of permutations to 10, and it provides an evenly distributed subset. Here are the results of those 10 teams fighting against each other in a table format with the total wins tallied on the right. I also took note of what I considered "decisive wins", where the winning team retained at least 20% of its units' net health (1.80). I think this is a better graphical representation of these results, though:

There's a few things to note about the results of this model. First off, the hybrid team is extremely effective--it received 7 wins, 3 draws, and 0 losses. However, it's also worth noting that each win by an extremely small margin--it only received 1 decisive win, and that was against the pure melee build (all 3 flyers were unscathed). In other words, its a very low-risk/low-gain team. Second, melee-based teams perform very poorly in general. Unlike the other classes which are at a tactical disadvantage fighting respective their weakness, melee is totally ineffective against its weakness of flying units. Even a single flying unit will ultimately destroy any number of melee units. Third, the teams built around ranged and flying units are extremely effective--they have a winning record, they have a large number of decisive wins, and the give up a low number of decisive wins to their opponents.
In retrospect, I think I made an error of judgement when I considered my combat effectiveness table to be zero-sum. Rather than adding the offensive and subtracting the defensive numbers, I think I should have averaged the fraction of offense divided by defense. In other words: melee would have a total effectivenesses of 1/1, 2/1, and 0/1; ranged would have a total effectivenesses of 1/2, 1/1, and 2/1; flying would have a total effectivenesses 1/0, 1/2, and 2/2. Obviously, these numbers will never be totally balanced because X/0 will always be infinite. I think though that if the effectiveness of melee against ranged was increased and/or the effectiveness of flyers against melee was decreased, the results would be a lot more diverse rather than having some teams blatantly more powerful than others.
In published RTS games, immunities such as melee vs flyer are very common. However, units that possess immunities are usually compromised so that melee units are not at a distinct disadvantage--e.g., the flying units will be more difficult to produce or they will have limited use in combat.