188 printf(
"\n=== Cloud Immunity Simulation ===\n");
191 std::vector< int32_t > cloud_data = {
192 1000, 1020, 980, 1050, 1030, 990, 1100, 1080, 950, 1200,
193 400, 600, 300, 800, 200, 900, 150, 750, 100, 850,
194 1300, 1350, 1320, 1380, 1340, 1300, 1400, 1420, 1380, 1450,
195 50, 30, 80, 20, 100, 10, 120, 5, 150, 0
203 printf(
"Processing %zu power measurements...\n", cloud_data.size());
204 printf(
"Time,Input,EMA_Fast,DEMA_Med,TEMA_Med,EMA_Slow\n");
206 int relay_changes_ema_fast = 0;
207 int relay_changes_dema_med = 0;
208 int relay_changes_tema_med = 0;
209 int relay_changes_ema_slow = 0;
211 bool prev_relay_ema_fast =
false;
212 bool prev_relay_dema_med =
false;
213 bool prev_relay_tema_med =
false;
214 bool prev_relay_ema_slow =
false;
216 const int32_t RELAY_THRESHOLD = 500;
218 for (
size_t i = 0;
i < cloud_data.size();
i++)
220 int32_t input = cloud_data[
i];
233 bool relay_ema_fast = ema_fast_val > RELAY_THRESHOLD;
234 bool relay_dema_med = dema_med_val > RELAY_THRESHOLD;
235 bool relay_tema_med = tema_med_val > RELAY_THRESHOLD;
236 bool relay_ema_slow = ema_slow_val > RELAY_THRESHOLD;
238 if (relay_ema_fast != prev_relay_ema_fast) relay_changes_ema_fast++;
239 if (relay_dema_med != prev_relay_dema_med) relay_changes_dema_med++;
240 if (relay_tema_med != prev_relay_tema_med) relay_changes_tema_med++;
241 if (relay_ema_slow != prev_relay_ema_slow) relay_changes_ema_slow++;
243 prev_relay_ema_fast = relay_ema_fast;
244 prev_relay_dema_med = relay_dema_med;
245 prev_relay_tema_med = relay_tema_med;
246 prev_relay_ema_slow = relay_ema_slow;
248 printf(
"%zu,%d,%d,%d,%d,%d\n",
249 i * 5, (
int)input, (
int)ema_fast_val, (
int)dema_med_val,
250 (
int)tema_med_val, (
int)ema_slow_val);
253 printf(
"\nRelay State Changes (lower = better cloud immunity):\n");
254 printf(
"EMA Fast (α=8): %d changes\n", relay_changes_ema_fast);
255 printf(
"DEMA Med (α=32): %d changes\n", relay_changes_dema_med);
256 printf(
"TEMA Med (α=32): %d changes\n", relay_changes_tema_med);
257 printf(
"EMA Slow (α=128): %d changes\n", relay_changes_ema_slow);
260 TEST_ASSERT_LESS_OR_EQUAL(relay_changes_tema_med, relay_changes_ema_fast);
261 TEST_ASSERT_LESS_OR_EQUAL(relay_changes_dema_med, relay_changes_ema_fast);
constexpr uint8_t round_up_to_power_of_2(uint16_t v)
double benchmark_operation(std::function< void() > operation, int iterations=100000)
void test_performance_comparison()
void test_responsiveness_comparison()
constexpr uint8_t round_up_to_power_of_2(uint16_t v)
void test_alpha_parameter_effects()
void test_cloud_immunity_simulation()