Merge branch 'pairing2' into webview2
This commit is contained in:
@@ -116,8 +116,16 @@ object OpenGotha {
|
||||
else -> throw Error("missing byoyomi type")
|
||||
},
|
||||
pairing = when (handParams.hdCeiling) {
|
||||
0 -> Swiss(pairingParams = pairgothPairingParams, placementParams = pairgothPlacementParams)
|
||||
else -> MacMahon(pairingParams = pairgothPairingParams, placementParams = pairgothPlacementParams)
|
||||
0 -> Swiss(
|
||||
pairingParams = pairgothPairingParams,
|
||||
placementParams = pairgothPlacementParams
|
||||
)
|
||||
else -> MacMahon(
|
||||
pairingParams = pairgothPairingParams,
|
||||
placementParams = pairgothPlacementParams,
|
||||
mmFloor = Pairable.parseRank(genParams.genMMFloor),
|
||||
mmBar = Pairable.parseRank(genParams.genMMBar)
|
||||
)
|
||||
},
|
||||
rounds = genParams.numberOfRounds
|
||||
)
|
||||
@@ -241,7 +249,15 @@ object OpenGotha {
|
||||
TimeSystem.TimeSystemType.STANDARD -> "STDBYOYOMI"
|
||||
TimeSystem.TimeSystemType.CANADIAN -> "CANBYOYOMI"
|
||||
TimeSystem.TimeSystemType.FISCHER -> "FISCHER"
|
||||
} }" director="" endDate="${tournament.endDate}" fischerTime="${tournament.timeSystem.increment}" genCountNotPlayedGamesAsHalfPoint="false" genMMBar="9D" genMMFloor="30K" genMMS2ValueAbsent="1" genMMS2ValueBye="2" genMMZero="30K" genNBW2ValueAbsent="0" genNBW2ValueBye="2" genRoundDownNBWMMS="true" komi="${tournament.komi}" location="${tournament.location}" name="${tournament.name}" nbMovesCanTime="${tournament.timeSystem.stones}" numberOfCategories="1" numberOfRounds="${tournament.rounds}" shortName="${tournament.shortName}" size="${tournament.gobanSize}" stdByoYomiTime="${tournament.timeSystem.byoyomi}"/>
|
||||
} }" director="" endDate="${tournament.endDate}" fischerTime="${tournament.timeSystem.increment}" genCountNotPlayedGamesAsHalfPoint="false" genMMBar="${
|
||||
displayRank(
|
||||
if (tournament.pairing is MacMahon) tournament.pairing.mmBar else 8
|
||||
).uppercase(Locale.ROOT)
|
||||
}" genMMFloor="${
|
||||
displayRank(
|
||||
if (tournament.pairing is MacMahon) tournament.pairing.mmFloor else -30
|
||||
).uppercase(Locale.ROOT)
|
||||
}" genMMS2ValueAbsent="1" genMMS2ValueBye="2" genMMZero="30K" genNBW2ValueAbsent="0" genNBW2ValueBye="2" genRoundDownNBWMMS="true" komi="${tournament.komi}" location="${tournament.location}" name="${tournament.name}" nbMovesCanTime="${tournament.timeSystem.stones}" numberOfCategories="1" numberOfRounds="${tournament.rounds}" shortName="${tournament.shortName}" size="${tournament.gobanSize}" stdByoYomiTime="${tournament.timeSystem.byoyomi}"/>
|
||||
<HandicapParameterSet hdBasedOnMMS="${tournament.pairing.pairingParams.handicap.useMMS}" hdCeiling="${tournament.pairing.pairingParams.handicap.ceiling}" hdCorrection="${tournament.pairing.pairingParams.handicap.correction}" hdNoHdRankThreshold="${displayRank(tournament.pairing.pairingParams.handicap.rankThreshold)}"/>
|
||||
<PlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
|
@@ -10,7 +10,7 @@ import java.util.*
|
||||
sealed class Pairable(val id: ID, val name: String, open val rating: Int, open val rank: Int) {
|
||||
companion object {
|
||||
val MIN_RANK: Int = -30 // 30k
|
||||
val MAX_RANK: Int = 20
|
||||
val MAX_RANK: Int = 8 // 9D
|
||||
}
|
||||
abstract fun toJson(): Json.Object
|
||||
abstract val club: String?
|
||||
|
@@ -180,11 +180,13 @@ class MacMahon(
|
||||
),
|
||||
placementParams: PlacementParams = PlacementParams(
|
||||
Criterion.NBW, Criterion.SOSW, Criterion.SOSOSW
|
||||
)
|
||||
),
|
||||
var mmFloor: Int = -20, // 20k
|
||||
var mmBar: Int = 0 // 1D
|
||||
): Pairing(MAC_MAHON, pairingParams, placementParams) {
|
||||
companion object {}
|
||||
override fun pair(tournament: Tournament<*>, round: Int, pairables: List<Pairable>): List<Game> {
|
||||
return MacMahonSolver(round, tournament.historyBefore(round), pairables, pairingParams, placementParams).pair()
|
||||
return MacMahonSolver(round, tournament.historyBefore(round), pairables, pairingParams, placementParams, mmFloor, mmBar).pair()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,12 +307,15 @@ fun Pairing.Companion.fromJson(json: Json.Object): Pairing {
|
||||
val placementParams = json.getArray("placement")?.let { PlacementParams.fromJson(it) } ?: defaultParams.placementParams
|
||||
return when (type) {
|
||||
SWISS -> Swiss(pairingParams, placementParams)
|
||||
MAC_MAHON -> MacMahon(pairingParams, placementParams)
|
||||
MAC_MAHON -> MacMahon(pairingParams, placementParams).also { mm ->
|
||||
mm.mmFloor = json.getInt("mmFloor") ?: -20
|
||||
mm.mmBar = json.getInt("mmBar") ?: 0
|
||||
}
|
||||
ROUND_ROBIN -> RoundRobin(pairingParams, placementParams)
|
||||
}
|
||||
}
|
||||
|
||||
fun Pairing.toJson() = Json.Object(
|
||||
fun Pairing.toJson(): Json.Object = Json.MutableObject(
|
||||
"type" to type.name,
|
||||
"base" to pairingParams.base.toJson(),
|
||||
"main" to pairingParams.main.toJson(),
|
||||
@@ -318,4 +323,9 @@ fun Pairing.toJson() = Json.Object(
|
||||
"geo" to pairingParams.geo.toJson(),
|
||||
"handicap" to pairingParams.handicap.toJson(),
|
||||
"placement" to placementParams.toJson()
|
||||
)
|
||||
).also { ret ->
|
||||
if (this is MacMahon) {
|
||||
ret["mmFloor"] = mmFloor
|
||||
ret["mmBar"] = mmBar
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@ abstract class BasePairingHelper(
|
||||
}
|
||||
// pairables sorted for pairing purposes
|
||||
protected val nameSortedPairables by lazy {
|
||||
pairables.sortedWith(::nameSort)
|
||||
pairables.sortedWith(::nameSort).toMutableList()
|
||||
}
|
||||
|
||||
protected val pairablesMap by lazy {
|
||||
|
@@ -29,6 +29,7 @@ sealed class BaseSolver(
|
||||
companion object {
|
||||
val rand = Random(/* seed from properties - TODO */)
|
||||
val DEBUG_EXPORT_WEIGHT = true
|
||||
var byePlayers: MutableList<Pairable> = mutableListOf()
|
||||
}
|
||||
|
||||
open fun openGothaWeight(p1: Pairable, p2: Pairable) =
|
||||
@@ -40,7 +41,7 @@ sealed class BaseSolver(
|
||||
|
||||
open fun weight(p1: Pairable, p2: Pairable) =
|
||||
openGothaWeight(p1, p2) +
|
||||
//pairing.base.applyByeWeight(p1, p2) +
|
||||
// pairing.base.applyByeWeight(p1, p2) +
|
||||
pairing.handicap.color(p1, p2)
|
||||
|
||||
fun pair(): List<Game> {
|
||||
@@ -59,13 +60,34 @@ sealed class BaseSolver(
|
||||
// println("placement criteria" + placement.criteria.toString())
|
||||
}
|
||||
|
||||
var chosenByePlayer: Pairable = ByePlayer
|
||||
// Choose bye player and remove from pairables
|
||||
if (ByePlayer in nameSortedPairables){
|
||||
nameSortedPairables.remove(ByePlayer)
|
||||
var minWeight = 1000.0*round + (Pairable.MAX_RANK - Pairable.MIN_RANK) + 1;
|
||||
var weightForBye : Double
|
||||
var byePlayerIndex = 0
|
||||
for (p in nameSortedPairables){
|
||||
weightForBye = p.rank + 2*p.main
|
||||
if (p in byePlayers) weightForBye += 1000
|
||||
if (weightForBye <= minWeight){
|
||||
minWeight = weightForBye
|
||||
chosenByePlayer = p
|
||||
}
|
||||
println("choose Bye: " + p.nameSeed() + " " + weightForBye)
|
||||
}
|
||||
println("Bye player : " + chosenByePlayer.nameSeed())
|
||||
byePlayers.add(chosenByePlayer)
|
||||
nameSortedPairables.remove(chosenByePlayer)
|
||||
}
|
||||
|
||||
for (i in nameSortedPairables.indices) {
|
||||
// println(nameSortedPairables[i].nameSeed() + " id="+nameSortedPairables[i].id.toString()+" clasmt="+nameSortedPairables[i].placeInGroup.toString())
|
||||
for (j in i + 1 until pairables.size) {
|
||||
for (j in i + 1 until nameSortedPairables.size) {
|
||||
val p = nameSortedPairables[i]
|
||||
val q = nameSortedPairables[j]
|
||||
weight(p, q).let { if (it != Double.NaN) builder.addEdge(p, q, it) }
|
||||
weight(q, p).let { if (it != Double.NaN) builder.addEdge(q, p, it) }
|
||||
weight(p, q).let { if (it != Double.NaN) builder.addEdge(p, q, it/1e6) }
|
||||
weight(q, p).let { if (it != Double.NaN) builder.addEdge(q, p, it/1e6) }
|
||||
if (DEBUG_EXPORT_WEIGHT)
|
||||
{
|
||||
File(WEIGHTS_FILE).appendText("Player1Name="+p.nameSeed()+"\n")
|
||||
@@ -80,6 +102,7 @@ sealed class BaseSolver(
|
||||
File(WEIGHTS_FILE).appendText("secHandiCost="+dec.format(pairing.handicap.handicap(p, q))+"\n")
|
||||
File(WEIGHTS_FILE).appendText("secGeoCost="+dec.format(pairing.geo.apply(p, q))+"\n")
|
||||
File(WEIGHTS_FILE).appendText("totalCost="+dec.format(openGothaWeight(p,q))+"\n")
|
||||
//File(WEIGHTS_FILE).appendText("ByeCost="+dec.format(pairing.base.applyByeWeight(p,q))+"\n")
|
||||
|
||||
}
|
||||
}
|
||||
@@ -92,10 +115,20 @@ sealed class BaseSolver(
|
||||
listOf(graph.getEdgeSource(it), graph.getEdgeTarget(it))
|
||||
}.sortedWith(compareBy({ min(it[0].place, it[1].place) }))
|
||||
|
||||
val result = sorted.flatMap { games(white = it[0], black = it[1]) }
|
||||
/* println(sorted.size)
|
||||
if (chosenByePlayer != ByePlayer) sorted.add(listOf(chosenByePlayer, ByePlayer))
|
||||
println(sorted.size)*/
|
||||
|
||||
var result = sorted.flatMap { games(white = it[0], black = it[1]) }
|
||||
// add game for ByePlayer
|
||||
if (chosenByePlayer != ByePlayer) result += Game(id = Store.nextGameId, white = ByePlayer.id, black = chosenByePlayer.id, result = Game.Result.fromSymbol('b'))
|
||||
|
||||
if (DEBUG_EXPORT_WEIGHT) {
|
||||
println("DUDD debug")
|
||||
println(nameSortedPairables[2].nameSeed() + " " + nameSortedPairables[6].nameSeed())
|
||||
pairing.main.applyDUDD(nameSortedPairables[2],nameSortedPairables[6], debug=true)
|
||||
var sumOfWeights = 0.0
|
||||
println("name place ID colorBal group DUDD vs name place ID colorBal group DUDD")
|
||||
for (it in sorted) {
|
||||
println(it[0].nameSeed() + " " + it[0].place.toString()
|
||||
+ " " + it[0].id.toString()
|
||||
@@ -165,8 +198,9 @@ sealed class BaseSolver(
|
||||
val actualPlayer = if (p1.id == ByePlayer.id) p2 else p1
|
||||
// TODO maybe use a different formula than opengotha
|
||||
val x = (actualPlayer.rank - Pairable.MIN_RANK + actualPlayer.main) / (Pairable.MAX_RANK - Pairable.MIN_RANK + mainLimits.second)
|
||||
concavityFunction(x, BaseCritParams.MAX_BYE_WEIGHT)
|
||||
BaseCritParams.MAX_BYE_WEIGHT - (actualPlayer.rank + 2*actualPlayer.main)
|
||||
//concavityFunction(x, BaseCritParams.MAX_BYE_WEIGHT)
|
||||
//BaseCritParams.MAX_BYE_WEIGHT - (actualPlayer.rank + 2*actualPlayer.main)
|
||||
BaseCritParams.MAX_BYE_WEIGHT*(1 - x)
|
||||
} else {
|
||||
0.0
|
||||
}
|
||||
@@ -202,8 +236,7 @@ sealed class BaseSolver(
|
||||
open fun MainCritParams.minimizeScoreDifference(p1: Pairable, p2: Pairable): Double {
|
||||
var score = 0.0
|
||||
val scoreRange: Int = groupsCount
|
||||
// TODO check category equality if category are used in SwissCat
|
||||
if (scoreRange!=0){
|
||||
if (scoreRange != 0){
|
||||
val x = abs(p1.group - p2.group).toDouble() / scoreRange.toDouble()
|
||||
score = concavityFunction(x, scoreWeight)
|
||||
}
|
||||
@@ -211,7 +244,7 @@ sealed class BaseSolver(
|
||||
return score
|
||||
}
|
||||
|
||||
open fun MainCritParams.applyDUDD(p1: Pairable, p2: Pairable): Double {
|
||||
open fun MainCritParams.applyDUDD(p1: Pairable, p2: Pairable, debug: Boolean =false): Double {
|
||||
var score = 0.0
|
||||
|
||||
// TODO apply Drawn-Up/Drawn-Down if needed
|
||||
@@ -256,12 +289,16 @@ sealed class BaseSolver(
|
||||
if (scenario != 0 && p2_DD > 0 && p2_DU < p2_DD && p2.group > p1.group) {
|
||||
scenario++
|
||||
}
|
||||
|
||||
val duddWeight: Double = pairing.main.drawUpDownWeight/5.0
|
||||
val upperSP = if (p1.group < p2.group) p1 else p2
|
||||
val lowerSP = if (p1.group < p2.group) p2 else p1
|
||||
val upperSP = if (p1.group < p2.group) p2 else p1
|
||||
val lowerSP = if (p1.group < p2.group) p1 else p2
|
||||
val uSPgroupSize = upperSP.placeInGroup.second
|
||||
val lSPgroupSize = lowerSP.placeInGroup.second
|
||||
|
||||
|
||||
|
||||
|
||||
if (pairing.main.drawUpDownUpperMode === MainCritParams.DrawUpDown.TOP) {
|
||||
score += duddWeight / 2 * (uSPgroupSize - 1 - upperSP.placeInGroup.first) / uSPgroupSize
|
||||
} else if (pairing.main.drawUpDownUpperMode === MainCritParams.DrawUpDown.MIDDLE) {
|
||||
@@ -287,8 +324,20 @@ sealed class BaseSolver(
|
||||
} else if (scenario == 4) {
|
||||
score += 4 * duddWeight
|
||||
}
|
||||
|
||||
if(debug){
|
||||
println("Names "+upperSP.nameSeed()+" "+lowerSP.nameSeed())
|
||||
println("DUDD scenario, GroupDiff = "+scenario.toString()+" "+(upperSP.group-lowerSP.group).toString())
|
||||
println("DUDD Upper/Lower modes = "+pairing.main.drawUpDownUpperMode.toString()+" "+pairing.main.drawUpDownLowerMode.toString())
|
||||
println("u/lSPgroupsize = "+uSPgroupSize.toString()+" "+lSPgroupSize.toString())
|
||||
println("u/lSPplaceingroup = "+upperSP.placeInGroup.first.toString()+" "+lowerSP.placeInGroup.first.toString())
|
||||
println("score = " + score.toString())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TODO adapt to Swiss with categories
|
||||
/*// But, if players come from different categories, decrease score(added in 3.11)
|
||||
val catGap: Int = Math.abs(p1.category(gps) - p2.category(gps))
|
||||
|
@@ -1,29 +1,43 @@
|
||||
package org.jeudego.pairgoth.pairing.solver
|
||||
|
||||
import org.jeudego.pairgoth.model.*
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
class MacMahonSolver(round: Int,
|
||||
history: List<List<Game>>,
|
||||
pairables: List<Pairable>,
|
||||
pairingParams: PairingParams,
|
||||
placementParams: PlacementParams):
|
||||
placementParams: PlacementParams,
|
||||
private val mmFloor: Int, private val mmBar: Int):
|
||||
BaseSolver(round, history, pairables, pairingParams, placementParams) {
|
||||
|
||||
override val scores: Map<ID, Double> by lazy {
|
||||
historyHelper.wins.mapValues {
|
||||
pairablesMap[it.key]!!.let { pairable ->
|
||||
pairable.mmBase + pairable.nbW
|
||||
pairablesMap.mapValues { it.value.let {
|
||||
pairable -> pairable.mmBase + pairable.nbW // TODO take tournament parameter into account
|
||||
} }
|
||||
}
|
||||
}
|
||||
}
|
||||
val Pairable.mmBase: Double get() = rank + 30.0 // TODO use params
|
||||
|
||||
val Pairable.mmBase: Double get() = min(max(rank, mmFloor), mmBar) + mmsZero
|
||||
val Pairable.mms: Double get() = scores[id] ?: 0.0
|
||||
|
||||
// CB TODO - configurable criteria
|
||||
override val mainLimits get() = Pair(0.0, 100.0) // TODO
|
||||
val mainScoreMin = mmFloor + PLA_SMMS_SCORE_MIN - Pairable.MIN_RANK
|
||||
val mainScoreMax = mmBar + PLA_SMMS_SCORE_MAX + (round-1) - Pairable.MIN_RANK // round number starts at 1
|
||||
override val mainLimits get() = Pair(mainScoreMin.toDouble(), mainScoreMax.toDouble())
|
||||
override fun evalCriterion(pairable: Pairable, criterion: Criterion) = when (criterion) {
|
||||
Criterion.MMS -> pairable.mms
|
||||
Criterion.SOSM -> pairable.sos
|
||||
Criterion.SOSOSM -> pairable.sosos
|
||||
Criterion.SOSMM1 -> pairable.sosm1
|
||||
Criterion.SOSMM2 -> pairable.sosm2
|
||||
else -> super.evalCriterion(pairable, criterion)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val mmsZero = 30.0
|
||||
const val PLA_SMMS_SCORE_MAX = 2 // TODO move this into placement criteria
|
||||
const val PLA_SMMS_SCORE_MIN = -1
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -246,6 +246,11 @@ class PairingTests: TestBase() {
|
||||
var firstGameID: Int
|
||||
var playersList = mutableListOf<Long>()
|
||||
|
||||
var forcedPairingList = mutableListOf<Int>(1)
|
||||
var forcedPairing = mutableListOf<Json>()
|
||||
var forcedGames: Json.Array
|
||||
var game: Json
|
||||
|
||||
for (i in 0..34){
|
||||
playersList.add(players.getJson(i)!!.asObject()["id"] as Long)
|
||||
}
|
||||
@@ -253,12 +258,97 @@ class PairingTests: TestBase() {
|
||||
val byePlayerList = mutableListOf<Long>(354, 359, 356, 357, 345, 339, 368, 344, 349, 341)
|
||||
|
||||
for (round in 1..7) {
|
||||
games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array(playersList.filter{it != byePlayerList[round-1]})).asArray()
|
||||
//games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array(playersList.filter{it != byePlayerList[round-1]})).asArray()
|
||||
|
||||
if (round in forcedPairingList){
|
||||
// games must be created and then modified by PUT
|
||||
games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array("all")).asArray()
|
||||
forcedPairing = mutableListOf<Json>()
|
||||
forcedGames = Json.parse(pairingsR1)!!.asArray()
|
||||
for (j in 0..forcedGames.size-1) {
|
||||
game = forcedGames.getJson(j)!!.asObject()
|
||||
TestAPI.put("/api/tour/$id/pair/$round", game)
|
||||
}
|
||||
games = TestAPI.get("/api/tour/$id/res/$round").asArray()
|
||||
}
|
||||
else {
|
||||
//games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array(playersList.filter{it != byePlayerList[round-1]})).asArray()
|
||||
games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array("all")).asArray()
|
||||
logger.info("games for round $round: {}", games.toString())
|
||||
|
||||
assertTrue(compare_weights("weights.txt", "opengotha/notsosimpleswiss_weights_R$round.txt"), "Not matching opengotha weights for round $round")
|
||||
assertTrue(compare_games(games, Json.parse(pairings[round - 1])!!.asArray()),"pairings for round $round differ")
|
||||
logger.info("Pairings for round $round match OpenGotha")
|
||||
}
|
||||
logger.info("games for round $round: {}", games.toString())
|
||||
|
||||
firstGameID = (games.getJson(0)!!.asObject()["id"] as Long?)!!.toInt()
|
||||
for (gameID in firstGameID..firstGameID + 16) {
|
||||
resp = TestAPI.put("/api/tour/$id/res/$round", Json.parse("""{"id":$gameID,"result":"b"}""")).asObject()
|
||||
assertTrue(resp.getBoolean("success") == true, "expecting success")
|
||||
}
|
||||
logger.info("Results succesfully entered for round $round")
|
||||
}
|
||||
|
||||
}
|
||||
@Test
|
||||
fun `testSimpleMM`() {
|
||||
/*
|
||||
// read tournament with pairing
|
||||
var fileOG = getTestFile("opengotha/pairings/simplemm.xml")
|
||||
|
||||
logger.info("read from file $fileOG")
|
||||
val resourceOG = fileOG.readText(StandardCharsets.UTF_8)
|
||||
val respOG = TestAPI.post("/api/tour", resourceOG)
|
||||
val idOG = respOG.asObject().getInt("id")
|
||||
val tournamentOG = TestAPI.get("/api/tour/$idOG").asObject()
|
||||
logger.info(tournamentOG.toString().slice(0..50) + "...")
|
||||
val playersOG = TestAPI.get("/api/tour/$idOG/part").asArray()
|
||||
//logger.info(players.toString().slice(0..50) + "...")
|
||||
//logger.info(playersOG.toString())
|
||||
|
||||
val pairingsOG = mutableListOf<String>()
|
||||
for (round in 1..tournamentOG.getInt("rounds")!!) {
|
||||
val games = TestAPI.get("/api/tour/$idOG/res/$round").asArray()
|
||||
logger.info("games for round $round: {}", games.toString())
|
||||
pairingsOG.add(games.toString())
|
||||
}*/
|
||||
|
||||
|
||||
val pairingsR1 = """[{"id":1,"w":3,"b":5,"h":0,"r":"w","dd":0},{"id":2,"w":12,"b":10,"h":0,"r":"b","dd":0},{"id":3,"w":9,"b":14,"h":0,"r":"b","dd":0},{"id":4,"w":11,"b":6,"h":0,"r":"b","dd":0},{"id":5,"w":13,"b":15,"h":0,"r":"b","dd":0},{"id":6,"w":2,"b":16,"h":1,"r":"w","dd":0},{"id":7,"w":8,"b":4,"h":5,"r":"b","dd":0},{"id":8,"w":7,"b":1,"h":2,"r":"w","dd":0}]"""
|
||||
val pairingsR2 = """[{"id":9,"w":14,"b":3,"h":0,"r":"b","dd":0},{"id":10,"w":10,"b":5,"h":0,"r":"b","dd":0},{"id":11,"w":6,"b":9,"h":0,"r":"b","dd":0},{"id":12,"w":15,"b":12,"h":0,"r":"w","dd":0},{"id":13,"w":2,"b":11,"h":0,"r":"w","dd":0},{"id":14,"w":8,"b":13,"h":0,"r":"b","dd":0},{"id":15,"w":7,"b":4,"h":0,"r":"b","dd":0},{"id":16,"w":16,"b":1,"h":7,"r":"b","dd":0}]"""
|
||||
val pairingsR3 = """[{"id":17,"w":5,"b":14,"h":0,"r":"b","dd":0},{"id":18,"w":10,"b":9,"h":0,"r":"w","dd":0},{"id":19,"w":15,"b":3,"h":0,"r":"w","dd":0},{"id":20,"w":12,"b":2,"h":0,"r":"b","dd":0},{"id":21,"w":6,"b":13,"h":0,"r":"b","dd":0},{"id":22,"w":11,"b":8,"h":0,"r":"w","dd":0},{"id":23,"w":16,"b":7,"h":3,"r":"w","dd":0},{"id":24,"w":4,"b":1,"h":3,"r":"b","dd":0}]"""
|
||||
val pairingsR4 = """[{"id":25,"w":3,"b":10,"h":0,"r":"w","dd":0},{"id":26,"w":14,"b":15,"h":0,"r":"b","dd":0},{"id":27,"w":5,"b":2,"h":0,"r":"w","dd":0},{"id":28,"w":12,"b":6,"h":0,"r":"w","dd":0},{"id":29,"w":9,"b":11,"h":0,"r":"w","dd":0},{"id":30,"w":16,"b":4,"h":3,"r":"b","dd":0},{"id":31,"w":13,"b":7,"h":5,"r":"w","dd":0},{"id":32,"w":8,"b":1,"h":6,"r":"w","dd":0}]"""
|
||||
val pairingsR5 = """[{"id":33,"w":15,"b":5,"h":0,"r":"w","dd":0},{"id":34,"w":14,"b":10,"h":0,"r":"b","dd":0},{"id":35,"w":9,"b":3,"h":0,"r":"w","dd":0},{"id":36,"w":13,"b":2,"h":0,"r":"w","dd":0},{"id":37,"w":16,"b":12,"h":0,"r":"b","dd":0},{"id":38,"w":11,"b":4,"h":3,"r":"b","dd":0},{"id":39,"w":8,"b":7,"h":5,"r":"w","dd":0},{"id":40,"w":6,"b":1,"h":7,"r":"b","dd":0}]"""
|
||||
val pairings = mutableListOf<String>()
|
||||
pairings.add(pairingsR1)
|
||||
pairings.add(pairingsR2)
|
||||
pairings.add(pairingsR3)
|
||||
pairings.add(pairingsR4)
|
||||
pairings.add(pairingsR5)
|
||||
|
||||
// read tournament without pairings
|
||||
var file = getTestFile("opengotha/pairings/simplemm_nopairings.xml")
|
||||
logger.info("read from file $file")
|
||||
val resource = file.readText(StandardCharsets.UTF_8)
|
||||
var resp = TestAPI.post("/api/tour", resource)
|
||||
val id = resp.asObject().getInt("id")
|
||||
assertNotNull(id)
|
||||
val tournament = TestAPI.get("/api/tour/$id").asObject()
|
||||
logger.info(tournament.toString().slice(0..50) + "...")
|
||||
val players = TestAPI.get("/api/tour/$id/part").asArray()
|
||||
logger.info(players.toString().slice(0..50) + "...")
|
||||
|
||||
var games: Json.Array
|
||||
var firstGameID: Int
|
||||
|
||||
for (round in 1..5) {
|
||||
games = TestAPI.post("/api/tour/$id/pair/$round", Json.Array("all")).asArray()
|
||||
logger.info("games for round $round: {}", games.toString())
|
||||
|
||||
assertTrue(compare_weights("weights.txt", "opengotha/simplemm/simplemm_weights_R$round.txt"), "Not matching opengotha weights for round $round")
|
||||
assertTrue(compare_games(games, Json.parse(pairings[round - 1])!!.asArray()),"pairings for round $round differ")
|
||||
logger.info("Pairings for round $round match OpenGotha")
|
||||
|
||||
firstGameID = (games.getJson(0)!!.asObject()["id"] as Long?)!!.toInt()
|
||||
for (gameID in firstGameID..firstGameID + 15) {
|
||||
@@ -267,7 +357,6 @@ class PairingTests: TestBase() {
|
||||
}
|
||||
logger.info("Results succesfully entered for round $round")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<Tournament dataVersion="201" externalIPAddress="77.128.107.78" gothaMinorVersion="5" gothaVersion="348" saveDT="20191119110542">
|
||||
<Players>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="2200056" ffgLicenceStatus="L" firstName="Clé" grade="10K" name="Robin" participating="11111111111111111111" rank="10K" rating="1129" ratingOrigin="FFG : -921" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2100063" ffgLicenceStatus="L" firstName="Baptiste" grade="1D" name="Fiorina" participating="11111111111111111111" rank="1D" rating="2106" ratingOrigin="FFG : 56" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="0280000" ffgLicenceStatus="L" firstName="Motoki" grade="7D" name="Noguchi" participating="11111111111111111111" rank="7D" rating="2666" ratingOrigin="FFG : 616" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="1000392" ffgLicenceStatus="L" firstName="Alexandra" grade="7K" name="Goloubkov" participating="11111111111111111111" rank="7K" rating="1389" ratingOrigin="FFG : -661" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="00St" country="FR" egfPin="" ffgLicence="1600310" ffgLicenceStatus="L" firstName="Robin" grade="4D" name="Bonjean" participating="11111111111111111111" rank="4D" rating="2357" ratingOrigin="FFG : 307" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1000005" ffgLicenceStatus="L" firstName="Quentin" grade="2D" name="Rendu" participating="11111111111111111111" rank="2D" rating="2155" ratingOrigin="FFG : 105" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1700003" ffgLicenceStatus="L" firstName="Morgane" grade="7K" name="Marechal" participating="11111111111111111111" rank="7K" rating="1388" ratingOrigin="FFG : -662" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="7904900" ffgLicenceStatus="L" firstName="Dominique" grade="1K" name="Cornuejols" participating="11111111111111111111" rank="1K" rating="2035" ratingOrigin="FFG : -15" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="49An" country="FR" egfPin="" ffgLicence="1800102" ffgLicenceStatus="L" firstName="Theo" grade="3D" name="Lemoine" participating="11111111111111111111" rank="3D" rating="2317" ratingOrigin="FFG : 267" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="9791002" ffgLicenceStatus="L" firstName="Toru" grade="3D" name="Imamura-Cornuejols" participating="11111111111111111111" rank="3D" rating="2343" ratingOrigin="FFG : 293" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2000113" ffgLicenceStatus="L" firstName="Warren" grade="2D" name="Aim" participating="11111111111111111111" rank="2D" rating="2231" ratingOrigin="FFG : 181" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1300045" ffgLicenceStatus="L" firstName="Loïc" grade="3D" name="Lefebvre" participating="11111111111111111111" rank="3D" rating="2281" ratingOrigin="FFG : 231" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Ju" country="FR" egfPin="" ffgLicence="0800078" ffgLicenceStatus="L" firstName="Rémi" grade="1K" name="Cornaggia" participating="11111111111111111111" rank="1K" rating="1995" ratingOrigin="FFG : -55" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="0900438" ffgLicenceStatus="L" firstName="Denis" grade="6D" name="Karadaban" participating="11111111111111111111" rank="6D" rating="2576" ratingOrigin="FFG : 526" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1800061" ffgLicenceStatus="L" firstName="Camille" grade="2D" name="Leveque" participating="11111111111111111111" rank="2D" rating="2221" ratingOrigin="FFG : 171" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="37To" country="FR" egfPin="" ffgLicence="2100064" ffgLicenceStatus="L" firstName="Romain" grade="2K" name="Durand" participating="11111111111111111111" rank="2K" rating="1851" ratingOrigin="FFG : -199" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
</Players>
|
||||
<Games>
|
||||
<Game blackPlayer="BONJEANROBIN" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="1" tableNumber="1" whitePlayer="NOGUCHIMOTOKI"/>
|
||||
<Game blackPlayer="IMAMURA-CORNUEJOLSTORU" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="1" tableNumber="2" whitePlayer="LEFEBVRELOÏC"/>
|
||||
<Game blackPlayer="KARADABANDENIS" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="1" tableNumber="3" whitePlayer="LEMOINETHEO"/>
|
||||
<Game blackPlayer="RENDUQUENTIN" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="1" tableNumber="4" whitePlayer="AIMWARREN"/>
|
||||
<Game blackPlayer="LEVEQUECAMILLE" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="1" tableNumber="5" whitePlayer="CORNAGGIARÉMI"/>
|
||||
<Game blackPlayer="DURANDROMAIN" handicap="1" knownColor="true" result="RESULT_WHITEWINS" roundNumber="1" tableNumber="6" whitePlayer="FIORINABAPTISTE"/>
|
||||
<Game blackPlayer="GOLOUBKOVALEXANDRA" handicap="5" knownColor="true" result="RESULT_BLACKWINS" roundNumber="1" tableNumber="7" whitePlayer="CORNUEJOLSDOMINIQUE"/>
|
||||
<Game blackPlayer="ROBINCLÉ" handicap="2" knownColor="true" result="RESULT_WHITEWINS" roundNumber="1" tableNumber="8" whitePlayer="MARECHALMORGANE"/>
|
||||
<Game blackPlayer="KARADABANDENIS" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="3" tableNumber="1" whitePlayer="BONJEANROBIN"/>
|
||||
<Game blackPlayer="LEMOINETHEO" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="3" tableNumber="2" whitePlayer="IMAMURA-CORNUEJOLSTORU"/>
|
||||
<Game blackPlayer="NOGUCHIMOTOKI" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="3" tableNumber="3" whitePlayer="LEVEQUECAMILLE"/>
|
||||
<Game blackPlayer="FIORINABAPTISTE" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="3" tableNumber="4" whitePlayer="LEFEBVRELOÏC"/>
|
||||
<Game blackPlayer="CORNAGGIARÉMI" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="3" tableNumber="5" whitePlayer="RENDUQUENTIN"/>
|
||||
<Game blackPlayer="CORNUEJOLSDOMINIQUE" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="3" tableNumber="6" whitePlayer="AIMWARREN"/>
|
||||
<Game blackPlayer="MARECHALMORGANE" handicap="3" knownColor="true" result="RESULT_WHITEWINS" roundNumber="3" tableNumber="7" whitePlayer="DURANDROMAIN"/>
|
||||
<Game blackPlayer="ROBINCLÉ" handicap="3" knownColor="true" result="RESULT_BLACKWINS" roundNumber="3" tableNumber="8" whitePlayer="GOLOUBKOVALEXANDRA"/>
|
||||
<Game blackPlayer="BONJEANROBIN" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="5" tableNumber="1" whitePlayer="LEVEQUECAMILLE"/>
|
||||
<Game blackPlayer="IMAMURA-CORNUEJOLSTORU" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="5" tableNumber="2" whitePlayer="KARADABANDENIS"/>
|
||||
<Game blackPlayer="NOGUCHIMOTOKI" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="5" tableNumber="3" whitePlayer="LEMOINETHEO"/>
|
||||
<Game blackPlayer="FIORINABAPTISTE" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="5" tableNumber="4" whitePlayer="CORNAGGIARÉMI"/>
|
||||
<Game blackPlayer="LEFEBVRELOÏC" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="5" tableNumber="5" whitePlayer="DURANDROMAIN"/>
|
||||
<Game blackPlayer="GOLOUBKOVALEXANDRA" handicap="3" knownColor="true" result="RESULT_BLACKWINS" roundNumber="5" tableNumber="6" whitePlayer="AIMWARREN"/>
|
||||
<Game blackPlayer="MARECHALMORGANE" handicap="5" knownColor="true" result="RESULT_WHITEWINS" roundNumber="5" tableNumber="7" whitePlayer="CORNUEJOLSDOMINIQUE"/>
|
||||
<Game blackPlayer="ROBINCLÉ" handicap="7" knownColor="true" result="RESULT_BLACKWINS" roundNumber="5" tableNumber="8" whitePlayer="RENDUQUENTIN"/>
|
||||
<Game blackPlayer="NOGUCHIMOTOKI" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="1" whitePlayer="KARADABANDENIS"/>
|
||||
<Game blackPlayer="BONJEANROBIN" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="2" whitePlayer="IMAMURA-CORNUEJOLSTORU"/>
|
||||
<Game blackPlayer="LEMOINETHEO" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="3" whitePlayer="RENDUQUENTIN"/>
|
||||
<Game blackPlayer="LEFEBVRELOÏC" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="2" tableNumber="4" whitePlayer="LEVEQUECAMILLE"/>
|
||||
<Game blackPlayer="AIMWARREN" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="2" tableNumber="5" whitePlayer="FIORINABAPTISTE"/>
|
||||
<Game blackPlayer="CORNAGGIARÉMI" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="6" whitePlayer="CORNUEJOLSDOMINIQUE"/>
|
||||
<Game blackPlayer="GOLOUBKOVALEXANDRA" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="7" whitePlayer="MARECHALMORGANE"/>
|
||||
<Game blackPlayer="ROBINCLÉ" handicap="7" knownColor="true" result="RESULT_BLACKWINS" roundNumber="2" tableNumber="8" whitePlayer="DURANDROMAIN"/>
|
||||
<Game blackPlayer="IMAMURA-CORNUEJOLSTORU" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="1" whitePlayer="NOGUCHIMOTOKI"/>
|
||||
<Game blackPlayer="LEVEQUECAMILLE" handicap="0" knownColor="true" result="RESULT_BLACKWINS" roundNumber="4" tableNumber="2" whitePlayer="KARADABANDENIS"/>
|
||||
<Game blackPlayer="FIORINABAPTISTE" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="3" whitePlayer="BONJEANROBIN"/>
|
||||
<Game blackPlayer="RENDUQUENTIN" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="4" whitePlayer="LEFEBVRELOÏC"/>
|
||||
<Game blackPlayer="AIMWARREN" handicap="0" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="5" whitePlayer="LEMOINETHEO"/>
|
||||
<Game blackPlayer="GOLOUBKOVALEXANDRA" handicap="3" knownColor="true" result="RESULT_BLACKWINS" roundNumber="4" tableNumber="6" whitePlayer="DURANDROMAIN"/>
|
||||
<Game blackPlayer="MARECHALMORGANE" handicap="5" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="7" whitePlayer="CORNAGGIARÉMI"/>
|
||||
<Game blackPlayer="ROBINCLÉ" handicap="6" knownColor="true" result="RESULT_WHITEWINS" roundNumber="4" tableNumber="8" whitePlayer="CORNUEJOLSDOMINIQUE"/>
|
||||
</Games>
|
||||
<TournamentParameterSet>
|
||||
<GeneralParameterSet bInternet="false" basicTime="60" beginDate="2023-10-31" canByoYomiTime="300" complementaryTimeSystem="STDBYOYOMI" director="Theo" endDate="2023-10-31" fischerTime="10" genCountNotPlayedGamesAsHalfPoint="false" genMMBar="4D" genMMFloor="20K" genMMS2ValueAbsent="1" genMMS2ValueBye="2" genMMZero="30K" genNBW2ValueAbsent="0" genNBW2ValueBye="2" genRoundDownNBWMMS="true" komi="7.5" location="Marseillebb" name="SimpleMM" nbMovesCanTime="15" numberOfCategories="1" numberOfRounds="5" shortName="simplemm" size="19" stdByoYomiTime="30"/>
|
||||
<HandicapParameterSet hdBasedOnMMS="true" hdCeiling="9" hdCorrection="1" hdNoHdRankThreshold="1D"/>
|
||||
<PlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="MMS" number="1"/>
|
||||
<PlacementCriterion name="SOSM" number="2"/>
|
||||
<PlacementCriterion name="SOSOSM" number="3"/>
|
||||
<PlacementCriterion name="NULL" number="4"/>
|
||||
<PlacementCriterion name="NULL" number="5"/>
|
||||
<PlacementCriterion name="NULL" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</PlacementParameterSet>
|
||||
<PairingParameterSet paiBaAvoidDuplGame="500000000000000" paiBaBalanceWB="1000000" paiBaDeterministic="true" paiBaRandom="0" paiMaAdditionalPlacementCritSystem1="Rating" paiMaAdditionalPlacementCritSystem2="NULL" paiMaAvoidMixingCategories="0" paiMaCompensateDUDD="true" paiMaDUDDLowerMode="MID" paiMaDUDDUpperMode="MID" paiMaDUDDWeight="100000000" paiMaLastRoundForSeedSystem1="2" paiMaMaximizeSeeding="5000000" paiMaMinimizeScoreDifference="100000000000" paiMaSeedSystem1="SPLITANDRANDOM" paiMaSeedSystem2="SPLITANDSLIP" paiSeAvoidSameGeo="100000000000" paiSeBarThresholdActive="true" paiSeDefSecCrit="100000000000" paiSeMinimizeHandicap="0" paiSeNbWinsThresholdActive="false" paiSePreferMMSDiffRatherThanSameClub="3" paiSePreferMMSDiffRatherThanSameCountry="1" paiSeRankThreshold="1D" paiStandardNX1Factor="0.5"/>
|
||||
<DPParameterSet displayClCol="true" displayCoCol="true" displayIndGamesInMatches="true" displayNPPlayers="false" displayNumCol="true" displayPlCol="true" gameFormat="full" playerSortType="name" showByePlayer="true" showNotFinallyRegisteredPlayers="true" showNotPairedPlayers="true" showNotParticipatingPlayers="false" showPlayerClub="true" showPlayerCountry="false" showPlayerGrade="true"/>
|
||||
<PublishParameterSet exportToLocalFile="true" htmlAutoScroll="false" print="true"/>
|
||||
</TournamentParameterSet>
|
||||
<TeamTournamentParameterSet>
|
||||
<TeamGeneralParameterSet teamSize="4"/>
|
||||
<TeamPlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="TEAMP" number="1"/>
|
||||
<PlacementCriterion name="BDW" number="2"/>
|
||||
<PlacementCriterion name="BDW3U" number="3"/>
|
||||
<PlacementCriterion name="BDW2U" number="4"/>
|
||||
<PlacementCriterion name="BDW1U" number="5"/>
|
||||
<PlacementCriterion name="MNR" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</TeamPlacementParameterSet>
|
||||
</TeamTournamentParameterSet>
|
||||
</Tournament>
|
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<Tournament dataVersion="201" externalIPAddress="77.128.107.78" gothaMinorVersion="5" gothaVersion="348" saveDT="20191119110542">
|
||||
<Players>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="2200056" ffgLicenceStatus="L" firstName="Clé" grade="10K" name="Robin" participating="11111111111111111111" rank="10K" rating="1129" ratingOrigin="FFG : -921" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2100063" ffgLicenceStatus="L" firstName="Baptiste" grade="1D" name="Fiorina" participating="11111111111111111111" rank="1D" rating="2106" ratingOrigin="FFG : 56" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="0280000" ffgLicenceStatus="L" firstName="Motoki" grade="7D" name="Noguchi" participating="11111111111111111111" rank="7D" rating="2666" ratingOrigin="FFG : 616" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="1000392" ffgLicenceStatus="L" firstName="Alexandra" grade="7K" name="Goloubkov" participating="11111111111111111111" rank="7K" rating="1389" ratingOrigin="FFG : -661" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="00St" country="FR" egfPin="" ffgLicence="1600310" ffgLicenceStatus="L" firstName="Robin" grade="4D" name="Bonjean" participating="11111111111111111111" rank="4D" rating="2357" ratingOrigin="FFG : 307" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1000005" ffgLicenceStatus="L" firstName="Quentin" grade="2D" name="Rendu" participating="11111111111111111111" rank="2D" rating="2155" ratingOrigin="FFG : 105" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1700003" ffgLicenceStatus="L" firstName="Morgane" grade="7K" name="Marechal" participating="11111111111111111111" rank="7K" rating="1388" ratingOrigin="FFG : -662" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="7904900" ffgLicenceStatus="L" firstName="Dominique" grade="1K" name="Cornuejols" participating="11111111111111111111" rank="1K" rating="2035" ratingOrigin="FFG : -15" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="49An" country="FR" egfPin="" ffgLicence="1800102" ffgLicenceStatus="L" firstName="Theo" grade="3D" name="Lemoine" participating="11111111111111111111" rank="3D" rating="2317" ratingOrigin="FFG : 267" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="9791002" ffgLicenceStatus="L" firstName="Toru" grade="3D" name="Imamura-Cornuejols" participating="11111111111111111111" rank="3D" rating="2343" ratingOrigin="FFG : 293" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2000113" ffgLicenceStatus="L" firstName="Warren" grade="2D" name="Aim" participating="11111111111111111111" rank="2D" rating="2231" ratingOrigin="FFG : 181" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1300045" ffgLicenceStatus="L" firstName="Loïc" grade="3D" name="Lefebvre" participating="11111111111111111111" rank="3D" rating="2281" ratingOrigin="FFG : 231" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Ju" country="FR" egfPin="" ffgLicence="0800078" ffgLicenceStatus="L" firstName="Rémi" grade="1K" name="Cornaggia" participating="11111111111111111111" rank="1K" rating="1995" ratingOrigin="FFG : -55" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="0900438" ffgLicenceStatus="L" firstName="Denis" grade="6D" name="Karadaban" participating="11111111111111111111" rank="6D" rating="2576" ratingOrigin="FFG : 526" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1800061" ffgLicenceStatus="L" firstName="Camille" grade="2D" name="Leveque" participating="11111111111111111111" rank="2D" rating="2221" ratingOrigin="FFG : 171" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="37To" country="FR" egfPin="" ffgLicence="2100064" ffgLicenceStatus="L" firstName="Romain" grade="2K" name="Durand" participating="11111111111111111111" rank="2K" rating="1851" ratingOrigin="FFG : -199" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
</Players>
|
||||
<Games/>
|
||||
<TournamentParameterSet>
|
||||
<GeneralParameterSet bInternet="false" basicTime="60" beginDate="2023-10-31" canByoYomiTime="300" complementaryTimeSystem="STDBYOYOMI" director="Theo" endDate="2023-10-31" fischerTime="10" genCountNotPlayedGamesAsHalfPoint="false" genMMBar="4D" genMMFloor="20K" genMMS2ValueAbsent="1" genMMS2ValueBye="2" genMMZero="30K" genNBW2ValueAbsent="0" genNBW2ValueBye="2" genRoundDownNBWMMS="true" komi="7.5" location="Marseillebb" name="SimpleMM" nbMovesCanTime="15" numberOfCategories="1" numberOfRounds="5" shortName="simplemm" size="19" stdByoYomiTime="30"/>
|
||||
<HandicapParameterSet hdBasedOnMMS="true" hdCeiling="9" hdCorrection="1" hdNoHdRankThreshold="1D"/>
|
||||
<PlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="MMS" number="1"/>
|
||||
<PlacementCriterion name="SOSM" number="2"/>
|
||||
<PlacementCriterion name="SOSOSM" number="3"/>
|
||||
<PlacementCriterion name="NULL" number="4"/>
|
||||
<PlacementCriterion name="NULL" number="5"/>
|
||||
<PlacementCriterion name="NULL" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</PlacementParameterSet>
|
||||
<PairingParameterSet paiBaAvoidDuplGame="500000000000000" paiBaBalanceWB="1000000" paiBaDeterministic="true" paiBaRandom="0" paiMaAdditionalPlacementCritSystem1="Rating" paiMaAdditionalPlacementCritSystem2="NULL" paiMaAvoidMixingCategories="0" paiMaCompensateDUDD="true" paiMaDUDDLowerMode="MID" paiMaDUDDUpperMode="MID" paiMaDUDDWeight="100000000" paiMaLastRoundForSeedSystem1="2" paiMaMaximizeSeeding="5000000" paiMaMinimizeScoreDifference="100000000000" paiMaSeedSystem1="SPLITANDRANDOM" paiMaSeedSystem2="SPLITANDSLIP" paiSeAvoidSameGeo="100000000000" paiSeBarThresholdActive="true" paiSeDefSecCrit="100000000000" paiSeMinimizeHandicap="0" paiSeNbWinsThresholdActive="false" paiSePreferMMSDiffRatherThanSameClub="3" paiSePreferMMSDiffRatherThanSameCountry="1" paiSeRankThreshold="1D" paiStandardNX1Factor="0.5"/>
|
||||
<DPParameterSet displayClCol="true" displayCoCol="true" displayIndGamesInMatches="true" displayNPPlayers="false" displayNumCol="true" displayPlCol="true" gameFormat="full" playerSortType="name" showByePlayer="true" showNotFinallyRegisteredPlayers="true" showNotPairedPlayers="true" showNotParticipatingPlayers="false" showPlayerClub="true" showPlayerCountry="false" showPlayerGrade="true"/>
|
||||
<PublishParameterSet exportToLocalFile="true" htmlAutoScroll="false" print="true"/>
|
||||
</TournamentParameterSet>
|
||||
<TeamTournamentParameterSet>
|
||||
<TeamGeneralParameterSet teamSize="4"/>
|
||||
<TeamPlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="TEAMP" number="1"/>
|
||||
<PlacementCriterion name="BDW" number="2"/>
|
||||
<PlacementCriterion name="BDW3U" number="3"/>
|
||||
<PlacementCriterion name="BDW2U" number="4"/>
|
||||
<PlacementCriterion name="BDW1U" number="5"/>
|
||||
<PlacementCriterion name="MNR" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</TeamPlacementParameterSet>
|
||||
</TeamTournamentParameterSet>
|
||||
</Tournament>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
112
api-webapp/src/test/resources/opengotha/stage-ete-2021.xml
Executable file
112
api-webapp/src/test/resources/opengotha/stage-ete-2021.xml
Executable file
@@ -0,0 +1,112 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<Tournament externalIPAddress="<!DOCTYPE html>" fullVersionNumber="3.51.05" macAddress="C8-E2-65-6F-80-E7" privateTournament="true" runningMode="SAL" saveDT="20210711010727">
|
||||
<Players>
|
||||
<Player agaExpirationDate="" agaId="" club="31To" country="FR" egfPin="" ffgLicence="1100278" ffgLicenceStatus="L" firstName="Andéol" grade="1K" name="Evain" participating="11111111111111111111" rank="1K" rating="1982" ratingOrigin="FFG : -68" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="0013006" ffgLicenceStatus="L" firstName="Philippe" grade="1D" name="Guerre-Genton" participating="11111111111111111111" rank="1D" rating="2080" ratingOrigin="FFG : 30" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1000229" ffgLicenceStatus="L" firstName="Ariane" grade="4D" name="Ougier" participating="11111000000000000000" rank="4D" rating="2392" ratingOrigin="FFG : 342" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31To" country="FR" egfPin="" ffgLicence="2100122" ffgLicenceStatus="C" firstName="Annabel" grade="20K" name="Fourcade" participating="11110000000000000000" rank="20K" rating="-900" ratingOrigin="FFG : -9999" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31Ba" country="FR" egfPin="" ffgLicence="2100112" ffgLicenceStatus="L" firstName="Benoit" grade="10K" name="Bonetti" participating="11111111111111111111" rank="10K" rating="-900" ratingOrigin="FFG : -9999" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="94Ca" country="FR" egfPin="" ffgLicence="1800050" ffgLicenceStatus="L" firstName="Bastien" grade="5K" name="Frappart" participating="11111000000000000000" rank="5K" rating="1598" ratingOrigin="FFG : -452" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Op" country="FR" egfPin="" ffgLicence="9425017" ffgLicenceStatus="L" firstName="Simon" grade="1K" name="Rosenblatt" participating="11111000000000000000" rank="1K" rating="2022" ratingOrigin="FFG : -28" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2000113" ffgLicenceStatus="L" firstName="Warren" grade="2K" name="Aim" participating="11111000000000000000" rank="2K" rating="1877" ratingOrigin="FFG : -173" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1900263" ffgLicenceStatus="L" firstName="Thibaut" grade="4K" name="Perrin" participating="11111111111111111111" rank="4K" rating="1652" ratingOrigin="FFG : -398" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1600034" ffgLicenceStatus="L" firstName="Benoit" grade="1K" name="Robichon" participating="11111111111111111111" rank="1K" rating="2046" ratingOrigin="FFG : -4" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1100032" ffgLicenceStatus="L" firstName="Elodie" grade="7K" name="Ronayette" participating="11111111111111111111" rank="7K" rating="1436" ratingOrigin="FFG : -614" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="92An" country="FR" egfPin="" ffgLicence="1200269" ffgLicenceStatus="L" firstName="Kevin" grade="4K" name="Houari" participating="11111111111111111111" rank="4K" rating="1674" ratingOrigin="FFG : -376" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75OB" country="FR" egfPin="" ffgLicence="9625036" ffgLicenceStatus="L" firstName="Daniel" grade="7K" name="Stockholm" participating="11100000000000000000" rank="7K" rating="1391" ratingOrigin="FFG : -659" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="35Re" country="FR" egfPin="" ffgLicence="1800152" ffgLicenceStatus="L" firstName="Tâm_Loup" grade="6K" name="le" participating="11111111111111111111" rank="6K" rating="1492" ratingOrigin="FFG : -558" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="1600070" ffgLicenceStatus="L" firstName="Abdallah" grade="2D" name="Mezouar" participating="11111111111111111111" rank="2D" rating="2198" ratingOrigin="FFG : 148" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="35Re" country="FR" egfPin="" ffgLicence="0900460" ffgLicenceStatus="L" firstName="Florent" grade="3D" name="Rioland" participating="11111000000000000000" rank="3D" rating="2342" ratingOrigin="FFG : 292" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="1800162" ffgLicenceStatus="L" firstName="Lubin" grade="1K" name="Wilhelm" participating="11111000000000000000" rank="1K" rating="2045" ratingOrigin="FFG : -5" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="92An" country="FR" egfPin="" ffgLicence="1000230" ffgLicenceStatus="L" firstName="Guillaume" grade="4D" name="Ougier" participating="11111111111111111111" rank="4D" rating="2418" ratingOrigin="FFG : 368" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="76Ha" country="FR" egfPin="" ffgLicence="2100074" ffgLicenceStatus="C" firstName="Anaïs" grade="20K" name="Wargny" participating="11111000000000000000" rank="20K" rating="-900" ratingOrigin="FFG : -9999" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="64Pa" country="FR" egfPin="" ffgLicence="1700199" ffgLicenceStatus="L" firstName="Sylvie" grade="22K" name="Goossens" participating="11111000000000000000" rank="22K" rating="-101" ratingOrigin="FFG : -2151" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2100126" ffgLicenceStatus="L" firstName="Louis" grade="10K" name="Vieille" participating="11111111111111111111" rank="10K" rating="-900" ratingOrigin="FFG : -9999" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75OB" country="FR" egfPin="" ffgLicence="2100058" ffgLicenceStatus="L" firstName="Rose-Marie" grade="8K" name="Bouisset" participating="11100000000000000000" rank="8K" rating="1280" ratingOrigin="FFG : -770" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="34Mo" country="FR" egfPin="" ffgLicence="2100033" ffgLicenceStatus="L" firstName="Hugo" grade="11K" name="Johnson" participating="11111111111111111111" rank="11K" rating="1028" ratingOrigin="FFG : -1022" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="66Pe" country="FR" egfPin="" ffgLicence="0473000" ffgLicenceStatus="L" firstName="Arnaud" grade="1K" name="Beltran" participating="11111111111111111111" rank="1K" rating="1989" ratingOrigin="FFG : -61" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="42Se" country="FR" egfPin="" ffgLicence="8590600" ffgLicenceStatus="L" firstName="Jean-Paul" grade="2K" name="Gaschignard" participating="11111111111111111111" rank="2K" rating="1925" ratingOrigin="FFG : -125" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="00St" country="FR" egfPin="" ffgLicence="1900244" ffgLicenceStatus="L" firstName="Gregoire" grade="3K" name="Thomazeau" participating="11111111111111111111" rank="3K" rating="1774" ratingOrigin="FFG : -276" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="91Or" country="FR" egfPin="" ffgLicence="1800220" ffgLicenceStatus="L" firstName="Etienne" grade="1K" name="Perroux" participating="11111111111111111111" rank="1K" rating="1978" ratingOrigin="FFG : -72" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="00St" country="FR" egfPin="" ffgLicence="2100119" ffgLicenceStatus="L" firstName="Jonathan" grade="6K" name="Pittonet" participating="11111000000000000000" rank="6K" rating="-900" ratingOrigin="FFG : -9999" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="10Tr" country="FR" egfPin="" ffgLicence="1800226" ffgLicenceStatus="L" firstName="Oscar" grade="4K" name="Yung" participating="11111111111111111111" rank="4K" rating="1689" ratingOrigin="FFG : -361" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="06Ni" country="FR" egfPin="" ffgLicence="1900160" ffgLicenceStatus="L" firstName="Nicolas" grade="13K" name="Lidureau" participating="11111111111111111111" rank="13K" rating="777" ratingOrigin="FFG : -1273" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="06Ni" country="FR" egfPin="" ffgLicence="2000223" ffgLicenceStatus="L" firstName="Andrea" grade="24K" name="Lidureau" participating="11111111111111111111" rank="24K" rating="-298" ratingOrigin="FFG : -2348" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="9177001" ffgLicenceStatus="L" firstName="Olivier" grade="2D" name="Clergue" participating="11111111111111111111" rank="2D" rating="2158" ratingOrigin="FFG : 108" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Ju" country="FR" egfPin="" ffgLicence="1500138" ffgLicenceStatus="L" firstName="Abel" grade="9K" name="Mir" participating="11111111111111111111" rank="9K" rating="1174" ratingOrigin="FFG : -876" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="64Pa" country="FR" egfPin="" ffgLicence="" ffgLicenceStatus="-" firstName="Jean-Romain" grade="8K" name="Grange-Praderas" participating="11111000000000000000" rank="8K" rating="1250" ratingOrigin="MAN" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="44Na" country="FR" egfPin="" ffgLicence="0437002" ffgLicenceStatus="L" firstName="Brigitte" grade="12K" name="Doisneau" participating="11111000000000000000" rank="12K" rating="883" ratingOrigin="FFG : -1167" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1300156" ffgLicenceStatus="L" firstName="Elian" grade="1D" name="Mangin" participating="11111111111111111111" rank="1D" rating="2118" ratingOrigin="FFG : 68" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Al" country="FR" egfPin="" ffgLicence="0514106" ffgLicenceStatus="L" firstName="Fabien" grade="4D" name="Lips" participating="11111111111111111111" rank="4D" rating="2408" ratingOrigin="FFG : 358" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="42Se" country="FR" egfPin="" ffgLicence="0700382" ffgLicenceStatus="L" firstName="Léo" grade="1D" name="Battin" participating="11111000000000000000" rank="1D" rating="2097" ratingOrigin="FFG : 47" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="73Ch" country="FR" egfPin="" ffgLicence="0414403" ffgLicenceStatus="L" firstName="Gérald" grade="4K" name="Garlatti" participating="11111000000000000000" rank="4K" rating="1745" ratingOrigin="FFG : -305" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="84Av" country="FR" egfPin="" ffgLicence="1500265" ffgLicenceStatus="L" firstName="Antonin" grade="15K" name="Teissier" participating="11111000000000000000" rank="15K" rating="605" ratingOrigin="FFG : -1445" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="49An" country="FR" egfPin="" ffgLicence="1800102" ffgLicenceStatus="L" firstName="Theo" grade="2D" name="Lemoine" participating="11111111100000000000" rank="2D" rating="2172" ratingOrigin="FFG : 122" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="59Li" country="FR" egfPin="" ffgLicence="1900260" ffgLicenceStatus="L" firstName="Raphaël" grade="11K" name="Robert" participating="11111111100000000000" rank="11K" rating="1008" ratingOrigin="FFG : -1042" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="30LV" country="FR" egfPin="" ffgLicence="1900261" ffgLicenceStatus="-" firstName="Bruno" grade="10K" name="Martin-Vallas" participating="11111000000000000000" rank="10K" rating="1050" ratingOrigin="FFG : -1000" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="9777001" ffgLicenceStatus="-" firstName="Christian" grade="4K" name="Chauvin" participating="11111100000000000000" rank="4K" rating="1650" ratingOrigin="FFG : -400" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="35Re" country="FR" egfPin="" ffgLicence="9737213" ffgLicenceStatus="L" firstName="Alain" grade="4K" name="Papazoglou" participating="11100000000000000000" rank="4K" rating="1704" ratingOrigin="FFG : -346" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="34Mo" country="FR" egfPin="" ffgLicence="1000483" ffgLicenceStatus="L" firstName="Sylvain" grade="3K" name="Col" participating="11111000000000000000" rank="3K" rating="1796" ratingOrigin="FFG : -254" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31Ba" country="FR" egfPin="" ffgLicence="0700101" ffgLicenceStatus="L" firstName="Jean-Yves" grade="7K" name="Papazoglou" participating="11100000000000000000" rank="7K" rating="1356" ratingOrigin="FFG : -694" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="21Di" country="FR" egfPin="" ffgLicence="9183002" ffgLicenceStatus="L" firstName="Henri" grade="1D" name="Gauthier" participating="11111000000000000000" rank="1D" rating="2094" ratingOrigin="FFG : 44" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="1700336" ffgLicenceStatus="L" firstName="Lucien" grade="2K" name="Radal" participating="11111000000000000000" rank="2K" rating="1878" ratingOrigin="FFG : -172" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38GJ" country="FR" egfPin="" ffgLicence="2000028" ffgLicenceStatus="L" firstName="Léonard" grade="12K" name="Paret" participating="11111111111111111111" rank="12K" rating="910" ratingOrigin="FFG : -1140" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="1300253" ffgLicenceStatus="L" firstName="Florent" grade="7K" name="Saint-Paul" participating="11111000000000000000" rank="7K" rating="1410" ratingOrigin="FFG : -640" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="1500206" ffgLicenceStatus="L" firstName="Mikaël" grade="6K" name="Goffard" participating="11111111111111111111" rank="6K" rating="1490" ratingOrigin="FFG : -560" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="42Se" country="FR" egfPin="" ffgLicence="1500013" ffgLicenceStatus="L" firstName="Thomas" grade="12K" name="Bisaccia" participating="11111000000000000000" rank="12K" rating="918" ratingOrigin="FFG : -1132" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="13Ma" country="FR" egfPin="" ffgLicence="1700001" ffgLicenceStatus="-" firstName="Antoine" grade="11K" name="Willenbucher" participating="11111111111111111111" rank="11K" rating="950" ratingOrigin="FFG : -1100" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="92An" country="FR" egfPin="" ffgLicence="1700074" ffgLicenceStatus="L" firstName="Gaultier" grade="4K" name="Bernard" participating="11111111111111111111" rank="4K" rating="1710" ratingOrigin="FFG : -340" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="2100063" ffgLicenceStatus="L" firstName="Baptiste" grade="6K" name="Fiorina" participating="11111111111111111111" rank="6K" rating="1474" ratingOrigin="FFG : -576" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31To" country="FR" egfPin="" ffgLicence="1800214" ffgLicenceStatus="L" firstName="Octave" grade="12K" name="Hautefeuille" participating="11111000000000000000" rank="12K" rating="868" ratingOrigin="FFG : -1182" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="77ML" country="FR" egfPin="" ffgLicence="1900164" ffgLicenceStatus="L" firstName="Adam" grade="28K" name="Bakri" participating="11111000000000000000" rank="28K" rating="-738" ratingOrigin="FFG : -2788" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="64Pa" country="FR" egfPin="" ffgLicence="1100109" ffgLicenceStatus="L" firstName="Siméon" grade="3D" name="Girousse" participating="11111000000000000000" rank="3D" rating="2273" ratingOrigin="FFG : 223" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="0614107" ffgLicenceStatus="L" firstName="Denis" grade="3D" name="Kuperberg" participating="11111111000000000000" rank="3D" rating="2250" ratingOrigin="FFG : 200" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="75Al" country="FR" egfPin="" ffgLicence="1800175" ffgLicenceStatus="L" firstName="Sophie" grade="8K" name="Lebas_de_Saint_Martin" participating="11111111111111111111" rank="8K" rating="1302" ratingOrigin="FFG : -748" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="35Re" country="FR" egfPin="" ffgLicence="1200092" ffgLicenceStatus="L" firstName="Christele" grade="13K" name="Derrien" participating="11111111111111111111" rank="13K" rating="835" ratingOrigin="FFG : -1215" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="91Or" country="FR" egfPin="" ffgLicence="0426802" ffgLicenceStatus="L" firstName="Stéphan" grade="3D" name="Kunne" participating="11111111111111111111" rank="3D" rating="2320" ratingOrigin="FFG : 270" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="69Ly" country="FR" egfPin="" ffgLicence="1700097" ffgLicenceStatus="L" firstName="Gilles" grade="17K" name="Forissier" participating="11111111111111111111" rank="17K" rating="402" ratingOrigin="FFG : -1648" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="92Le" country="FR" egfPin="" ffgLicence="0424601" ffgLicenceStatus="L" firstName="Sylvain" grade="3K" name="Ravera" participating="11111000000000000000" rank="3K" rating="1761" ratingOrigin="FFG : -289" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31To" country="FR" egfPin="" ffgLicence="1500255" ffgLicenceStatus="L" firstName="Siméon" grade="7K" name="Grosdoy" participating="11111000000000000000" rank="7K" rating="1375" ratingOrigin="FFG : -675" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="25Be" country="FR" egfPin="" ffgLicence="2000239" ffgLicenceStatus="L" firstName="Raphaël" grade="4K" name="Valot" participating="11111000000000000000" rank="4K" rating="1718" ratingOrigin="FFG : -332" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="34Mo" country="FR" egfPin="" ffgLicence="0677401" ffgLicenceStatus="L" firstName="Patrice" grade="1K" name="Barcelo" participating="11111000000000000000" rank="1K" rating="1979" ratingOrigin="FFG : -71" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="00St" country="FR" egfPin="" ffgLicence="1700134" ffgLicenceStatus="L" firstName="Christophe" grade="7K" name="Levointurier" participating="11111111111111111111" rank="7K" rating="1365" ratingOrigin="FFG : -685" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="92An" country="FR" egfPin="" ffgLicence="9333003" ffgLicenceStatus="L" firstName="Jean-François" grade="3K" name="Bocquet" participating="11111111111111111111" rank="3K" rating="1820" ratingOrigin="FFG : -230" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="63Ce" country="FR" egfPin="" ffgLicence="" ffgLicenceStatus="" firstName="Soufiane" grade="13K" name="Gzhal" participating="11111111111111111111" rank="13K" rating="750" ratingOrigin="MAN" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="84Av" country="FR" egfPin="" ffgLicence="1500264" ffgLicenceStatus="L" firstName="Samuel" grade="4D" name="Teissier" participating="11111000000000000000" rank="4D" rating="2351" ratingOrigin="FFG : 301" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31To" country="FR" egfPin="" ffgLicence="1000349" ffgLicenceStatus="C" firstName="Cyriel" grade="11K" name="Paris" participating="11110000000000000000" rank="11K" rating="950" ratingOrigin="FFG : -1100" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="38Gr" country="FR" egfPin="" ffgLicence="0682002" ffgLicenceStatus="-" firstName="Frédéric" grade="1D" name="Streicher" participating="11111111111111111111" rank="1D" rating="2050" ratingOrigin="FFG : 0" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="31Ba" country="FR" egfPin="" ffgLicence="8210000" ffgLicenceStatus="L" firstName="Denis" grade="7K" name="Puaud" participating="11111111111111111111" rank="7K" rating="1360" ratingOrigin="FFG : -690" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
<Player agaExpirationDate="" agaId="" club="35Re" country="FR" egfPin="" ffgLicence="2000123" ffgLicenceStatus="L" firstName="Benjamin" grade="5K" name="Loizance" participating="11111000000000000000" rank="5K" rating="1603" ratingOrigin="FFG : -447" registeringStatus="FIN" smmsCorrection="0"/>
|
||||
</Players>
|
||||
<Games/>
|
||||
<TournamentParameterSet>
|
||||
<GeneralParameterSet bInternetGame="false" basicTime="60" beginDate="2021-07-10" canByoYomiTime="300" complementaryTimeSystem="STDBYOYOMI" director="Claude brisson" endDate="2021-07-24" fischerTime="10" genCountNotPlayedGamesAsHalfPoint="true" genMMBar="1D" genMMFloor="20K" genMMS2ValueAbsent="1" genMMS2ValueBye="2" genMMZero="30K" genNBW2ValueAbsent="1" genNBW2ValueBye="2" genRoundDownNBWMMS="true" komi="7.5" location="Montcabrier" name="stage ffg" nbMovesCanTime="15" numberOfBZHGroups="1" numberOfCategories="1" numberOfRounds="10" shortName="stage-v3" size="19" stdByoYomiTime="30"/>
|
||||
<HandicapParameterSet hdBase="MMS" hdCeiling="9" hdCorrection="1" hdNoHdRankThreshold="1D"/>
|
||||
<PlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="MMS" number="1"/>
|
||||
<PlacementCriterion name="SOSM" number="2"/>
|
||||
<PlacementCriterion name="SOSOSM" number="3"/>
|
||||
<PlacementCriterion name="NULL" number="4"/>
|
||||
<PlacementCriterion name="NULL" number="5"/>
|
||||
<PlacementCriterion name="NULL" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</PlacementParameterSet>
|
||||
<PairingParameterSet paiBaAvoidDuplGame="500000000000000" paiBaBalanceWB="1000000" paiBaDeterministic="true" paiBaRandom="0" paiMaAdditionalPlacementCritSystem1="Rating" paiMaAdditionalPlacementCritSystem2="NULL" paiMaAvoidMixingCategories="0" paiMaCompensateDUDD="true" paiMaDUDDLowerMode="MID" paiMaDUDDUpperMode="MID" paiMaDUDDWeight="100000000" paiMaLastRoundForSeedSystem1="2" paiMaMaximizeSeeding="5000000" paiMaMinimizeScoreDifference="100000000000" paiMaSeedSystem1="SPLITANDRANDOM" paiMaSeedSystem2="SPLITANDSLIP" paiSeAvoidSameGeo="100000000000" paiSeBarThresholdActive="true" paiSeDefSecCrit="100000000000" paiSeMinimizeHandicap="0" paiSeNbWinsThresholdActive="false" paiSePreferMMSDiffRatherThanSameClub="3" paiSePreferMMSDiffRatherThanSameCountry="1" paiSeRankThreshold="1D" paiStandardNX1Factor="0.5"/>
|
||||
<DPParameterSet displayClCol="true" displayCoCol="true" displayIndGamesInMatches="true" displayNPPlayers="false" displayNumCol="true" displayPlCol="true" gameFormat="full" playerSortType="name" showByePlayer="true" showNotFinallyRegisteredPlayers="true" showNotPairedPlayers="true" showNotParticipatingPlayers="false" showPlayerClub="true" showPlayerCountry="false" showPlayerGrade="true"/>
|
||||
<PublishParameterSet exportToLocalFile="true" htmlAutoScroll="false" print="true"/>
|
||||
</TournamentParameterSet>
|
||||
<TeamTournamentParameterSet>
|
||||
<TeamGeneralParameterSet teamSize="4"/>
|
||||
<TeamPlacementParameterSet>
|
||||
<PlacementCriteria>
|
||||
<PlacementCriterion name="TEAMP" number="1"/>
|
||||
<PlacementCriterion name="BDW" number="2"/>
|
||||
<PlacementCriterion name="BDW3U" number="3"/>
|
||||
<PlacementCriterion name="BDW2U" number="4"/>
|
||||
<PlacementCriterion name="BDW1U" number="5"/>
|
||||
<PlacementCriterion name="MNR" number="6"/>
|
||||
</PlacementCriteria>
|
||||
</TeamPlacementParameterSet>
|
||||
</TeamTournamentParameterSet>
|
||||
</Tournament>
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user