public class NonTransitiveDice extends ExampleFD
Nontransitive Dice problem is to assign to given number of dices a number to each side of the dice in such a way that
a) given cyclic order of dices, each dice wins with the next one with probability p larger than 0.5.
b) maximize minimum p.
c) no two dices which are matched against each other can result in draw. default approach to satisfy this condition is to require all sides of all dices to be assigned unique values.
Modifier and Type | Field and Description |
---|---|
int |
currentBest
It specifies the currently best solution which is a bound
for the next solution.
|
int |
noDices
It specifies number of dices in the problem.
|
int |
noSides
It specifies number of sides for each dice in the problem.
|
boolean |
reuseOfNumbers
If true then faces on non consequtive faces can be the same.
|
List<Constraint> |
shavingConstraints
It contains constraints which can be used for shaving guidance.
|
Constructor and Description |
---|
NonTransitiveDice() |
Modifier and Type | Method and Description |
---|---|
static void |
main(String[] args)
It executes the program solving non transitive dice problem using
two different methods.
|
void |
model()
It specifies a standard way of modeling the problem.
|
boolean |
searchSpecial()
It executes a specialized search to find a solution to this problem.
|
creditSearch, getSearch, getSearchVariables, getStore, printMatrix, search, searchAllAtOnce, searchAllOptimal, searchLDS, searchMasterSlave, searchMaxRegretOptimal, searchMiddle, searchMostConstrainedStatic, searchOptimal, searchSmallestDomain, searchSmallestMedian, searchSmallestMiddle, searchSmallestMin, searchWeightedDegree, searchWithMaxRegret, searchWithRestarts, shavingSearch
public int noDices
public int noSides
public int currentBest
The currentBest specifies the difference between noSides^2 and minimumWinning. Since we maximize minimumWinning we minimize currentBest. The next solution must have a lower value for currentBest. currentBest is an upperbound.
minimumWinning + currentBest = noSides^2
Good initial value for currentBest is noSides^2 / 2.
public List<Constraint> shavingConstraints
public boolean reuseOfNumbers
public void model()
ExampleFD
public boolean searchSpecial()
public static void main(String[] args)
args
- the first argument specifies number of dices, the second argument specifies the number of sides of each dice.Copyright © 2022. All rights reserved.