#[non_exhaustive]pub enum SolveMethod {
Full,
Sampled,
External,
}Expand description
The method to use for finding approximate equilibria
When in doubt, you’ll probably want to default to External1 as it generally converges faster than Full2 or Sampled1, which are mostly provided for completeness.
Lanctot, Marc, et al. “Monte Carlo sampling for regret minimization in extensive games.” Advances in neural information processing systems 22 (2009). ↩ 1 2
Zinkevich, Martin, et al. “Regret minimization in games with incomplete information.” Advances in neural information processing systems 20 (2007). ↩
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Full
This method indicates vanilla counterfactual regret minimization, which does no random sampling. This can be good for small games, espcially ones with very unlikely chance outcomes, but otherwise spends a lot of computation exploring unimportant areas of the game tree.
Sampled
This method indicates chance sampled counterfactual regret minimization, which samples outcomes at chance nodes, but fully explores player actions. This often performs better than full exploration, but may produce worse results if there are infrequent but very relevant chance outcomes.
Since this is sampled, there’s a chance that it terminates early with a small regret bound that’s slighly incorrect because it didn’t sample enough chance outcomes.
External
This method indicates external sampled counterfactual regret minimization, which alternates between players, and only fully explores the actions of one player, while sampling the actions of the other according to their current strategy. This often converges faster than the other methods because it doesn’t explore sections of the game tree with low value.
Since this is sampled, there’s a chance that it terminates early with a small regret bound that’s slighly incorrect because it didn’t sample enough chance outcomes.
Trait Implementations§
Source§impl Clone for SolveMethod
impl Clone for SolveMethod
Source§fn clone(&self) -> SolveMethod
fn clone(&self) -> SolveMethod
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SolveMethod
impl Debug for SolveMethod
Source§impl PartialEq for SolveMethod
impl PartialEq for SolveMethod
impl Copy for SolveMethod
impl Eq for SolveMethod
impl StructuralPartialEq for SolveMethod
Auto Trait Implementations§
impl Freeze for SolveMethod
impl RefUnwindSafe for SolveMethod
impl Send for SolveMethod
impl Sync for SolveMethod
impl Unpin for SolveMethod
impl UnwindSafe for SolveMethod
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more