X

Yksityisyys & evästeet

tämä sivusto käyttää evästeitä. Jatkamalla hyväksyt niiden käytön. Lue lisää, mukaan lukien evästeiden hallinta.

Got It!

mainokset

Huomautus 1: Tämä on osa 1 kaksiosaisesta viestistä, joka käsittelee fantasy league-joukkueiden rakentamista. Lue tämä ensin ja lue sitten osa 2 täältä.

Huom. 2: Vaikka otsikossa lukee ”Fantasiajalkapallo”, alla kuvaamaani mallia voi periaatteessa muokata sopivaksi mihin tahansa fantasialiigaan mihin tahansa lajiin.

football useat ihmiset (jotkut opiskelijat, jotkut ystävät) ovat viime aikoina lähestyneet minua koskien optimaalisten joukkueiden luomista fantasiajalkapalloliigoihin. Fan Duel-ja Draft Kings-vedonlyöntisivustojen viimeaikaisen nousun myötä tästä on tullut miljoonien (tai pitäisikö sanoa miljardien) summa?) dollariteollisuus. Joten ajattelin kirjoittaa yksinkertaisen reseptin, joka auttaa kaikkia. Aiomme panostaa urheiluun ohjaavan analytiikan avulla. Oletko valmis? Tehdään tämä! Aloitan matematiikkamallista ja näytän, miten kaikki saadaan toimimaan laskentataulukon avulla.

säännöt

fantasiajalkapallojoukkueen sääntöjen mukaan joukkueen tulee koostua:

  • 1 pelinrakentaja (QB)
  • 2 keskushyökkääjä (RB)
  • 3 laitahyökkääjä (WR)
  • 1 tiukka pääty (TE)
  • 1 kicker
  • 1 puolustus

joissakin liigoissa on myös ns.tai te. Selitän, miten käsitellä flex pelaaja Alla. Lisäksi pelaajilla on kustannuksensa ja joukkueen luojalla on budjetti, jota kutsutaan nimellä B, jota noudattaa (yleensä B on 50 000 tai 60 000 dollaria).

tiedot

jokaiselle pelaajalle i annetaan edellä mainittu kustannus, kutsutaan sitä c_i, ja pisteennuste p_i. Jälkimmäinen on arvio siitä, kuinka monta pistettä odotamme kyseisen pelaajan tekevän tietyn viikon tai pelin aikana. Kun kyse on puolustuksesta, vaikka se ei aina tee pisteitä, on myös tapa laskea pisteitä sille (esim.Estetyt pisteet). Miten nämä pisteennusteet lasketaan, saatat kysyä? Tässä vaiheessa ennakoiva analytiikka astuu kuvaan. Se on lähinnä ennustamista. Katsotaan menneitä / viimeaikaisia suorituksia, katsotaan tulevaa vastustajaa, katsotaan pelaajien terveyttä jne. On web-sivustoja, jotka tarjoavat sinulle nämä ennusteet, tai voit laskea oman. Mitä tarkempi olet näissä ennusteissa, sitä todennäköisempää on rahastaa vedoilla. Tässä, otamme nämä numerot annettuina.

Optimointimalli

tärkeimmät päätökset ovat yksinkertaisia: keiden pelaajien pitäisi olla joukkueessamme? Tämä voidaan mallintaa kyllä / ei päätös muuttuja jokaiselle pelaajalle. Luodaan siis binäärimuuttuja x_i, joka voi ottaa vain kaksi arvoa: se on yhtä kuin arvo 1, Kun pelaaja i on joukkueessamme, ja se on yhtä kuin arvo nolla, kun pelaaja i ei ole joukkueessamme. Arvo i (pelaajan tunnus) vaihtelee 1: stä käytettävissä olevien pelaajien kokonaismäärään.

tavoitteenamme on luoda joukkue, jonka yhteenlaskettu arvo on mahdollisimman suuri. Eli haluamme maksimoida kaikkien joukkueessa mukana olevien pelaajien piste-ennusteiden summan. Tämä kaava näyttää tältä:

\max \displaystyle \sum_{\text{all } I} p_i x_i

yllä oleva kaava toimii, koska kun pelaaja on joukkueessa (x_i=1), sen p_i kerrotaan yhdellä ja lisätään summaan, ja kun pelaaja ei ole joukkueessa (x_i=0) sen p_i saa kerrottuna nollalla, eikä sitä lisätä loppusummaan. Juuri kuvailemani mekanismi on pääidea sen takana, mikä saa kaikki tämän mallin kaavat toimimaan. Esimerkiksi, jos kolmen ensimmäisen pelaajan piste-ennusteet ovat 12, 20 ja 10, maksimointifunktio alkaa seuraavasti: \max 12x_1 + 20x_2 + 10x_3 + \cdots

budjettirajoitus voidaan kirjoittaa sanomalla, että kaikkien joukkueemme pelaajien kustannusten summan on oltava pienempi tai yhtä suuri kuin meidän budjettimme B, näin:

\displaystyle \sum_{\text{all }I} c_i x_i \leq B

esimerkiksi, jos 3 ensimmäistä pelaajaa maksavat 9000, 8500 ja 11000 ja budjettimme on 60000, yllä oleva kaava näyttäisi tältä: 9000x_1 + 8500x_2 + 11000x_3 + \cdots \leq 60000.

varmistaaksemme, että joukkueella on oikea määrä pelaajia jokaisessa asennossa, teemme sen paikka kerrallaan. Esimerkiksi vaatia, että joukkueella on yksi pelinrakentaja, kirjoitamme:

\displaystyle \sum_{\text{kaikki } i \ text{ jotka ovat pelinrakentajia}} x_i = 1

vaadimme, että joukkueella on kaksi keskushyökkääjää ja kolme laitahyökkääjää, kirjoitamme:

\displaystyle \sum_{\text{kaikki } i \ text{ jotka ovat running backup}} x_i = 2

\displaystyle \sum_{\text{kaikki } i \text{ jotka ovat laajakuvavastaanottimia}} x_i = 3

jäljellä olevien paikkojen rajoitteet olisivat:

\displaystyle \sum_{\text{kaikki } i \ text{ jotka ovat tiukkoja päitä}} x_i = 1

\displaystyle \sum_{\text{all } I \text{ that are kickers}} x_i = 1

\displaystyle \sum_{\text{kaikki } i \ text{ jotka ovat puolustuksia}} x_i = 1

erikoinen tapaus Flex Player

flex player tuo tähän malliin mielenkiintoisen käänteen. Se on pelaaja, joka, jos ymmärrän oikein, ottaa paikan kicker (eli meillä ei olisi kicker rajoite edellä) ja voi olla joko RB, WR, tai TE. Siksi meidän on tehtävä heti Uusi päätös: millainen pelaaja fleksin pitäisi olla? Luodaan kolme uutta kyllä/ei-muuttujaa tätä päätöstä varten: f_{\text{RB}}, f_{\text{WR}} ja f_{\text{TE}}. Nämä muuttujat tarkoittavat vastaavasti: onko flex RB? onko flex WR? ja onko flex TE? Osoittaaksemme, että vain yksi näistä asioista voi olla totta, kirjoitamme rajoituksen alla:

 f_ {\text {RB}} + f_{\text{WR}} + f_{\text{TE}} = 1

lisäksi Flex-soittimen käyttö vastaa RB: n, WR: n ja TE: n lukumäärää laskevien rajoitteiden oikean puolen lisäämistä yhdellä, mutta vain yhdelle näistä rajoitteista. Saavutamme tämän muuttamalla näitä rajoitteita formaatista ne olivat edellä seuraavaan:

\displaystyle \sum_{\text{kaikki } i \ text{ jotka ovat running backup}} x_i = 2 + f_{\text{RB}}

\displaystyle \sum_{\text{all } I \ text{ jotka ovat laajakaistaisia vastaanottimia}} x_i = 3 + f_{\text{WR}}

\displaystyle \sum_{\text{all } I \ text{ that are strict ends}} x_i = 1 + f_{\text{TE}}

huomaa, että koska vain yksi f muuttujista voi olla yhtä suuri kuin 1, vain yksi kolmesta yllä olevasta rajoitteesta saa sen oikean puolen korotettua alkuperäisestä arvostaan 2, 3 tai 1.

muut mahdolliset vaatimukset

henkilökohtaisten mieltymysten, sisäpiiritiedon tai muiden esoteeristen seikkojen vuoksi tähän malliin saatetaan haluta sisällyttää muitakin vaatimuksia. Esimerkiksi, jos haluan paras joukkue, joka sisältää pelaaja numero 8 ja sulkee pois pelaaja numero 22, minun yksinkertaisesti täytyy pakottaa X muuttuja pelaaja 8 on 1, ja X muuttuja pelaaja 22 on nolla. Toinen rajoitus, joka voi tulla kätevä on sanoa, että jos pelaaja 9 on joukkueessa, niin pelaaja 10 on myös oltava joukkueessa. Tähän päästään:

 x_9 \leq x_{10}

Jos haluaisit päinvastaista, eli jos pelaaja 9 on joukkueessa niin pelaaja 10 ei ole joukkueessa, kirjoittaisit:

x_9 + x_{10} \leq 1

myös muut tämänsuuntaiset olosuhteet ovat mahdollisia.

Putting It All Together

If you were patient enough to stick with me all the way through here, you ’ re into to put this math to work. Tehdään se Microsoft Excelillä. Aloita lataamalla tämä laskentataulukko ja avaamalla se tietokoneellesi. Tässä mitä se sisältää:

  • sarake A: luettelo pelaajien nimistä.
  • sarake B: kyllä/ei päätöksiä siitä, onko pelaaja joukkueessa (nämä ovat x-muuttujia, jotka Excel-ratkaisija laskee meille).
  • sarakkeet C-H: liput, jotka ilmoittavat, onko pelaaja tiettyä tyyppiä (0 = ei, 1 = Kyllä).
  • sarakkeet I ja J: kunkin pelaajan kustannus-ja piste-ennusteet.

vieritä nyt alaspäin niin, että näet rivit 144-150. B-sarakkeen solut ovat tällä hetkellä tyhjiä, koska emme ole vielä valinneet, keitä pelaajia joukkueeseen lisätään. Mutta jos nämä valinnat olisi tehty (eli jos olisimme täyttäneet B-sarakkeen 0: lla ja 1: llä), kertomalla B-sarakkeen C: llä soluviisaasti ja laskemalla kaiken yhteen kertoisitte kuinka monta pelinrakentajaa teillä on. Olen sisällyttänyt tämän kertolasku solun C144 käyttäen SUMPRODUCT kaava. Samaan tapaan solut D144: H144 laskevat, kuinka monta pelaajaa meillä olisi, kun B-sarakkeen solut saavat arvot. Ryhmän kokonaiskustannusten ja ennakoitujen kokonaispisteiden laskelmat ovat analogisia edellisiin laskelmiin ja niissä käytetään myös SUMPRODUCT-kaavaa (KS.solut I144 ja J144). Voit kokeilla poiminta joitakin pelaajia käsin (laittamalla 1: n joissakin soluissa sarakkeen B) nähdä, miten arvot solujen rivillä 144 muuttuu.

jos nyt avaat Excel-ratkaisijan ikkunan (Data-välilehden alla, jos ratkaisija-lisäosa on aktiivinen), näet, että minulla on jo koko malli valmiina sinua varten. Jos et ole koskaan käyttänyt Excel ratkaisija ennen, seuraava kaksiosainen video pääset alkuun sen: osa 1 ja osa 2.

objektiivinen solu on J144, ja sen haluamme maksimoida. Muuttujat (eli muuttuvat solut) ovat sarakkeen B pelaajavalinnat sekä flex-player-tyypin päätökset (solut D147:F147). Rajoitteet sanovat, että: (1) kunkin tyypin todellinen pelaajamäärä (C144:H144) on yhtä suuri kuin kunkin tyypin haluttu määrä (C146:H146), (2) joukkueen kokonaiskustannukset (I144) eivät ylitä budjettia (I146), (3) kolmen flex-pelaajan binäärimuuttujan yhteenlasku on 1 (D150 = F150), ja (4) kaikki ongelman muuttujat ovat binäärisiä. (Asetin tarvittavan määrän potkijoita solussa G146 nollaan, koska käytämme flex-player-vaihtoehtoa. Jos sinulla on sekä flex player että kicker, Kirjoita a 1 soluun G146.) Jos napsautat ”ratkaise” – nappia, näet, että paras vastaus on joukkue, joka maksaa tasan 50 000 dollaria ja jonka arvioitu kokonaispistearvo on 78,3. Sen flex-pelaaja päätyi RB: ksi.

tämä malli on sen verran pieni, että voin ratkaista sen Excel-ratkaisijan ilmaisella opiskelijaversiolla (joka tulee oletuksena millä tahansa toimisto-asennuksella). Jos sinulla sattuu olemaan enemmän pelaajia ja kokonaismuuttujamääräsi ylittää 200, vapaa ratkaisija ei toimi. Mutta älä vaivu epätoivoon! On olemassa suuri ratkaisija add-in Excel, joka on myös ilmainen ja ei ole kokorajoitusta. Sitä kutsutaan OpenSolver, ja se toimii täsmälleen sama setup minulla on täällä.

Articles

Vastaa

Sähköpostiosoitettasi ei julkaista.