Countermeasure effectiveness

Development area for FreeAllegiance's Community Core.
Post Reply
Spunkmeyer
Posts: 2013
Joined: Fri Jun 27, 2003 7:00 am
Location: Contact me regarding: CC, Slayer and AllegWiki.

Post by Spunkmeyer »

I ran some tests just now, with the help of DrSchlock, to test CM effectiveness and if it jibes with computed values, as I was told that the computed values look too high to be accurate. We basically took two bombers loaded with hunters and CM and ran 48 tests in each round to get the spoofing rate.

Note that CM effectiveness is calculated as a comparison of two random numbers, one between 0 and the missile resistance and the other between 0 and the countermeasure strength. So any test of this nature can only hope to land close to the calculated numbers and hopefully on both sides and in the general ballpark. To get really close to the calculated numbers will take tens of thousands of samples. Here we have under 300 samples.

Also note you typically have time to drop two CMs vs hunter, we only tested one-drop chance.

So the results:

Hunter 2 vs CM1
Calculated value: 50% spoofing chance (75% with two drops)
Tested value: 46%

Hunter 2 vs CM2
Calculated value: 66.7% spoofing chance (88.9% with two drops)
Run 1 Tested value: 75%
Run 2 Tested value: 83%
Run 3 Tested value: 70%

Hunter 3 vs CM3
Calculated value: 70.4% (91.2% with two drops)
Run 1 Tested value: 63%
Run 2 Tested value: 82%


Want bigger games? Log on to play at the official game time: 9pmET/8pmCT/7pmMT/6pmPT every day of the week. Also Saturdays 8pm UTC.

sono
Posts: 87
Joined: Wed May 07, 2008 7:47 pm

Post by sono »

Spunkmeyer wrote:QUOTE (Spunkmeyer @ Feb 1 2011, 03:56 PM) I ran some tests just now, with the help of DrSchlock, to test CM effectiveness and if it jibes with computed values, as I was told that the computed values look too high to be accurate.
I reviewed the relevant code and manually did the math; here are the notes:

Code: Select all

                          float   chaff = ((IchaffTypeIGC*)pet)->GetChaffStrength();
                          float   missile = pmissile->GetMissileType()->GetChaffResistance();
// community core 11 values
// chaff1 = 1.5
// lrm1 = 1.5
// chaff2 = 2.25
// lrm2 = 1.5
// chaff3 = 3.375
// lrm3 = 2

                          //The following is equivalent to random(0, chaff) > random(0, missile)
                          float   cm = chaff * missile;
// cm1lrm1 = 2.25
// cm2lrm1 = 3.375
// cm2lrm3 = 4.5
// cm3lrm3 = 6.75

                          float   f = (chaff > missile)
                                      ? (cm - 0.5f * missile * missile)
                                      : (0.5f * chaff * chaff);
// f1 = 1.125 (50% of cm1lrm1)
// f2 = 2.25 (66% of cm2lrm1)
// f3 = 2.5 (55% of cm2lrm3)
// f4 = 4.75 (70% of cm3lrm3)

                          if (random(0.0f, cm) <= f)
                          {
                              //Missile lost lock
Just for completeness and verification that the code (which has been optimized to save one random call and is not instantly readable) indeed does generate the desired numbers..

clarification:
lrm 1 vs cm 1 => 50%
lrm 2 vs cm 1 => 50%
lrm 1 vs cm 2 => 66%
lrm 2 vs cm 2 => 66%
lrm 3 vs cm 2 => 55%
lrm 3 vs cm 3 => 70%
QUOTE TurkeyXIII@ACE (all): when I realised how close I was I panicked and sprayed everywhere[/quote]
Post Reply