The software can be written pretty easily to do just about anything that isn’t completely insane, and that is actually achievable/feasible given the number of teams, matches, and user-defined attributes.
I am comfortable saying this because for modern computers, there just aren’t all that many ways to combine 16 to 128 teams, in 4 or 6 team matches. No human would want deal with all the combinations, while juggling a bunch of screwy attributes, to create a schedule; but our computers are fast, tireless, accurate, and don’t complain about doing boring, repetitive calculations for us.
So… the central question in this case isn’t whether a computer program can be written to accomplish the task. The question is whether the humans specifying what the program’s instructions should accomplish, can ever agree on what they would want the program to do.
Echoing Eric’s sentiments: Compared to agreeing on the requirements for, and then properly specifying, the algorithm, the coding will be the easy part. 
Blake