Crystal AI  1.0.0
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
 NCrystal
 CActionBaseBase class for non-generic T:Crystal.IActions. All actions should derive either from this class or its generic version T:Crystal.ActionBase`1.
 CActionCollectionAI Actions collection.
 CActionSequenceAn AI action that is comprised of one or more other actions, which are executed in order.
 CAiCollectionAn AiCollection is a container of all AI building blocks necessary for the construction of utility AI instances.
 CAiConstructorA convenience class used to streamline the process of creating a utility AI.
 CAiTransitionAiTransition is an T:Crystal.IAction that when executed triggers a selection of an action in another AI.
 CBehaviourAn AI behaviour is a set of T:Crystal.IOptions. The behaviour itself is a composite consideration and therefore, unless this is the only behaviour in a T:Crystal.IUtilityAi, it will be selected only if its considerations "win" against competing behaviours in the AI.
 CBehaviourCollectionA collection of T:Crystal.IBehaviours.
 CBehaviourTransitionBehaviourTransition is an T:Crystal.IAction which when executed triggers the selection of an T:Crystal.IAction using a linked T:Crystal.IBehaviour.
 CChebyshevCalculates the Chebyshev measure https://en.wikipedia.org/wiki/Chebyshev_distance.
 CCircularBufferA circular buffer https://en.wikipedia.org/wiki/Circular_buffer.
 CCommandStreamThe CommandStream processes a given fraction of the AI events on every loop.
 CCompositeConsiderationAn aggregate of considerations. Although it is possible to create fully functioning AIs using only T:Crystal.IConsiderations, this class allows for such considerations to be combined. This is quite useful as it can reduce the complexity of individual considerations allowing them to be seen as building blocks.
 CCompositeEvaluatorThe CompositeEvaluator class allows the composition, or combination, of one or more T:Crystal.IEvaluators whose domain of definition does not overlap! Note that addition of an T:Crystal.IEvaluator that has a domain of definition that is covered (even in part) by another T:Crystal.IEvaluator already added to the CompositeEvaluator, will not be added and will have no effect in the evaluation process.
 CConsiderationBaseBase class for considerations.
 CConsiderationCollectionA collection of T:Crystal.IConsiderations and T:Crystal.ICompositeConsiderations
 CConstantUtilityOptionThis option always returns the same utility irrespective of the context.

See also
T:Crystal.Option
 CConstrainedChebyshevCalculates the Chebyshev measure https://en.wikipedia.org/wiki/Chebyshev_distance for all elements whose P:Crystal.Utility.Combined is above the set lower bound.
 CConstrainedWeightedMetricsCalculates a constrained version of the l-p weighted metrics https://en.wikipedia.org/wiki/Lp_space.
 CDecisionMakerThe decision maker, every agent will have one or more of these to execute different AIs.
 CDecisionMakerBaseThe decision maker, every agent will have one or more of these to execute different AIs.
 CDeferredCommandDeferredCommand is a command whose execution is delegated to a future time and/or executes repeatedly.
 CEvaluatorBaseEvaluatorBase serves as a base class for all evaluators, i.e. functions with arbitrary domain of definition and a range equal to any sub-interval of [0,1].
 CIActionAI Actions Interface. This is the "bottom-line" in that all decision making eventually leads to the execution of a class that implements this interface.
 CIActionCollectionA collection of T:Crystal.IActions.
 CIAiCollectionInterface for AiCollections. AiCollections contain the building blocks for spawning concrete AI instances. An AiCollection also contains all sub-collections used in its composition.
 CIAiPrototypeInterface to all AiPrototypes.
 CIBehaviourInterface to Behaviours.
 CIBehaviourCollectionInterface for BehaviourCollections. A behaviour collection contains behaviours and all sub-collections required for these behaviours. Namely, options, considerations and actions.
 CICircularBufferCircular buffer interface.
 CICompositeConsiderationInterface for considerations that themselves calculate a Utility based on the Utility of T:Crystal.IConsiderations. T:Crystal.IOption and T:Crystal.IBehaviour derive from this interface.
 CIConsiderationInterface to a consideration.
 CIConsiderationCollectionInterface for a collection that contains T:Crystal.IConsiderations and T:Crystal.ICompositeConsiderations.
 CIContextThe context interface enables the communication and sharing of information between the agent and the AI.
 CIContextProviderInterface for context provider responsible for supplying the T:Crystal.IContext implementing context instances.
 CIDecisionMakerInterface for the decision maker. The only responsibility of the decision maker is to manage its associated AI.
 CIDeferredCommandHandleInterface to represent items added to the load balancer, which allows a number of operations to be called.
 CIEvaluatorUtility evaluator interface.
 CIMeasureThe measure interface. Note this refers to the mathematical measure https://en.wikipedia.org/wiki/Measure_(mathematics)
 CIntervalRepresents an interval of the form [a, b] or (a, b) or any combination of exclusive and inclusive end points.
 CIOptionDecision related options interface.
 CIOptionCollectionInterface to a collection containing T:Crystal.IOptions.
 CIPriorityQueuePriority queue interface.
 CISchedulerAI Scheduler interface.
 CISelectorInterface for Selectors. Selectors are functions that accept a vector of T:Crystal.Utilitys and return an index that corresponds to the selected T:Crystal.Utility.
 CITransitionInterface to Transitions. A transition is an T:Crystal.IAction that transfers control to a behaviour or another AI.
 CIUtilityAiInterface for all utility based AIs.
 CLinearEvaluatorThe LinearEvaluator returns a normalized utility value based on a linear function. Powerfor an interactive plot.
 CMaxUtilitySelectorThis selector returns the index of the T:Crystal.Utility whose P:Crystal.Utility.Combined value is highest compared to any T:Crystal.Utility in the supplied T:System.Collections.Generic.ICollection.
 CMinEqualMaxExceptionMinimum equal max exception.
 CMinGreaterThanMaxExceptionMinimum greater than max exception.
 CMovingAverageUses a circular buffer to adaptively calculate the moving average of the contained elements.
 CMultiplicativePseudoMeasureCalculates a multiplicative pseudo-measure, namely, this class calculates the product of P:Crystal.Utility.Combined in T:System.Collections.ICollection
 COptionNormally this option class should serve all the "option" related needs of an AI.
 COptionCollectionA collection of AI T:Crystal.IOptions.
 CPcgPCG (Permuted Congruential Generator) is a C# port from C the base PCG generator presented in "PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation" by Melissa E. O'Neill. The code follows closely the one made available by O'Neill at her site: http://www.pcg-random.org/download.html To understand how exactly this generator works read this: http://www.pcg-random.org/pdf/toms-oneill-pcg-family-v1.02.pdf
 CPcgExtendedPCG (Permuted Congruential Generator) Extended is a C# port from C++ of a part of the extended PCG family of generators presented in "PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation" by Melissa E. O'Neill. The code follows closely the one made available by O'Neill at her site: http://www.pcg-random.org/using-pcg-cpp.html To understand how exactly this generator works read this: http://www.pcg-random.org/pdf/toms-oneill-pcg-family-v1.02.pdf its a fun read, enjoy! The most important difference between this version and PCG is that the generators produced by this class can have extremely large periods (extremely!) and have configurable k-dimensional equidistribution. All this at a very small speed penalty! (Upto 1024-dimensionally equidistributed generators perform faster than System.Random, at least on the machines I have access to). Fun fact, the period of PCG Extended for _table_mask = 14 is 2^(524352) which is more than 10^(157846). To put this in context, the number particles in the known Universe is about 10^(80 to 81ish) if we also count photons that number goes up (with a lot of effort) to 10^(90ish). Now, there are estimates that say that visible matter (counting photons, energy-matter same thing...) accounts for 5% of the matter in the visible Universe, so if these estimates are correct the total visible+invisible particles/(energy particles) in the visible Universe would approximately be 10^(91). That means that this generator has a period that is 157755 orders of magnitude larger than the number of all particles in the visible Universe... Also, if the universe had an equal number of particles (to the period of PCG 14), that would mean that its mean density (at its current volume) would be so high that the entire Universe would collapse unto its weight into a black hole.
 CPointfRepresents a point in 2D space.
 CPowerEvaluatorThe PowerEvaluator returns a normalized utility based on a power function that has effectively 1 parameter ( 0 leq p le 10000 ) bounded by the box defined by PtA and PtB with PtA.x being strictly less than PtB.x! Powerfor an interactive plot.
 CPriorityQueuePriority queue.
 CPriorityQueueNodePriority queue node.
 CRandomSelectorThis selector returns a random T:Crystal.Utility from the supplied T:System.Collections.ICollection.
 CSchedulerThe AI Scheduler class distributes the execution of the think and update methods of the contained AIs in time to avoid excessive lag spikes.
 CSequentialSelectorThis selector returns all indices in sequence from the given T:System.Collections.ICollection of T:Crystal.Utility. The assumption here is that every time the collection size is the same. If that is not the case, then the count is reset and starts from 0.
 CSigmoidEvaluatorThe SigmoidEvaluator returns a normalized utility based on a sigmoid function that has effectively 1 parameter ( -0.99999f leq k leq 0.99999f ) bounded by the box defined by PtA and PtB with PtA.x being strictly less than PtB.x! Parametrized Sigmoidfor an interactive plot.
 CThreadSafePriorityQueueThread safe priority queue.
 CUtilityThis struct is used throughout Crystal AI to communicate the utility (or usefulness) of a particular option, consideration or behaviour.
 CUtilityAiThe Utility AI.
 CWeightedMetricsCalculates the l-p weighted metrics https://en.wikipedia.org/wiki/Lp_space.
 CWeightedRandomSelectorThis selector uses roulette wheel selection of the top P:Crystal.WeightedRandomSelector.Proportion percent utilities in the given T:System.Collections.ICollection of utilities.