python notebooks explaining lineup optimization concepts
Shows how stacking often is not optimal when projections are correct (or when looking at 'perfect' lineups), but stacking makes sense given the inaccuracies that plague even the best projections.
Shows each step of creating an integer program in PuLP to optimize a lineup. Provides code for core constraints (position, salary, # players) and shows how to implement stacking and bring-back rules.
In-depth tutorial of the different ways to create Player objects and load them into the optimizer.