AIToolbox
A library that offers tools for AI problem solving.
AIToolbox::Factored::Bandit Namespace Reference

Classes

class  EpsilonPolicy
 
class  Experience
 This class computes averages and counts for a multi-agent cooperative Bandit problem. More...
 
class  FlattenedModel
 This class flattens a factored bandit model. More...
 
class  LLRPolicy
 This class represents the Learning with Linear Rewards algorithm. More...
 
class  LocalSearch
 This class approximately finds the best joint action using Local Search. More...
 
struct  MakeGraph
 This class is the public interface for initializing the graph in generic code that uses the maximizers. More...
 
struct  MakeGraph< MaxPlus >
 
struct  MakeGraph< ReusingIterativeLocalSearch >
 
struct  MakeGraphImpl
 This class clumps all implementations that create graphs for data for certain Maximizers. More...
 
struct  MakeGraphImpl< LocalSearch, Iterable >
 
struct  MakeGraphImpl< LocalSearch, QFunction >
 
struct  MakeGraphImpl< VariableElimination, Data >
 
class  MAUCEPolicy
 This class represents the Multi-Agent Upper Confidence Exploration algorithm. More...
 
class  MaxPlus
 This class represents the Max-Plus optimization algorithm for loopy FactorGraphs. More...
 
class  MiningBandit
 This class represents the mining bandit problem. More...
 
class  Model
 This class represents a factored multi-armed bandit. More...
 
struct  MOQFunctionRule
 This struct represents a single action/values pair. More...
 
class  MultiObjectiveVariableElimination
 This class represents the Multi Objective Variable Elimination process. More...
 
class  PolicyInterface
 Simple typedef for most of a normal Bandit's policy needs. More...
 
struct  QFunctionRule
 This struct represents a single action/value pair. More...
 
class  QGreedyPolicy
 This class implements a greedy policy through a QFunction. More...
 
class  RandomPolicy
 This class represents a random policy. More...
 
class  ReusingIterativeLocalSearch
 This class approximately finds the best joint action with Reusing Iterative Local Search. More...
 
class  SingleActionPolicy
 This class represents a policy always picking the same action. More...
 
class  ThompsonSamplingPolicy
 This class implements a Thompson sampling policy. More...
 
class  UCVE
 This class represents the UCVE process. More...
 
struct  UpdateGraph
 This class is the public interface for updating the input graph with the input data in generic code that uses the maximizers. More...
 
struct  UpdateGraph< MaxPlus >
 
struct  UpdateGraph< ReusingIterativeLocalSearch >
 
struct  UpdateGraphImpl
 This class clumps all implementations that update graphs with data for certain Maximizers. More...
 
struct  UpdateGraphImpl< LocalSearch, Iterable >
 
struct  UpdateGraphImpl< LocalSearch, QFunction >
 
struct  UpdateGraphImpl< VariableElimination, Iterable >
 
struct  UpdateGraphImpl< VariableElimination, QFunction >
 
class  VariableElimination
 This class represents the Variable Elimination algorithm. More...
 

Typedefs

using QFunction = FactoredVector
 This represents a factored QFunction. More...
 

Functions

std::tuple< Action, std::vector< unsigned >, std::vector< double > > makeMiningParameters (unsigned seed)
 This function generates the parameters for a random MiningBandit. More...
 

Variables

template<typename QR >
concept IsQFunctionRule
 This concept models the interface for a QFunctionRule. More...
 
template<typename T >
concept QFRuleRange = std::ranges::range<T> && IsQFunctionRule<std::ranges::range_value_t<T>>
 This concept represents a range of QFunctionRules. More...
 

Typedef Documentation

◆ QFunction

This represents a factored QFunction.

Function Documentation

◆ makeMiningParameters()

std::tuple<Action, std::vector<unsigned>, std::vector<double> > AIToolbox::Factored::Bandit::makeMiningParameters ( unsigned  seed)

This function generates the parameters for a random MiningBandit.

The parameters are uniformly sampled from the following ranges:

  • villages: [5, 15]
  • mines: villages + 3
  • workers per village: [1, 5]
  • mines per village: [2, 4]
  • productivity per mine: [0, 0.5]

We return a tuple containing the parameters for a MiningBandit. In particular:

  • The action space.
  • How many workers there are in each village.
  • The productivity factor for each mine.
Parameters
seedA random seed for a random generator to sample the parameters.
Returns
A tuple containing parameters for a MiningBandit, in the order of its constructor.

Variable Documentation

◆ IsQFunctionRule

template<typename QR >
concept AIToolbox::Factored::Bandit::IsQFunctionRule
Initial value:
= requires (const QR qr) {
{ qr.action } -> std::convertible_to<PartialAction>;
{ qr.value } -> std::convertible_to<double>;
}

This concept models the interface for a QFunctionRule.

This is needed so we can consider MDP QFunctionRules as Bandit QFunctionRules, without having to use inheritance to connect them.

◆ QFRuleRange

template<typename T >
concept AIToolbox::Factored::Bandit::QFRuleRange = std::ranges::range<T> && IsQFunctionRule<std::ranges::range_value_t<T>>

This concept represents a range of QFunctionRules.