It should be tonnage or HTK-based. Losing one fighter out of a wing of 5 is a huge loss. Losing one fighter in a wing of 500 is no big deal. Likewise losing a battleship should be scarier than losing a destroyer.
I've set it up so the AI analysis of the 'threat' of a hostile ship is an independent function, which is influenced by the situation and its knowledge of the ship. This function will be called when required by other parts of the code. The AI will track the capability of different ships using an internal version of the intelligence window. For example, assume a player TG of four ships of different classes. The AI has previously observed all four classes in action and knows the respective armaments are 10cm lasers, 25cm lasers, size 5 missile launchers and AMM launchers. The AI will radically change the different threat levels posed by those ships depending on the range.
In general, at 20m kilometers, the AI will take out your missile ship first, at 200,000 km it will probably take out the 25cm laser ships and at 20,000 km the 10cm laser ship will be the priority target, etc. The priority of secondary targets will also depend on the range. In some situations at longer ranges, the AI might instead decide to eliminate the escorts first. There are other considerations as well, such as speed and sensor capability, but I don't want to give too much away
I can add to the intelligence of this 'threat' function over time without it affecting other parts of the code (except for returning a 'smarter' decision).
All of this is still relatively early, so the results of play testing should improve the AI considerably. With the speed and flexibility of C# I have a lot more scope to improve the AI compared to VB6.