I discovered that the only way to crush the enemy is to swarm them. This is 6 principes and 3 generals 2 equites against 2 armoured hoplites, 2 hoplites, 1 militia hoplite and 1 general. I make three breaches, push through one principes into each to engage whatever comes, then quickly swarm all my cavalry into the breach where the most formidable unit is defending. In this way I quickly crushed the two armoured hoplitai before they were able to do more than take out 30 Equites and 3 bodyguards. Meanwhile through the other breaches the remaning principes are pushing through. It's impossible otherwise without taking nasty casualties. The cavalry must make a concentrated charge, preferably right through the enemy and hit the rear. But the gate is so crowded that they are actually quite vulnerable, and the first units to contact the enemy will be killed before they can hit a single blow.