I think the absolute best way to do mulligan decisions would be for the ai to play a lot of games with the deck in question with 7,6,5 etc cards at the start and then use the data and pattern analysis to determine what it should do in the future. This is probably too computer intensive to add even in a dimple form for example even doing it just for number of lands.
Second best and I hope what Mike is trying would be to integrate the websites parameters for choosing a set of cards and a number of them in opening hand which are entirely player determined. One important point no one has mentioned is the parameters should certainly be different going from 7 to 6 as from 6 to 5 cards. The 6 card hand shd be kept without anywhere near as good a fit as the first one.
I've been playing around with generating deck profiles using genetic algorithms. This has shown some success in finding distinctions between a couple of top tier modern decks I was evaluating. As you noted correctly though, doing this for every deck takes way too long. Even if I find smarter and more efficient ways than gen. algorithms. I do envision storing these profiles on firemind.ch and having the client download them if available. It would also be nice if users could generate such profiles by having their client run the deck against a predefined gauntlet of decks for the format it is meant to be played in.
The problem I have with the user defined mulligan parameters is that they would break the balance between the decks and thus ruin deck rankings. I am interested in using them to figure out smarter ways to make mulligan decisions but I can't allow users to directly influence the AI game play.
Here is my pull request for the first set of mulligan improvements if anyone is interested:
https://github.com/magarena/magarena/pull/67I seem to have bugged the legality check again unless I have done something very mad. My boros deck is standard legal but its only showing 40 cards in standard card view pane and it claims some cards are illegal.
You seem to have a talent for finding all the strange corner cases =)
Somehow the hash I use to identify a deck list no longer matched the actual content of that deck list. This meant, that every time you submitted to correct 60 card deck list it generated the hash, found the broken 40 card list and used that one instead (because it believed it already existed). As to how that broken hash came to be I have no idea. I added some code to prevent a deck list being saved with the wrong hash in the future so this shouldn't happen again. You might need to update your deck one more time though.
Also I find ae beginning cards like
Aether Vial and
Aetherling hard to register in decks because it uses Æther Vial as its standard format for these characters.
You should be able to register them using Ae, it will automatically rewrite it for you.