deathbeam / maps-of-exile

PoE Maps div cards and stuff
https://mapsofexile.com/
MIT License
35 stars 3 forks source link

Baseline Calculations #11

Closed sebsebmc closed 1 year ago

sebsebmc commented 1 year ago

Describe the bug I was hoping to have a bit of a discussion that might help me understand the goal and calculation of the baseline weight feature.

First, I do not understand what you mean by "averaging all map weights" in the tooltip of the average card selector. Is that all the weights for all cards in the map? or all weights for all cards in all maps?

Second, if for example I set the average card of a map to be The Apothecary, I would expect that the baseline calculation to show that I am getting an Apothecary every map and not every 443 maps as it currently shows.

Can you provide a bit of explanation as to how to interpret the current baseline system? I understand that you note that you may be calculating the baseline wrong so I was wondering what goals you have for the feature.

To Reproduce Steps to reproduce the behavior:

  1. Set the average card to The Apothecary
  2. Mouse over an Apothecary on a map like Defiled Cathedral. See the drop chance is not 1 every map.

Expected behavior I was expecting the baseline to be somehow adjusting the drop chances/accounting for magic find since its moving the average card drop.

deathbeam commented 1 year ago

Yea discussion for this is nice for sure as I am sure lost in what I want to actually display. But basically the end goal is to simulate how often you will see x card drop on average after determining your own baseline and the very very end goal is to calculate total average card profit per map. So let's say I drop 1 patient every 3 maps on average, I will choose something that is 3 times more common than patient as my baseline and then I would like to see how many of each card I can see on average.

For the calculation: So averaging all map weights simply means adding all weights of cards that can drop in map and then dividing that by count of cards that can drrop in map.

For your Apothecary example: This is exactly where I am really not sure how to approach this. Because lets say an example, on average I drop 1 patient per map, the map can drop lets say Patient (lets round this to weight 500) and some other card with weight 1000. So even though I can indeed see Patient every map, I can also instead see 2 of the other cards instead every map. But im not sure if this logic even makes sense, as at one point I indeed had logic where I simply divided the card weight by baseline weight, so if you put 1 apothecary on average then the result was 1 apothecary every map. But the biggest problem with this approach is that the resulting value is same for every map e.g it completely ignores that in some maps with a lot of cards with a lot of weights you are actually less likely to drop apothecary than in maps with lower total amount of weight that also drops apothecary (good example is Defiled vs Crimson temple, Crimson can drop Opulent and that one has 11k weight and so you are actually a bit less likely to drop Apothecary in Crimson than in Defiled that does not drop Opulent, or at least one would think so).

So the problem is, if you define baseline weight as static value and use it, then its accurate for the map you are currently farming as that is where you established the baseline, but then its not accurate for comparing the baseline to other maps because of different total weights of cards that can drop there.

Even thought this last part can be probably solved by averaging the values in the total price calculation and the per card calculation should maybe just use static baseline, I am not sure.

deathbeam commented 1 year ago

In the end I figured out how to do accurate simulation based on baseline weight.

Basically I get total drop pool weight from poedb, add map card weight to it, then determine how many drop pool items I need to get to get the baseline card to drop and use this when comparing map card weight to total drop pool

Im very convinced this is accurate so just closing this.