aboutsummaryrefslogtreecommitdiff
path: root/oop2w5/BlackboardStrategy.cpp
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-12-11 21:37:15 +0100
committerlonkaars <loek@pipeframe.xyz>2022-12-11 21:37:15 +0100
commit1ed8db0234f9a273e07b7350e53ad230c5b62ce6 (patch)
treef35f30bb70f70a24f0c443e1768f80c947f947b1 /oop2w5/BlackboardStrategy.cpp
parent93def2de2991282bac9e320b209657f76cb31177 (diff)
week 5 klaar
Diffstat (limited to 'oop2w5/BlackboardStrategy.cpp')
-rw-r--r--oop2w5/BlackboardStrategy.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/oop2w5/BlackboardStrategy.cpp b/oop2w5/BlackboardStrategy.cpp
new file mode 100644
index 0000000..5a828b2
--- /dev/null
+++ b/oop2w5/BlackboardStrategy.cpp
@@ -0,0 +1,82 @@
+#include "BlackboardStrategy.h"
+
+/*
+ * DO NOT ADAPT THIS FILE!!!
+ */
+
+#include <climits>
+#include <ctime>
+#include <random>
+
+BlackboardStrategy::BlackboardStrategy()
+{
+ initialize();
+}
+
+BlackboardStrategy::~BlackboardStrategy()
+{
+}
+
+unsigned BlackboardStrategy::fitnessStrategy1() const { return fitnessStrategy(1); }
+unsigned BlackboardStrategy::fitnessStrategy2() const { return fitnessStrategy(2); }
+unsigned BlackboardStrategy::fitnessStrategy3() const { return fitnessStrategy(3); }
+unsigned BlackboardStrategy::fitnessStrategy4() const { return fitnessStrategy(4); }
+unsigned BlackboardStrategy::fitnessStrategy5() const { return fitnessStrategy(5); }
+unsigned BlackboardStrategy::fitnessStrategy6() const { return fitnessStrategy(6); }
+
+unsigned BlackboardStrategy::resultStrategy1() const { return resultStrategy(1); }
+unsigned BlackboardStrategy::resultStrategy2() const { return resultStrategy(2); }
+unsigned BlackboardStrategy::resultStrategy3() const { return resultStrategy(3); }
+unsigned BlackboardStrategy::resultStrategy4() const { return resultStrategy(4); }
+unsigned BlackboardStrategy::resultStrategy5() const { return resultStrategy(5); }
+unsigned BlackboardStrategy::resultStrategy6() const { return resultStrategy(6); }
+
+void BlackboardStrategy::initialize()
+{
+ m_uBestStrategy = 0;
+ m_uBestResult = 0;
+}
+
+void BlackboardStrategy::setBestStrategy( unsigned uBestStrategy )
+{
+ m_uBestStrategy = uBestStrategy;
+}
+
+void BlackboardStrategy::setBestResult( unsigned uBestResult )
+{
+ m_uBestResult = uBestResult;
+}
+
+unsigned BlackboardStrategy::getBestStrategy() const
+{
+ return m_uBestStrategy;
+}
+
+unsigned BlackboardStrategy::getBestResult() const
+{
+ return m_uBestResult;
+}
+
+unsigned BlackboardStrategy::fitnessStrategy( unsigned uStrategy ) const
+{
+ return value( uStrategy, 10000 );
+}
+
+unsigned BlackboardStrategy::resultStrategy( unsigned uStrategy ) const
+{
+ return value( uStrategy, 1000000 );
+}
+
+unsigned BlackboardStrategy::value( unsigned uStrategy, unsigned uTotal ) const
+{
+ std::default_random_engine cRandomEngine( unsigned(time(nullptr))+uStrategy );
+ std::uniform_real_distribution<double> cDistribution( 0, 10 );
+
+ unsigned nResult = 0;
+ double dStep = double(0xffffffffUL) / ( uTotal+uStrategy );
+
+ for ( unsigned n = 0; n < uTotal; n++ )
+ nResult += unsigned( dStep * cDistribution( cRandomEngine ) );
+
+ return nResult;
+}