Increased number of matches played.

This commit is contained in:
Nick Winter 2014-03-23 15:34:38 -07:00
parent 9fbd008f59
commit b922b9dd20

View file

@ -54,30 +54,30 @@ addPairwiseTaskToQueue = (taskPair, cb) ->
sendEachTaskPairToTheQueue taskPairs, (taskPairError) -> sendEachTaskPairToTheQueue taskPairs, (taskPairError) ->
if taskPairError? then return cb taskPairError,false if taskPairError? then return cb taskPairError,false
cb null, true cb null, true
module.exports.resimulateAllSessions = (req, res) -> module.exports.resimulateAllSessions = (req, res) ->
unless isUserAdmin req then return errors.unauthorized res, "Unauthorized. Even if you are authorized, you shouldn't do this" unless isUserAdmin req then return errors.unauthorized res, "Unauthorized. Even if you are authorized, you shouldn't do this"
originalLevelID = req.body.originalLevelID originalLevelID = req.body.originalLevelID
levelMajorVersion = parseInt(req.body.levelMajorVersion) levelMajorVersion = parseInt(req.body.levelMajorVersion)
findParameters = findParameters =
submitted: true submitted: true
level: level:
original: originalLevelID original: originalLevelID
majorVersion: levelMajorVersion majorVersion: levelMajorVersion
query = LevelSession query = LevelSession
.find(findParameters) .find(findParameters)
.lean() .lean()
query.exec (err, result) -> query.exec (err, result) ->
if err? then return errors.serverError res, err if err? then return errors.serverError res, err
result = _.sample result, 10 result = _.sample result, 10
async.each result, resimulateSession.bind(@,originalLevelID,levelMajorVersion), (err) -> async.each result, resimulateSession.bind(@,originalLevelID,levelMajorVersion), (err) ->
if err? then return errors.serverError res, err if err? then return errors.serverError res, err
sendResponseObject req, res, {"message":"All task pairs were succesfully sent to the queue"} sendResponseObject req, res, {"message":"All task pairs were succesfully sent to the queue"}
resimulateSession = (originalLevelID, levelMajorVersion, session, cb) => resimulateSession = (originalLevelID, levelMajorVersion, session, cb) =>
sessionUpdateObject = sessionUpdateObject =
submitted: true submitted: true
@ -250,7 +250,7 @@ determineIfSessionShouldContinueAndUpdateLog = (sessionID, sessionRank, cb) ->
cb null, true cb null, true
else else
ratio = (updatedSession.numberOfLosses) / (totalNumberOfGamesPlayed) ratio = (updatedSession.numberOfLosses) / (totalNumberOfGamesPlayed)
if ratio > 0.2 if ratio > 0.33
cb null, false cb null, false
console.log "Ratio(#{ratio}) is bad, ending simulation" console.log "Ratio(#{ratio}) is bad, ending simulation"
else else
@ -264,7 +264,7 @@ findNearestBetterSessionID = (levelOriginalID, levelMajorVersion, sessionID, ses
queryParameters = queryParameters =
totalScore: totalScore:
$gt:opponentSessionTotalScore $gt: opponentSessionTotalScore
_id: _id:
$nin: opponentSessionIDs $nin: opponentSessionIDs
"level.original": levelOriginalID "level.original": levelOriginalID
@ -275,7 +275,9 @@ findNearestBetterSessionID = (levelOriginalID, levelMajorVersion, sessionID, ses
team: opposingTeam team: opposingTeam
if opponentSessionTotalScore < 30 if opponentSessionTotalScore < 30
queryParameters["totalScore"]["$gt"] = opponentSessionTotalScore + 2 # Don't play a ton of matches at low scores--skip some in proportion to how close to 30 we are.
# TODO: this could be made a lot more flexible.
queryParameters["totalScore"]["$gt"] = opponentSessionTotalScore + 2 * (30 - opponentSessionTotalScore) / 20
limitNumber = 1 limitNumber = 1