added wifi per-floor optimization
added plot to wifi-quality-analyzer changes to per-floor wifi models minor fixes
This commit is contained in:
@@ -99,7 +99,7 @@ namespace WiFiOptimizer {
|
||||
return (waf > 0) ||
|
||||
(txp < -50) ||
|
||||
(txp > -30) ||
|
||||
(exp > 4) ||
|
||||
(exp > 4) ||
|
||||
(exp < 1);
|
||||
}
|
||||
|
||||
@@ -138,18 +138,29 @@ namespace WiFiOptimizer {
|
||||
|
||||
};
|
||||
|
||||
using APFilter = std::function<bool(const int numFingerprints, const MACAddress& mac)>;
|
||||
using APFilter = std::function<bool(const Stats& stats, const MACAddress& mac)>;
|
||||
|
||||
const APFilter NONE = [] (const int numFingerprints, const MACAddress& mac) {
|
||||
(void) numFingerprints; (void) mac;
|
||||
const APFilter NONE = [] (const Stats& stats, const MACAddress& mac) {
|
||||
(void) stats; (void) mac;
|
||||
return false;
|
||||
};
|
||||
|
||||
const APFilter MIN_5_FPS = [] (const int numFingerprints, const MACAddress& mac) {
|
||||
const APFilter MIN_2_FPS = [] (const Stats& stats, const MACAddress& mac) {
|
||||
(void) mac;
|
||||
return numFingerprints < 5;
|
||||
return stats.usedFingerprins < 2;
|
||||
};
|
||||
|
||||
const APFilter MIN_5_FPS = [] (const Stats& stats, const MACAddress& mac) {
|
||||
(void) mac;
|
||||
return stats.usedFingerprins < 5;
|
||||
};
|
||||
|
||||
const APFilter MIN_10_FPS = [] (const Stats& stats, const MACAddress& mac) {
|
||||
(void) mac;
|
||||
return stats.usedFingerprins < 10;
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Floorplan::IndoorMap* map;
|
||||
@@ -179,15 +190,21 @@ namespace WiFiOptimizer {
|
||||
float errSum = 0; int errCnt = 0;
|
||||
std::vector<APParamsMAC> res;
|
||||
for (const MACAddress& mac : getAllMACs()) {
|
||||
|
||||
// perform optimization, get resulting parameters and optimization stats
|
||||
Stats stats;
|
||||
const APParams params = optimize(mac, stats);
|
||||
if (!filter(stats.usedFingerprins, mac)) {
|
||||
|
||||
// filter based on stats (option to ignore/filter some access-points)
|
||||
if (!filter(stats, mac)) {
|
||||
res.push_back(APParamsMAC(mac, params));
|
||||
errSum += stats.error_db;
|
||||
++errCnt;
|
||||
} else {
|
||||
std::cout << "ignored due to filter!" << std::endl;
|
||||
Log::add(name, "ignoring opt-result for AP " + mac.asString() + " due to filter");
|
||||
//std::cout << "ignored due to filter!" << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const float avgErr = errSum / errCnt;
|
||||
@@ -222,8 +239,8 @@ namespace WiFiOptimizer {
|
||||
LeOpt::MinMax(mapBBox.getMin().y - 20, mapBBox.getMax().y + 20), // y
|
||||
LeOpt::MinMax(mapBBox.getMin().z - 5, mapBBox.getMax().z + 5), // z
|
||||
LeOpt::MinMax(-50, -30), // txp
|
||||
LeOpt::MinMax(1, 4), // exp
|
||||
LeOpt::MinMax(-15, -0), // waf
|
||||
LeOpt::MinMax(1, 4), // exp
|
||||
LeOpt::MinMax(-15, -0), // waf
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user