Maximizing Rubberband Scoring - Way Too Much Math

Options
13»

Comments

  • Gotchaye wrote:
    Phantron wrote:
    You're making the assumption that the entity that came up with the formula is a person, not a computer.

    Just because it is difficult for a person to imagine what formula would have whatever characteristics D3 was going for does not mean it is hard for the computer to figure it out. The computer can basically just do a poly fit if you give it some data points that describes the intended behavior of the system. And, since we don't know if it's a person or a computer that came up with the formula at D3, you can't say 'it must be a person that came up with this formula'. Yes, if you know a person came up with the formula in D3, what Nemek has is almost certainly right, because no person can come up with a better formula. This does not mean a computer cannot come up with a better one. In fact, it's pretty trivial for the computer to do it.

    This is kind of like how no human has an elegant solution for the 4-color problem and it was solved by a computer that just plugged away at every possible map and determined that it can 4-color every single map, thus proving something that no human was able to do for decades. Some problem doesn't have simple and elegant solutions, which is why we have computers.

    I'm pretty sure it can be shown that there is a unique solution (besides the boring one of constant f) to the problem you posed, and since a solution is that the rubber-banding function is c*D, where c is some constant and D is the score gap, then that's that.

    But let's try to solve it. Obviously the solution must be continuous, and it can be approximated arbitrarily closely by a sufficiently impressive polynomial. What you're asking for is a function which is such that A*f(D) + B*f(D+A*f(D)) = B*f(D) + A*f(D+B*f(D)). So we replace f with its Taylor expansion about D. f(D) remains f(D), and f(D+A*f(D)) becomes f(D) + f'(D) * A*f(D) + f''(D)/2 * A^2*f(D)^2 + f'''(D)/6 * A^3*f(D)^3 + ...

    We can divide through by f(D) and combine, which eliminates several of the leading terms. We end up with 1/2 * f''(D) * f(D) * (B^2*A + A^2*B) + 1/6 * f'''(D) * f(D)^2 * (B^3*A + A^3*B) + ... = 0, and this needs to be true for all A, B, and D. Clearly this is only going to happen if, for every D, either f(D)=0 or all of the second-order and higher derivatives of f at D are 0. We know that f(D) is never 0. So all of its second-order or higher derivatives must be 0 everywhere. So f must be linear.

    Edit: Of course, this violates the assumption that f(D) is non-zero everywhere unless f(D) is a constant. But as long as we're interested in A, B, and D such that f(D) is not 0 then f can be linear. And so as soon as you make it non-linear you're going to violate the condition you've laid down, and thus order will be important. And the rubber-banding is very clearly not linear where it switches regimes to and from a constant 10x and a constant 1x.

    Solutions to differential equations are only approximations anyway. There are very few differential equation that have a precise solution (like the ones they force you to solve by hand when you take the class). I remember when I took DE, most of the actual problem was just you plug in something in the computer and say 'the computer told me (impossibly complicated stuff) is likely the answer', because that's about all anyone can do.
  • Phantron wrote:
    Solutions to differential equations are only approximations anyway. There are very few differential equation that have a precise solution (like the ones they force you to solve by hand when you take the class). I remember when I took DE, most of the actual problem was just you plug in something in the computer and say 'the computer told me (impossibly complicated stuff) is likely the answer', because that's about all anyone can do.

    Sure, but this one can be solved by hand and an exact solution can be found. It's linear. And since the rubber-banding is not linear, order must be important in some ways.
  • Nemek
    Nemek Posts: 1,511
    Options
    Phantron wrote:
    In fact, even if the formula is indeed what you claim, you'd surely expect sometimes you get a couple points more than expected simply because the overall leader finished another mission while you're doing yours.

    I guess the point of this is that we really need D3 to tell us what they're trying to accomplish with the rubberband instead of us trying to reverse engineer it. My point, though, is that just because a diferent solution can be impossibly complicated for a human to figure out, doesn't mean it is not the solution. Not when you can simply order your computer to do all the work.

    Well of course you would expect to get a couple more extra points if the overall leader finished another mission. When testing the formula, though...you don't actually complete the mission, you open up MPQ, open up the event, check the leaderboard, check your point score. Everything is retrieved from the server at the same time (or at least within seconds).

    And, you're right - it can definitely be much more complicated, and you should be skeptical of the information I present. When it was first brought up last month, I thought the same thing...and is in large part why I never bothered to try to figure it out myself - the variables/formulas could be so crazy, it could be unsolvable. But, then the formula was presented...I doubted it...put it through a battery of my own testing, and saw that it gave me the correct answer every single time. Could the formula be different and I just got lucky with the data points I picked? Could the formula just have converged on the proposed formula so that I wouldn't have seen a difference? Yes, surely...but I find it unlikely.

    What's interesting is that for the order sensitivity stuff...I really only looked at it yesterday for the first time. Truthfully, I'd suspect that the concept of order sensitivity was a very minor point in developing whatever formula is being used, and it's just a byproduct of what was chosen (and, even then, is pretty damn minor.)
  • Nemek wrote:
    Phantron wrote:
    In fact, even if the formula is indeed what you claim, you'd surely expect sometimes you get a couple points more than expected simply because the overall leader finished another mission while you're doing yours.

    I guess the point of this is that we really need D3 to tell us what they're trying to accomplish with the rubberband instead of us trying to reverse engineer it. My point, though, is that just because a diferent solution can be impossibly complicated for a human to figure out, doesn't mean it is not the solution. Not when you can simply order your computer to do all the work.

    Well of course you would expect to get a couple more extra points if the overall leader finished another mission. When testing the formula, though...you don't actually complete the mission, you open up MPQ, open up the event, check the leaderboard, check your point score. Everything is retrieved from the server at the same time (or at least within seconds).

    And, you're right - it can definitely be much more complicated, and you should be skeptical of the information I present. When it was first brought up last month, I thought the same thing...and is in large part why I never bothered to try to figure it out myself - the variables/formulas could be so crazy, it could be unsolvable. But, then the formula was presented...I doubted it...put it through a battery of my own testing, and saw that it gave me the correct answer every single time. Could the formula be different and I just got lucky with the data points I picked? Could the formula just have converged on the proposed formula so that I wouldn't have seen a difference? Yes, surely...but I find it unlikely.

    What's interesting is that for the order sensitivity stuff...I really only looked at it yesterday for the first time. Truthfully, I'd suspect that the concept of order sensitivity was a very minor point in developing whatever formula is being used, and it's just a byproduct of what was chosen (and, even then, is pretty damn minor.)

    It depends on whether you think order sensitivity is a goal or not. I think it'd be important to ensure that doing A then B versus the other way around shouldn't have a signifcance, while you do not think it's a big deal. Neither of us can say what we believe is what D3 believes. Without knowing what D3's priorities are, there's no way to say for sure.

    Even if the formula is the one I proposed, at the range 0 < D < 4000 range, it's going to look almost exactly the same as what you propose anyway, because this formula does make the most sense for that range (simple and completely order insensitive). After all, a formula that tries to minimize overall order sensitivity has to look a lot like yours in that range, because your formula is totally order insensitive in that range.

    At any rate I think focusing solely on points overlooks the dynamics of the missions themselves. With AP+3 all now very limited (even though they're giving out some, it's hardly something you can expect to have 10 of) you can no longer count everything mission as money in the bank. I almost got a wipeout on Business Partners and regret saving that to the end, because failing that mission would have rather severe impact to my overall standing. I don't know about others, but even with all the planning, I find that as we hit that last 30 minutes everything still devolves in a frantic rush to do as many missions as possible. That's why I like to do the high point missions first (ones that are hard), because I don't have time to play them carefully when time is running out. If you can finish every possible mission at a leisure pace, by all means save the hardest ones for last. That method has never worked for me in all the PvE events I've been (minus the ones I've a runaway lead like some sub brackets this time, but of course you wouldn't even need a strategy in a case like that). I always found myself in a 'must click faster!' panic mode at some point, and I'd prefer to have the easy missions left at that point rather than a 230X3.
  • mischiefmaker
    Options
    First, just wanted to say this is awesome stuff, thanks for sharing this in a clear and detailed writeup. Followup discussion has been great too.

    Looking over the OP and Eddiemon's post, though, it looks like the initial recommendations need to be modified. To play optimally:
    - If you're above the max multiplier, do the lowest-value missions.
    - If you're under the max multiplier, but doing all the missions won't reduce the multiplier below 1, order doesn't matter. If it does reduce your multiplier below 1, though, you should do the highest value missions first. Therefore, if you're under the max multiplier, do the highest value missions first.

    I do agree with Phantron, though -- this assumes that all the missions are guaranteed to be beatable in the remaining time, which is often not a sure thing. Since you lose way way more from missing out on even a single high-value mission than you do from maximizing your ordering (for example, in the OP, if you do CBA but fail to complete A at the end, you lose 838 points), if you're not positive you can finish all the missions, you're best off just doing the highest-value missions first. Unless you're in a bracket of death, the difference between that and playing optimally ought to be small enough that you can still finish in the top non-4* tier.

    Also, walkyourpath, I found a bug in your code:
    Here's a little formula I wrote to help me predict my final placement in PvE events, you may find it useful:

    Boolean Var - IsNemekInBracket
    Var - MyFinalRank

    If IsNemekInBracket=yes, then MyFinalRank=MyFinalRank-1
    Your code fails the AvengersElite unit test. icon_e_smile.gif

  • Also, walkyourpath, I found a bug in your code:
    Here's a little formula I wrote to help me predict my final placement in PvE events, you may find it useful:

    Boolean Var - IsNemekInBracket
    Var - MyFinalRank

    If IsNemekInBracket=yes, then MyFinalRank=MyFinalRank-1
    Your code fails the AvengersElite unit test. icon_e_smile.gif

    That's my .pve code. My .pvp file is coded differently:

    Boolean Var - IsNemekInBracket
    Var - MyFinalRank
    Var - MyHP

    If IsNemekInBracket=yes, and MyHP > 3000, then MyFinalRank=MyFinalRank and MyHP=MyHP-2500

    icon_e_smile.gif
  • mischiefmaker
    Options
    If IsNemekInBracket=yes, and MyHP > 3000, then MyFinalRank=MyFinalRank and MyHP=MyHP-2500
    Your pvp code isn't idempotent, though -- there are side effects:
    var sleep, stress;
    while (bracket.status != finished){
      sleep--;
      stress++;
    }
    
    (I bet other people reading this thread didn't think it could get any nerdier! Showed you.)
  • Nemek's calculation is assuming the leader's point increase is negligible. If you assume leader's points isn't increasing, once you're below the 10X modifier, the order is irrelevent based on the observed behavior of the rubberband mechanisms regardless of what it's underlying formula is. The only part that is uncertain is whether the formula tries to minimize the impact when you're in the range between (threshold for 10X mod) and (threshold for 10X mod + highest base missionX10), as depending on what the actual formula is, there may be an advantage gained for doing small missions first over big missions.

    Looking at the threads over the recent PvE events, I think we can assume moving forward, one cannot assume they can simply do all the missions on time. It is important to identify the most problematic missions and get them out of the way early (like say, 4 hours before event ends) as long as it has a decent rubberband modifier (say, 5X). That way if you suffered a wipeout you still have time to recover. The stronger your roster is (relatively), the more you can afford to wait, but even the strongest roster can have significant problem with some of these missions now, so don't get too overconfident. I did only all goon missions in the last 10 minutes because those are the only ones I can be certain I can make a beeline for green and do Berserker Rage without risking a major meltdown, since goons can't match tiles.