Kalith

New effort to create tank specific values for wn8 rating

98 posts in this topic

I made calculation of the new averages using your script: https://yadi.sk/d/GSC6dx153NGzBh/csv, wn8-averages-2017-10-10.csv

There is not so big difference in values comparing with v31.

Here is results: https://yadi.sk/d/GSC6dx153NGzBh/plots/user_account_data

v31 suffix is the v31 table

newavg suffis is the new averages table.

The result is slightly worse, but I think it's within the margin of error.

We can use v31 as basis and update it later if required. 

Script for averages calculation:

 
CREATE OR REPLACE FUNCTION wn8.calculate_averages()
RETURNS VOID
LANGUAGE plpgsql
AS $$
DECLARE
    l_tiers int[];
    l_tier int;
    l_types text[];
    l_type text;
    l_tank_ids int[];
    e_dmg float8;
    e_frg float8;
    e_spo float8;
    e_def float8;
    e_win float8;
    n_dmg float8;
    n_frg float8;
    n_spo float8;
    n_def float8;
    n_win float8;
BEGIN
    l_tiers := ARRAY(SELECT tier FROM xvm.vehicles_list GROUP BY tier ORDER BY tier);
    l_types := ARRAY(SELECT type FROM xvm.vehicles_list GROUP BY type ORDER BY type);

    FOREACH l_type IN ARRAY l_types LOOP
    FOREACH l_tier IN ARRAY l_tiers LOOP
        l_tank_ids := ARRAY(SELECT tank_id FROM xvm.vehicles_list WHERE type = l_type AND tier = l_tier);

        IF array_length(l_tank_ids, 1) = 0 THEN
            CONTINUE;
        END IF;

        SELECT dmg, frg, spo, def, win FROM wn8.exp_def WHERE type = l_type AND tier = l_tier
        INTO e_dmg, e_frg, e_spo, e_def, e_win;

        SELECT
            (regr_intercept(a.r_dmg, b.r_dmg) + regr_slope(a.r_dmg, b.r_dmg)) * e_dmg,
            (regr_intercept(a.r_frg, b.r_frg) + regr_slope(a.r_frg, b.r_frg)) * e_frg,
            (regr_intercept(a.r_spo, b.r_spo) + regr_slope(a.r_spo, b.r_spo)) * e_spo,
            (regr_intercept(a.r_def, b.r_def) + regr_slope(a.r_def, b.r_def)) * e_def,
            (regr_intercept(a.r_win, b.r_win) + regr_slope(a.r_win, b.r_win)) * e_win
        FROM wn8.tmp_exp a
        JOIN wn8.tmp_user_account_stats b USING(player_id)
        WHERE a.tank_id IN (SELECT * FROM unnest(l_tank_ids))
        INTO n_dmg, n_frg, n_spo, n_def, n_win;

        DELETE FROM wn8.exp_def_new WHERE type = l_type AND tier = l_tier;

        INSERT INTO wn8.exp_def_new (type, tier, dmg, frg, spo, def, win)
        VALUES (l_type, l_tier, n_dmg, n_frg, n_spo, n_def, n_win);
    END LOOP;
    END LOOP;
END;
$$;

 

Share this post


Link to post
Share on other sites
5 hours ago, sirmax said:

I made calculation of the new averages using your script: https://yadi.sk/d/GSC6dx153NGzBh/csv, wn8-averages-2017-10-10.csv

There is not so big difference in values comparing with v31.

Here is results: https://disk.yandex.ru/client/disk/wn8-data/plots/user_account_data

v31 suffix is the v31 table

newavg suffis is the new averages table.

The result is slightly worse, but I think it's within the margin of error.

We can use v31 as basis and update it later if required. 

Script for averages calculation:

  Reveal hidden contents

CREATE OR REPLACE FUNCTION wn8.calculate_averages()
RETURNS VOID
LANGUAGE plpgsql
AS $$
DECLARE
    l_tiers int[];
    l_tier int;
    l_types text[];
    l_type text;
    l_tank_ids int[];
    e_dmg float8;
    e_frg float8;
    e_spo float8;
    e_def float8;
    e_win float8;
    n_dmg float8;
    n_frg float8;
    n_spo float8;
    n_def float8;
    n_win float8;
BEGIN
    l_tiers := ARRAY(SELECT tier FROM xvm.vehicles_list GROUP BY tier ORDER BY tier);
    l_types := ARRAY(SELECT type FROM xvm.vehicles_list GROUP BY type ORDER BY type);

    FOREACH l_type IN ARRAY l_types LOOP
    FOREACH l_tier IN ARRAY l_tiers LOOP
        l_tank_ids := ARRAY(SELECT tank_id FROM xvm.vehicles_list WHERE type = l_type AND tier = l_tier);

        IF array_length(l_tank_ids, 1) = 0 THEN
            CONTINUE;
        END IF;

        SELECT dmg, frg, spo, def, win FROM wn8.exp_def WHERE type = l_type AND tier = l_tier
        INTO e_dmg, e_frg, e_spo, e_def, e_win;

        SELECT
            (regr_intercept(a.r_dmg, b.r_dmg) + regr_slope(a.r_dmg, b.r_dmg)) * e_dmg,
            (regr_intercept(a.r_frg, b.r_frg) + regr_slope(a.r_frg, b.r_frg)) * e_frg,
            (regr_intercept(a.r_spo, b.r_spo) + regr_slope(a.r_spo, b.r_spo)) * e_spo,
            (regr_intercept(a.r_def, b.r_def) + regr_slope(a.r_def, b.r_def)) * e_def,
            (regr_intercept(a.r_win, b.r_win) + regr_slope(a.r_win, b.r_win)) * e_win
        FROM wn8.tmp_exp a
        JOIN wn8.tmp_user_account_stats b USING(player_id)
        WHERE a.tank_id IN (SELECT * FROM unnest(l_tank_ids))
        INTO n_dmg, n_frg, n_spo, n_def, n_win;

        DELETE FROM wn8.exp_def_new WHERE type = l_type AND tier = l_tier;

        INSERT INTO wn8.exp_def_new (type, tier, dmg, frg, spo, def, win)
        VALUES (l_type, l_tier, n_dmg, n_frg, n_spo, n_def, n_win);
    END LOOP;
    END LOOP;
END;
$$;

 

Agreed

Share this post


Link to post
Share on other sites
5 hours ago, BlackAdder said:

@Gryphon_

Are all tanks (same class and tier) have same expected dmg now? 

On wotlabs, most sites, and some mods, yes. However, the xvm team is close to having an automated way of producing per-tank values so you will see a slightly different WN8 score in XVM (mine is 4 different overall)

Share this post


Link to post
Share on other sites
5 hours ago, Gryphon_ said:

On wotlabs, most sites, and some mods, yes. However, the xvm team is close to having an automated way of producing per-tank values so you will see a slightly different WN8 score in XVM (mine is 4 different overall)

Isn't that kinda unfair to less good tanks? 

 

But i guess it makes life easier for devs (with new tanks). 

Share this post


Link to post
Share on other sites

Sorry for the long hiatus. Took a vacation and then got swamped with work. 

Anyway, pleased to announce the new expected values. 

This time it's based on the stats of all players on all WG servers (> 1000 battles, tanks with > 50 battles), calculated with Gryphon's method/script, slightly modified to deal with larger data files.

The following substitutions were performed:

15617,Object 907,16897,Object 140
15905,M60,14113,M48A1 Patton
55841,T95E6,14113,M48A1 Patton
58641,VK7201,9489,E 100
63537,121B,4145,121
58881,IS-5,5377,IS-3
11809,T23E3,1569,T20
54273,SU-76I,2369,FCM 36 Pak 40

59425,T34 B,2849,T34
12577,M4 Improved,52257,M4A2E4 Sherman
13905,FV4005 Stage II,9297,FV215b (183)
53793,T95E2,5921,M26 Pershing
59665,Grosstraktor - Krupp,2385,Vickers Medium Mk. III
61457,Pz.Kpfw. III Ausf. K,6417,Pz.Kpfw. III/IV
54033,Pz.Kpfw. V\/IV Alpha,51473,Pz.Kpfw. V\/IV
49409,IS-6 B,9217,IS-6
64273,Panzer 58 Mutz,49937,Schwarzpanzer 58
59681,M4A3E8 Thunderbolt VII,1313,M4A3E8
58913,T26E5,59169,T26E5 Patriot

 

http://wottactic.com/expected_v33.json

http://wottactic.com/expected_v33.csv

 

You can test out the calculator here http://wottactic.com/wn8_standalone.html. Wottactic.com will switch over in the next week, but it takes a few days to recalculate the history. Code and methodology is still here: https://github.com/karellodewijk/wn8_expected.

 

 

Share this post


Link to post
Share on other sites

@Kalith Hi. Thanks for your effort on this, but as was mentioned above we're in XVM Team already done 100%-automatically daily calculations, and details on that was also discussed with @Gryphon_ and carefully checked for any possible defects. In near future we are plan to add it in XVM and all our and partner websites, so we recommend you also use that tables in order to prevent any differences which are definetely will not be clear to ordinary users.

Share this post


Link to post
Share on other sites

I'm ok with switching over if the values tank specific and makes sense. I agree that we don't want several different wn8 ratings.

Which stats do you use as a source ?  

Anyway, keep me informed on when you release your expected values.

 

Share this post


Link to post
Share on other sites

@Gryphon_ We also want to switch from wn8a to wn8d. As far as I understand, initially this could not be done due to the lack of necessary data in the WG API. However, the data has long and stably existed in the API in sufficient volume, which allows to switch to the wn8d method.

3 minutes ago, Kalith said:

Which stats do you use as a source ?  

All active (last 3 month) players with 10000+ account battles and 50+ vehicle battles.

Share this post


Link to post
Share on other sites
13 minutes ago, seriych said:

All active (last 3 month) players with 10000+ account battles and 50+ vehicle battles.

Ok that makes sense, let me know when/where/how you're going to make the expected value available.

Share this post


Link to post
Share on other sites
On 24/10/2017 at 4:03 AM, sirmax said:

At the present time they are available at https://yadi.sk/d/GSC6dx153NGzBh, but this is the temporary resource.

We are almost finished preparation of the persistent links for sharing.

Please bear in mind that if you update the values every day, all the other sites out there using your values will be constantly updating, as not all do it automatically.

Just because you have the server power to update every day doesnt mean thats a good use of your resources -  the values of any tank shouldn't change by a noticeable amount in a day....

It would be far better to update every month, and do the averages every 6. More frequent changes than that will be a pain for all the sites and modders to keep up with.

Share this post


Link to post
Share on other sites

We'd recommend to always get latest table. It will be available on constant link, so it's won't be a problem for modders or webmasters and don't require any skills of automation.

Quote

 the values of any tank shouldn't change by a noticeable amount in a day

And that's a big advantage of this approach. No more sharp gaps in stats and on graphs, no more whine and misunderstanding from ordinary users.

Share this post


Link to post
Share on other sites
32 minutes ago, moogleslam said:

Assist Damage included in this update?

1. Only WG can use assist. WG does not provide sufficient information on assist for third-party developers. In order to take assist into account it is necessary to know the number of battles that have been carried out since the beginning of recording this indicator. But WG does not provide this information.

2. Serious changes in the formula would entail a change in the rating name. Thus, it is the same wn8, which has always been.

Share this post


Link to post
Share on other sites
3 hours ago, moogleslam said:

Assist Damage included in this update?

The problem with including assist in anything is it can only be calculated back to when it was first included in the API, which would invalidate anything before that point.

Share this post


Link to post
Share on other sites

any news about the implementation of the new values to the website? 

Share this post


Link to post
Share on other sites
2 hours ago, H4NI said:

any news about the implementation of the new values to the website? 

Clantools.us has new values now

Share this post


Link to post
Share on other sites

Just wanted to pop in and say that this is a pretty good change if WN8 is ever to stay alive and relevant.

Now it's only up to stat tracking sites to adapt, or they'll most likely die out.

 

Godspeed XVM lads.

Share this post


Link to post
Share on other sites

Has anyone contacted Never to get this implemented on wotlabs?

Share this post


Link to post
Share on other sites

A little off topic perhaps, but why is it that replacing colors.xc in the /res_mods/configs/xvm/default/ folder with the wotlabs one no longer works?  Still stuck with the XVM colors....

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.