def __init__(self, players, num_owners, money, roster):
self.owners = [Owner(money, roster, i) for i in range(num_owners)]<EOL>self.players = players<EOL>self.players.sort(key=lambda player: player.value, reverse=True)<EOL>self.undrafted_players = list(players)<EOL>self.undrafted_players.sort(key=lambda player: player.value, reverse=True)<EOL>self.money = money<EOL>self.roster = roster<EOL>self.state = AuctionState.NOMINATE<EOL>self.turn_index = <NUM_LIT:0><EOL>self.nominee = None<EOL>self.tickbids = [<NUM_LIT:0>] * num_owners<EOL>self.bids = [<NUM_LIT:0>] * num_owners<EOL>self.bid = None<EOL>self._nominee_index = -<NUM_LIT:1><EOL>self._player_ownership = [-<NUM_LIT:1> for player in self.players]<EOL>
Starts the auction with the specified settings.

:param list(Player) players: Players in this auction
:param int num_owners: number of owners. Owners are referenced by integer id.
:param int money: integer dollar amount of money each player has
:param list(RosterPosition) roster:
    list of RosterPositions each player needs to fill