It is hard to say what can and can’t be implemented for an AI when we do not know the rules of the combat engine which can greatly affect the overall desirable tactics:
Will there be zones of control?
The presence of zones of control (meaning that once a unit engages in melee combat, it cannot easily move away, either taking a free attack from the enemy or simply unable to move), opens a lot of tactical options – e.g. having the melee units guard the ranged ones by engaging any approaching enemies.
Will units taking damage suffer from reduced effectiveness?
If not, then the correct strategy is to gang up on a single unit, trying to take it out - this is rather limiting. If yes, then it makes sense for both AI and player to have units at full health attack other units at full health, whilst wounded units square off against wounded units (since a powerful but wounded unit can be destroyed by a weaker unit at full health).
Master of Magic had solved this elegantly by having multiple figures per unit, which would take damage and get killed – so a six-figure unit at 50% health would only have three figures remaining, and its damage-dealing capacity would be reduced. Of course, the biggest monsters and most powerful heroes were single-figure units, thus negating the benefits of this approach.
How many turns will it take for units to cross the battlefield?
Depending on the answer to this, ranged weapons may end up being over- or under-powered. How would an all archer army fare versus an all melee one?
---
However, that being said, there are a few things that Roles can suggest at its basics for the AI:
Brutes will attack the nearest foe they can reach; if they can reach more than one foe this turn, they will go for the one with the highest threat level that they can do significant amount of damage to. Once stuck in melee combat, they will continue striking the enemy.
Lurkers behave similarly to Brutes, but will be prepared to break off melee combat to go for more juicy targets (e.g. attacking the ranged units hidden behind the melee ones).
Artillery stays back and attacks at range.
Soldiers, if defending Artillery, will be seeking to engage any unengaged enemies so that they melee with the Soldier, rather than going past them.
---
This can be further elaborated with Traits, and priorities that can be picked up at unit creation:
A favourite trait for Soldiers would be Immobilizing Strike – melee attacks now have the extra ability (both the attacker and the defender are held in place for their next turn - can attack normally but cannot move from their spots). Soldiers would prioritize high defences.
A favourite trait for Lurkers would be Slippery (available later in the tech tree than Immobilizing Strike) – granting freedom of movement and preventing from being held in place. Lurkers would prioritize good mobility and high initiative, as well as abilities that allow them to inflict status effects and disable units even if they fail to kill them outright. Examples would be “Poisoned Weapon”, that inflicts poison damage each turn on the target unit, and Crippling Strike, which reduces their accuracy.
Brutes would be the simplest – favouring attack over defense, they would be the classic cannon fodder.
Artillery is also fairly simple – favouring anything that aids in ranged attacks, such as Marksmanship, reducing the penalties for long-distance shots, Rapid Fire (an alternative firing mode, sacrificing accuracy for more damage).