A language for describing team needs (and a 3 round mock)

Discussion in 'Draft Zone' started by dwmyers, Feb 27, 2007.

  1. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    I've mentioned that I wrote something I call the Open Source Draft Simulator (http://draft-simul.sourceforge.net). I'm in the process of writing a Ruby version of this code (I have a working version now) and then documenting the new tool so that people can use it (this is the hard part ;)). In the process I've been thinking about draft engines and how to specify team needs in a way that is compact and yet flexible.

    A url with the team needs language is here:


    I've thought about things like saying you can "or" needs. This might be as simple as

    rule need
    needlist FS or CB DE or NG or ILB
    cond FS or CB round 1-7 high max 1 tag coverage
    cond DE or NG or ILB round 1-7 urgent max 1 tag pass-rush
    Anyway, yes, there is a Ruby version and with it, I can quickly work in new rules for describing the language. So I'm curious what new rules make sense.

    If you have ideas I would like to hear them.

    And yes, a 3 round draft from the Ruby Engine. The top 99 list comes from SN, with the exception of moving Brady Quinn into the top 10. The needs lists are originally based on Sports Inc's team needs, with some custom mods.

    This mock draft was made by rubysim.rb on 2007-02-27

    Round 1.

    1. Oakland Raiders select JaMarcus Russell, QB.
    2. Detroit Lions select Joe Thomas, OT.
    3. Cleveland Browns select Amobi Okoye, DT.
    4. Tampa Bay Buccaneers select Calvin Johnson, WR.
    5. Arizona Cardinals select Zach Miller, TE.
    6. Washington Redskins select Gaines Adams, DE.
    7. Minnesota Vikings select Brady Quinn, QB.
    8. Houston Texans select Adrian Peterson, RB.
    9. Miami Dolphins select Leon Hall, CB.
    10. Atlanta Falcons select Jamaal Anderson, DE.
    11. San Francisco 49ers select Paul Posluszny, OLB.
    12. Buffalo Bills select Alan Branch, DT.
    13. St Louis Rams select Justin Blalock, OG.
    14. Carolina Panthers select LaRon Landry, S.
    15. Pittsburgh Steelers select Aaron Ross, CB.
    16. Green Bay Packers select Reggie Nelson, S.
    17. Jacksonville Jaguars select Charles Johnson, DE.
    18. Cinncinnati Bengals select Greg Olsen, TE.
    19. Tennessee Titans select Lawrence Timmons, OLB.
    20. New York Giants select Ted Ginn Jr., WR.
    21. Denver Broncos select Brandon Meriweather, S.
    22. Dallas Cowboys select Jarvis Moss, DE.
    23. Kansas City Chiefs select DeMarcus Tyler, DT.
    24. New England Patriots select Kevin Kolb, QB.
    25. New York Jets select Patrick Willis, ILB.
    26. Philadelphia Eagles select Rufus Alexander, OLB.
    27. New Orleans Saints select Daymeion Hughes, CB.
    28. New England Patriots select Aaron Rouse, S.
    29. Baltimore Ravens select Tanard Jackson, CB.
    30. San Diego Chargers select Ben Grubbs, OG.
    31. Chicago Bears select Jon Beason, OLB.
    32. Indianapolis Colts select Dwayne Bowe, WR.

    Round 2.

    33. Oakland Raiders select Tony Ugoh, OT.
    34. Detroit Lions select Marcus McCauley, CB.
    35. Tampa Bay Buccaneers select Josh Beekman, C.
    36. Cleveland Browns select Antonio Pittman, RB.
    37. New York Jets select Marshawn Lynch, RB.
    38. Arizona Cardinals select Josh Wilson, CB.
    39. Houston Texans select Ryan Kalil, C.
    40. Miami Dolphins select Darrelle Revis, CB.
    41. Minnesota Vikings select Sidney Rice, WR.
    42. San Francisco 49ers select Justin Durant, ILB.
    43. Buffalo Bills select Levi Brown, OT.
    44. Atlanta Falcons select Kenny Irons, RB.
    45. Carolina Panthers select Ryan Harris, OT.
    46. Pittsburgh Steelers select Aundrae Allison, WR.
    47. Green Bay Packers select Anthony Gonzalez, WR.
    48. Jacksonville Jaguars select Dwayne Jarrett, WR.
    49. Cinncinnati Bengals select Victor Abiamiri, DE.
    50. Tennessee Titans select Ray McDonald, DT.
    51. New York Giants select Michael Bush, RB.
    52. St Louis Rams select Marcus Thomas, DT.
    53. Dallas Cowboys select Tony Franklin, CB.
    54. Kansas City Chiefs select Eric Wright, CB.
    55. Seattle Seahawks select Lyle Sendlein, C.
    56. Denver Broncos select Kenneth Darby, RB.
    57. Philadelphia Eagles select Adam Carriker, DE.
    58. New Orleans Saints select Ikaika Alama-Francis, DE.
    59. New York Jets select Brian Leonard, FB.
    60. New England Patriots select Craig Davis, WR.
    61. Baltimore Ravens select DeAndre Jackson, CB.
    62. San Diego Chargers select Arron Sears, OG.
    63. Chicago Bears select Kevin Payne, S.
    64. Tampa Bay Buccaneers select Anthony Spencer, DE.

    Round 3.

    65. Oakland Raiders select Jacoby Jones, WR.
    66. Detroit Lions select Ben Patrick, TE.
    67. Cleveland Browns select Baraka Atkins, DE.
    68. Tampa Bay Buccaneers select Michael Coe, CB.
    69. Arizona Cardinals select Joe Staley, OT.
    70. Denver Broncos select Brandon Jackson, RB.
    71. Miami Dolphins select David Irons, CB.
    72. Minnesota Vikings select Robert Meachem, WR.
    73. Houston Texans select Troy Smith, QB.
    74. Buffalo Bills select David Clowney, WR.
    75. Atlanta Falcons select LaMarr Woodley, DE.
    76. San Francisco 49ers select Stewart Bradley, OLB.
    77. Pittsburgh Steelers select Jason Hill, WR.
    78. Green Bay Packers select Dashon Goldson, S.
    79. Jacksonville Jaguars select Jay Moore, DE.
    80. Tennessee Titans select Juwan Simpson, OLB.
    81. New York Giants select Jemalle Cornelius, WR.
    82. St Louis Rams select Earl Everett, ILB.
    83. Carolina Panthers select John Wendling, S.
    84. Kansas City Chiefs select Paul Williams, WR.
    85. Seattle Seahawks select David Harris, ILB.
    86. Denver Broncos select Eric Weddle, S.
    87. Dallas Cowboys select H.B. Blades, ILB.
    88. New Orleans Saints select Daniel Bazuin, DE.
    89. New York Jets select Mike Jones, OG.
    90. Philadelphia Eagles select Quentin Moses, DE.
    91. New England Patriots select Michael Johnson, S.
    92. Baltimore Ravens select John Talley, CB.
    93. San Diego Chargers select James Jones, WR.
    94. Chicago Bears select Melvin Bullitt, S.
    95. Indianapolis Colts select Buster Davis, ILB.
  2. dallasfaniac

    dallasfaniac Active Member

    4,196 Messages
    1 Likes Received
    You know, I trie to respond three seperate times and ended up getting very long winded because I have created a drafting program myself and have a ton of ideas that I am in the process of including into mine.

    First off, mine is built upon a database that tracks as much info about the players as possible for different granularities of statistical analysis. I won't get into it at all but just thought I would throw it out there.

    Anyway, what you have is similar to what I have, a ranking of need, how much they would reach, and how many they would take.

    I have gone in a little further, breaking down rankings for secondary selections so that they may take precedence over primary selections.

    I have also worked into the calculation the tier levels of each position. For instance, in a draft that has very little DEs but a ton of WRs the calculation may devalue the WR position if a player is slightly better than a DE. So for instance, a team had extreme need of WR and DE and were drafting in the 26 slot. A WR is ranked 22nd but the DE is ranked 30th. The DE is the last at his tier and the dropoff is huge(Maybe the next DE doesn't go till 3rd round), but the WR is the top of his tier with many other good WRs. The program would take the DE on most occasions.

    Anyway, I can see I am starting to get longwinded again. Just wanted to comment that you are doing a good job and these may be some suggestions that you have already thought of.
  3. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    The biggest problem with making a subtle, sophisticated drafting engine is that it can't imitate a doofus. How do you explain the Jones factor in 2001 with an engine acutely aware of relative value?

    A smart engine is neat, and certainly desirable if what you're trying to do is optimize value on draft day. But what you really want to do is draft like the pro teams do. Some draft well, some draft like Jerry on way too many coffee beans.

    The other thing about my code is that it's not football specific. It'll do any sport. The setup I'm going to provide will handle the NFL, the NBA, and major league baseball.

    By the way, the zip I'll be giving away is tiny. I'm close to having something to hand out to the world and the whole thing (including support code) lives in less than 30kb. The script itself is 17k.

    Ruby is -awesome-.

    I need to do some Linux testing (I developed in Win32; it ran on Linux with small tweaks, but I want it to run out of the box), and it'll be on Sourceforge. If you all want copies in advance, let me know by PM, leave me an email address that will accept zip attachments.

  4. dallasfaniac

    dallasfaniac Active Member

    4,196 Messages
    1 Likes Received
    I think we can emulate a doofus, just allow them to reach for every pick based upon need, but make the needs different then they actually are.

    Do you plan on marketing yours to the sports arena or just open source it for anyone?
  5. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    I open sourced it yesterday. If I had any way to talk to a NFL scout or scouting department, I'd probably try to sell them on the code's usefulness. But as of now, I don't.

    If you want to follow the project without downloading anything, the project url is here:


    The code is available here:


    A "one click" Ruby installer is here:


    There is a QUICKSTART guide in the zip, if you follow that you should have running versions of a football (NFL), a baseball (MLB), and a basketball (NBA) draft. Of course, you're drafting the best players of all time in my examples, so you'll have to edit to taste.

  6. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    Tags have been implemented. negated tags have been implemented. There have been some bug fixes. A new version (rubysim 1.05) has been released.

    The new (expanded) drafting language is described here:


  7. Hiero

    Hiero New Member

    3,075 Messages
    0 Likes Received
    personally i think the mock totally sucks and would be pretty unhappy if it went that way. there are also a ton of inconsistencies. Levi Brown and Lynch are surefirst 1st rders. Kevin Kolb is incredibly far frm being afirst rder. Ryan Harris is going to be completely worthless in the NFL. Meachem is probably a first rder and 2nd rder at worst.

    we could do so much better than the picks u gave us in this.
    EG: 1st Levi Brown/Sidney Rice/McCauley
    2nd Sears/Staley/Meachem/Hill
    3rd a lot of people better than an incredibly unnecessary ILB who is a midget.
  8. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    *I* didn't give you anything. What *I* did was take Scout's Inc need lists and the War Room's top player lists and run a calculation that gives you an idea of who *might* be drafted at a single place and time. It's not dependent on anything *I* did other than put the information together in one place.

    Now, if you disagree with the calculation, that's fine. Just understand, it is a calculation, and if you download a version of it and get your own top 100 list and set your own needs then you can run it however you want. Hell, you can rewite the rules engine to always select OTs for Dallas in the first round, no matter how much the pick sucks.

    The reason I like it is that fans cheat; they always do, they can't help but make things easy for their own team. I've been in one large participatory mock draft, mostly with a bunch of Lions fans. Well, the Lions drafted exceptionally well and no one else did. It's simple, you work hardest for the team you care for, and you suck at drafting honestly for your rivals.

    The program follows its rules religiously. It ultimately gives you a more honest mock. The strength of it is *not* in telling you exactly who you might draft. The strength of a mock engine is:

    (a) giving you an idea who may be drafted in the area you're drafting in

    (b) by playing with draft rules and what if-ing, you can rapidly see logical consequences ripple through the draft.

    In the 2001 version of this program, after the big trade between Atlanta and San Diego, it correctly predicted that Drew Brees would fall into the second round and be picked by San Diego there. And it did at almost as soon as I could type in the trade results.

    David Myers.
  9. Biggems

    Biggems White and Nerdy

    13,474 Messages
    1,227 Likes Received
    i couldnt find him on the list..........where was Michael Griffith?
  10. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    There isn't a Michael Griffith in the top 100 list used in that mock.
  11. L-O-Jete

    L-O-Jete Well-Known Member

    1,003 Messages
    49 Likes Received
    I really like your idea, but now your partial to what your "sources" per "need" and "top 100" say, would it be possible to feed various "sources" to avg. it out?
  12. dwmyers

    dwmyers Well-Known Member

    2,068 Messages
    69 Likes Received
    My old program works well with averaged data sets, but the argument you get when you use averaged data sets is that some of the people you take data from are idiots.

    That is, unless you're going to ask me to buy hundreds of dollars of data just to satisfy someone's virtual "urge".

    One factor in whether I could even get good data is that until today, I was between jobs. I needed that money for other things.

  13. L-O-Jete

    L-O-Jete Well-Known Member

    1,003 Messages
    49 Likes Received
    Weeeeellllllllllll... so are many GM's so that might make it more accurate in a bizarre way:laugh2:

    I would never ask something like that of you or anyone else, this is only for fun and should be cheap (as in whatever you find in the internet for free), I can think of many other (better) ways to waste hundreds of dollars for fun as well and congrats on the new job.

Share This Page