6 ms·
Computationally optimal arrangements of barbell plates
- cratermoon 3y agoAs a some-time lifter, the idea of totally optimizing plate changes begins to feel a bit like taking the escalators up to the gym entrance where there are stairs right there[1]. After a couple of years of attempting what the author does here, it finally occurred to me that moving around heavy weights was the whole point of the exercise, and plate-switching was just a different move. Efficiency didn't matter, I was using my body and building strength. Shout out to people who are pressed for time and want to get their workout done in a small window: You do you, just don't hog all the weights and not put them back on the racks. 1 https://medium.com/@nessasaurus/only-in-america-fe7d2d5d461e https://medium.com/@nessasaurus/only-in-america-fe7d2d5d461e also, I understand there are legitimately people going to gyms to exercise who may not have full use of their legs.
- SoftTalker 3y agoYes. I typically load the bar so that I get my desired weight with the fewest number of plates. This keeps the weight slightly closer to the center of the bar and slightly more stable, also light plates have a tendency to wander around more than heavy plates (Except for deadlifts, I typically don't use clips in case I need to dump the weight). Optimizing the changing of plates is not really of any interest to me, like you said the whole point of being at the gym is lifting weight, and as far as warmup sets go I never use anything but 45 and 25 lb weights until I get to my working set weight.
- dahfizz 3y agoDo you use figure 8s or something? Why can't you just drop your deadlift vs having to dump the weights?
- SoftTalker 3y agoNo sorry if unclear. I use clips on deadlifts. I don't for bench or squat.
- anonytrary 3y agoAgree, moving the weights inefficiently will end up working the muscles you don't necessarily target in your main workout. It's less efficient, but probably gives a (very slightly) more well-rounded workout. If you're pressed for time, it could make sense to have a basic understanding of how to avoid dilly-dallying during your workout. If you go to a public gym, there will be other factors that affect your total time much more, like having to share equipment, which introduces a lot of uncertainty. Maybe these micro-optimizations are worthwhile if you have a private gym. From a well-being/philosophical standpoint, maybe it's better to live life relaxed, and not one where you have to micro-manage every minute of your day to squeeze out every inch and penny of efficiency you can. That sounds like a horrible lifestyle, but I guess to each their own :)
- comfypotato 3y agoI’ve always pondered the exercise value of moving weights, especially 45s, on and off the bar. Ultimately, I don’t think it affects gains for an elite lifter. The “reps” you get moving the weights don’t conform to any reasonable pattern for making gains. Worse, they’re tiring you out. Criticizing plate optimization on your grounds sounds like a traditional conservative criticizing a progressive for changing the way things are done for no reason other than it being different. In this case, the difference is better in every way except for being too complicated for lunks.
- andreareina 3y agoIf moving the plates around tired me out to the point of impacting the session and/or my recovery I'd conclude that my work capacity needs improving, not that I need to minimise extraneous effort in the gym.
- jiggawatts 3y agoIn particular, picking up plates by "pinching" them is a great way to build grip strength, which is often a limiting factor when lifting heavy. So it is directly beneficial to the main exercise, not just a side-exercise.
- cratermoon 3y agoOh yeah, picking up a 45 (20kg) in each hand with a pinch and loading the bar with that grip has been part of my exercise routine for years.
- devnullbrain 3y agoIn exercise science there's a concept called specificty: training is more useful the more similar it is to the thing you're training for. If you're just training to make some parts of you bigger and others smaller, moving plates is still poor exercise because it's a variable movement that can lead to asymmetries or overuse injuries and can't be progressively overloaded.
- cratermoon 3y agoAbsolutely, if you're training for sport-specific things. Maybe you want to find a way to target your serratus anterior for more opposite-field power or something. But if you're just a 30- or 40-something who doesn't want to be a frail 68 yo with osteoporosis, a titanium hip joint, high blood pressure, and sarcopenia, just move, lift, and stretch. Anything works.
- jasonpeacock 3y agoI have a limited amount of time available to get my workout done. Optimizing how plates are added/removed as you move through your warmup sets to your working sets is important if you want to minimize your total workout time. Sure, if I have 2hrs, no problem - just do whatever is easiest to calculate. But if I only have 30min then I need to be economical with every movement.
- bo1024 3y agoNice. This solution is a type of dynamic programming, in disguise.
- ramity 3y agoWhile somewhat tangential to this, I'd like comment on a different problem. "What's the fewest number of plates you need to go from 45lb (bar) -> 240lb at a resolution of 5lb?" Look no further than the 185lb set[1]. Composed of pairs of 2.5lb, 5lb, 2x10lb, 25lb, 45lb plates, one can do just this. Need to lift 245lb? Buy another pair of 45lb plates and your range expands to 45lb -> 330lb. Another pair of 45lb plates yields 45lb -> 420lb. You get the idea. This approach comes with the added bonus of being the most cost efficient method of buying plates, as higher pound plates yield slightly better $/lb. 1: https://github.com/ramity/athena/blob/master/notebooks/plate-math.ipynb https://github.com/ramity/athena/blob/master/notebooks/plate... Side note: I've yet to do the calculations for kg sets, but I'm certain something similar to this exists. Edit: I made a laughably simple mistake interpreting my results and corrected the above. Many thanks to those who replied and brought this to my attention (credited in the commit https://github.com/ramity/athena/commit/4a17a3d16058f850d09ea266c93abb2e9ceb97d1 https://github.com/ramity/athena/commit/4a17a3d16058f850d09e...).
- spencerflem 3y agoDoesn't this set skip 20lbs? Since 10+5+2.25 has a gap before the next size of 25
- AndrewOMartin 3y agoTo get 20, you just use the 25 and put the 5 on the other end.
- wyre 3y agoThis leaves out the ability to get to 85, 90, 175, and 180 lbs. Another set of 10s hits these missing numbers quite easily tho and allows for 330 lbs in total which should be plenty for most recreational lifters.
- hervature 3y agoThe set of weights you listed cannot do 85lbs or 90lbs since nothing adds up to 20 or 22.5. Your notebook shows this. Easily rectified by adding in another pair of 10lb plates.
- haltingproblem 3y agoThis is awesome, I have been wishing for this for some time and realized it is a bit non-trivial to put into an app, but if you did, I would pay for it, maybe $50/year?
- phyrex 3y agoIt’s easy enough to do as a website. I posted mine in a comment in this thread
- shoo 3y agoThe objective here is framed as "I want to find a cheapest path that visits a sequence of nodes with specific goal weights [W_1, ..., W_n], in ascending order". This is a bit like a spatial path-finding problem where the objective is to find a path through a fixed sequence of waypoints, except harder, as we're not specifying specific waypoint nodes to visit but only that we visit nodes with some desired characteristic (total weight). Consider how the state space is encoded -- it isn't valid to model each node in the graph by total weight, as that erases the detail of which plates are currently equipped, which we need to determine the edge costs. That's shown in the diagrams, where each node is represented as a multiset of plate weights. Another part of the state space encoding is subtler: it's only valid to visit a node with goal weight W if we have previously visited all goal weights W' with W' < W. This constraint is implicitly encoded by the nodes and edges considered in the transition graph, and the ordering of the nodes from left to right. For this problem there's no need to augment the state space with an extra state variable to track how many goals or which goals we've already achieved, that's implicitly tracked through the total weight and the construction of the transition graph. Nodes and edges that violate this have been excluded from the transition graph, e.g. there's no edge drawn from node {0} to node {10, 25} -- as that transition causes the path to fail to visit a node with total weight 15 and total weight 25. Suppose we were to change the objective from "visit a sequence of nodes with these specific goal weights [W_1, ..., W_n] in ascending order" to "visit a sequence of nodes with these specific goal weights in _any_ order". The problem becomes _much_ harder, a variation of the traveling salesman problem, and starts to resemble some industrial problems, e.g. some kind of resource constrained vehicle routing delivery problem.
- tibbar 3y agoThis nuance is correct, and handled correctly by the code and diagrams, although the text is unclear. (Although a random ordering of the weights would not make sense for the problem setting, which is warmup sets in the gym.)
- shoo 3y ago> This can be done efficiently via, eg, Dijkstra’s algorithm, but since this is such a small graph, we can also easily enumerate all 36 paths and sort for efficiency. Brute force enumeration for small problem instances is pragmatic. For larger problems, Dijkstra's algorithm would certainly work, and would also work for more general problems where we're given a graph containing cycles. For this barbell plate problem we could also exploit the acyclic structure and use bottom-up dynamic programming: maintain a table tracking the cost of the cheapest path to each node, and an auxiliary table tracking the predecessor node or incoming edge per node where the cheapest path was attained, then fill out the tables "bottom up" (or left to right per the diagrams). Less general, but it dodges the need to do a bunch of work maintaining a priority queue of partial paths. Another fun connection is to the Viterbi algorithm - a completely different real world application to barbell plate optimization - decoding a sequence of noisy observations and trying to reconstruct the most probable trajectory of unobserved states - but the abstract mathematical model & way to attack it computationally is very similar -- construct a DAG, a solution is a least-cost path through the DAG (ignoring all the problem-specific details going into the definition of state spaces, transition graphs, edge costs, etc). c.f. "The Viterbi Algorithm at 50 (2017)" from a couple of months ago: https://news.ycombinator.com/item?id=35897851 https://news.ycombinator.com/item?id=35897851 edit: i guess another connection is the knapsack problem mentioned in this post -- it can also be framed as a least-cost path through a DAG, and computed bottom-up. For this barbell plate optimisation problem, the acyclic structure comes from the monotonic increasing sequence of goal weights. For the Viterbi algorithm's problem of inferring a most probable sequence, the acyclic structure comes from each observation being ordered by the observation time. For the knapsack problem, there isn't really a natural problem defined ordering of item take/leave decisions, but the decisions can be sequenced in any arbitrary fixed order.
- phyrex 3y agoI implemented one of those for myself a couple years ago: https://s3.amazonaws.com/max.public/bestplates/index.html https://s3.amazonaws.com/max.public/bestplates/index.html It’s optimized for phone input, so put the weights of the sets you’re going for in like ‘135*225*280’ . I modelled it much more simply than this, a relatively straightforward Cartesian product of all possible plates with a rewards function that assigned a value to each combination!
- Avlin67 3y agodo you even lift ?
- x86x87 3y agoDYEL in the park? sorry. no offense!
- turzmo 3y agoCute, but the less optimal arrangement gets a better workout switching stuff around
- x86x87 3y agogoing to say something controversial here, but... if you go to the gym to lift weights and after that you end up doing all this mental gymnastic to allegedly save time you're doing it wrong. you are literally avoiding lifting small weights to load up your bar, when you are there to lift weights. I would challenge everyone to show me how much time they can save. Also, if you want to save time AND if you have a super complicated workout that involves 30 different weights on the bar you are also doing it wrong. for each exercise you should have 2 weights: warmup and the weight you are working on. work with a weight that allows you to do 5 sets of 5 reps (+1 warmpup set). Do: bench press, overhead press, squats, barbell rows. that is all. you will get the workout done in 30 minutes. Compound movements with a barbell are all you need (before you gang up on me, remember we are optimizing for time and the best return for the effort).
- el_nahual 3y agoDo you really only use one warmup weight when lifting heavy? Let's say I'm squatting 325lb / 140kg. I'll usually do 5/reps empty bar, 5 reps 135lb, 5 reps 225, 5 reps 275, then 3-5 "working" sets of 325 (3x5 or 5x5). Do you think all those intermediate warmup reps are a waste of time?
- n4r9 3y agoThat tickled me too. It's like saying that walking is a warmup for sprinting.
- xupybd 3y agoWalking on the spot is a warmup for sprinting. https://athleticsweekly.com/performance/sprinting-warm-cool-1538/#:~:text=Simple%20exercises%20to%20begin%20the,on%20the%20spot%20are%20useful.&text=Once%20you%20have%20gently%20stretched,speed%2C%20progressing%20to%20jogging%20speed https://athleticsweekly.com/performance/sprinting-warm-cool-....
- n4r9 3y agoNot on its own.
- zemvpferreira 3y agoThis is a fun topic that most nerds who lift have played around with at any given point. No need to take the OP too seriously I think. (Of course the optimal path is to round your warmup weights to the next plate in reach. Who cares about dividing warmups into exact tranches?)
- michaelteter 3y agoThese are the kinds of things you contemplate during rests between sets :) Honestly though, the effort of increasing weights between sets is far less important than the effort of removing the weights when done (which some of the bros never bother doing). When you are exhausted, removing 5s and 10s is practically a joy compared to removing 20s (45lb).
- x86x87 3y agoby the time you are removing multiple 45s you are already strong enough that it does not matter.
- SoftTalker 3y agoAnd you can't remove more than 2 at a time or the bar will become too unbalanced and tip out of the rack.
- importantbrian 3y agoI completely obliterated a chalk bucket this way once. Not the kind of mistake you make more than once.
- ryukoposting 3y agoThe further into the weeds you go with computer science, the harder it gets to find intuitive, tangible demonstrations. I love this as a simple, practical display of computer science principles. Similar to that "making change with as few coins as possible" problem every CS 101 class gives you, but much more sophisticated.