EmpiricalV1

dicechess.engine.search.TimePolicies.EmpiricalV1
case object EmpiricalV1 extends TimePolicy

Dice Chess-specific conditional expectation of the moving player's remaining clock decisions.

Derived on 2026-08-13 from the production analytics corpus: 1,459,949 king-captured games and 21,947,753 player turns spanning 2024-01-03 through 2026-08-13. Analytics turn_number counts alternating player turns, while ClockState.moveNumber is the DFEN full-move number shared by White and Black. The source aggregation therefore converts every recorded turn to its player's ordinal and counts that player's current turn plus their later turns.

The curve is intentionally non-monotone. Games surviving beyond roughly the tenth player turn are selected for longer endgames, so expected remaining turns rise again. Values between measured knots are linearly interpolated; values outside the measured range use the nearest endpoint. TimeManager applies its shared reserve, hard cap, and panic clamp after this estimate.

Attributes

Source
TimePolicy.scala
Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
trait TimePolicy
class Object
trait Matchable
class Any
Show all
Self type

Members list

Type members

Inherited types

type MirroredElemLabels = EmptyTuple

The names of the product elements.

The names of the product elements.

Attributes

Inherited from:
Singleton
type MirroredElemTypes = EmptyTuple

Attributes

Inherited from:
Singleton
type MirroredMonoType = this.type

The mirrored *-type.

The mirrored *-type.

Attributes

Inherited from:
Singleton
type MirroredType = this.type

Attributes

Inherited from:
Singleton

Inherited and Abstract types

type MirroredLabel <: String

The name of the type.

The name of the type.

Attributes

Inherited from:
Mirror

Value members

Concrete methods

override def estimateMovesToGo(clock: ClockState): Double

Estimates the number of further turns to spread the spendable clock over.

Estimates the number of further turns to spread the spendable clock over.

The estimate is fractional because empirical expected remaining turns and interpolation between observations are not restricted to whole numbers.

ClockState.movesToGo is an explicit time-control override and is applied by TimeManager before this estimate is used. The manager also clamps the final value to at least one.

Attributes

Definition Classes
Source
TimePolicy.scala

Inherited methods

def fromProduct(p: Product): MirroredMonoType

Creates a new instance of type T with elements taken from product p.

Creates a new instance of type T with elements taken from product p.

Attributes

Inherited from:
Singleton
def productElementNames: Iterator[String]

An iterator over the names of all the elements of this product.

An iterator over the names of all the elements of this product.

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

An iterator over all the elements of this product.

An iterator over all the elements of this product.

Attributes

Returns

in the default implementation, an Iterator[Any]

Inherited from:
Product

Concrete fields

override val id: String

Stable configuration/reporting identifier. Version policy ids when their behaviour changes materially.

Stable configuration/reporting identifier. Version policy ids when their behaviour changes materially.

Attributes

Source
TimePolicy.scala