Like you said it will never be perfect because as humans we put emotion into decisions and go by hunches and data. The CPU sees attributes, salary, age and potential, factored by team needs.
Every year they tweak it. I know my biggest pet peeve is the trade of one position for the same position. A team in a playoff push will trade a good young player for one with similar attributes, but older at the same position. That is one thing that I would like see changed. The team that has that good younger player would try to upgrade somewhere else instead of a lateral move.