使用线性规划评估(历史最优)Fantasy Feams

我是一名程序员和一级方程式赛车迷。当我开始玩f1的梦幻联赛时,我的心思自然就转向了算法。

f1 奇幻游戏的目标是挑选 5 名车手和 2 支车队,同时保持价格上限,并根据比赛表现获得最高分。这听起来像是一个相当传统的有约束的计算机科学优化问题,对吧?

更准确地说,对于任何历史比赛窗口,我们都可以使用线性规划来找到最佳团队。严格来说,这个解决方案是游戏的简化版本(真正的游戏允许你每周对你的团队进行更改,并且有一些通配符因素),但仍然是一个有用的起点。

整合我们的能力需要最少的依赖:

数据:我们从优秀的 f1 fantasy tools 网站获取积分/价格数据线性编程库:我们使用 glpk.js,它是旧的值得信赖的 glpk 求解器的 javascript/webassembly 端口平台:我们使用 github 页面,我们的代码在 mit 许可证下开源,可以在此处找到

当前功能有一个简单的界面,如屏幕截图所示。

使用线性规划评估(历史最优)Fantasy Feams

该功能的关键是线性程序的幕后构造,然后将其输入浏览器中运行的 glpk.js 求解器。这是我们的工具构建的实际线性程序(省略了许多行)。

{    "name": "LP",    "objective": {        "direction": 2,        "name": "obj",        "vars": [            {                "name": "VER",                "coef": 593            },            {                "name": "OCO",                "coef": 112            },   [...18 additional drivers, omitted for brevity]            {                "name": "AST",                "coef": 360            },   [...9 additional teams, omitted for brevity]        ]    },    "subjectTo": [        {            "name": "cons1",            "vars": [                {                    "name": "VER",                    "coef": 30                },                {                    "name": "NOR",                    "coef": 23                },[...18 additional drivers, omitted for brevity]                {                    "name": "MCL",                    "coef": 23.2                },[...9 additional teams, omitted for brevity]            ],            "bnds": {                "type": 3,                "ub": 100,                "lb": 0            }        },        {            "name": "cons2",            "vars": [                {                    "name": "VER",                    "coef": 1                },                {                    "name": "OCO",                    "coef": 1                },[...18 additional drivers, omitted for brevity]            ],            "bnds": {                "type": 5,                "ub": 5,                "lb": 5            }        },        {            "name": "cons3",            "vars": [                {                    "name": "RED",                    "coef": 1                },[...9 additional teams, omitted for brevity]Show quoted text[...18 additional drivers, omitted for brevity]        {            "name": "cons29",            "vars": [                {                    "name": "FER",                    "coef": 1                }            ],            "bnds": {                "type": 4,                "ub": 1,                "lb": 0            }        },[...9 additional teams, omitted for brevity]    ],    "generals": [        "VER",        "OCO",[...18 additional drivers, omitted for brevity]        "ALP",[...9 additional teams, omitted for brevity]    ]}

登录后复制

对于那些不熟悉 f1 命名口语的人来说,车手是通过姓氏的前三个字母来称呼的(例如 ver 是 max verstappen),每个车队都有一个 3 个字母的助记符(例如 ast 是阿斯顿·马丁赛车运动)。

因此,在这些线性程序中,每个车手都有一个变量(以他们的三个字母代码命名),每个团队都有一个变量,该变量的值必须为 1(在您的幻想团队中)或 0(不在您的幻想中)团队)。而线性规划的目标是最大化积分,受限于价格总和不超过预算阈值,还受限于车手变量总和为5,车队变量总和为2。非常简单!

一个细微差别是,你可以选择一名“2x 车手”,他的得分是他们当周获得的积分的两倍。为了适应这种细微差别,我们生成 20 个单独的线性程序(每个程序采用不同的驱动程序作为 2x),并在这 20 个程序中的每一个上运行 glpk.js,以找到具有最大分数的程序。

免责声明:我们与一级方程式(或其任何公司或品牌)没有任何隶属关系。此功能的作者只是一个喜欢玩奇幻游戏的粉丝。所提供的信息不保证其准确性,您需自行承担使用风险。’

以上就是使用线性规划评估(历史最优)Fantasy Feams的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2648697.html

(0)
上一篇 2025年3月7日 08:16:20
下一篇 2025年3月7日 08:16:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用 TypeScript 构建可测试的 CloudFront 函数

    aws cloudfront functions 是一个强大的工具,用于在边缘运行轻量级 javascript 代码,允许您操作请求和响应。 但是,aws 要求这些函数用 vanilla javascript 编写,这对于喜欢 typesc…

    2025年3月7日
    200
  • GitHub 魔豆

    两个头,一个提交 Commitizen 版 如果您所在的团队非常注重遵循提交标准,您可能听说过commitizen。 这个工具可以帮助您根据传统标准编写提交。因为谁有耐心记住所有这些规则和标准呢? 这些提交在两个或多个开发人员之间共享提交的…

    2025年3月7日
    200
  • NgSysVAutomated Svelte Pre-render Builds

    该帖子系列已在 ngatesystems.com 上建立索引。您还可以在那里找到超级有用的关键字搜索工具。 最后评论:24 年 11 月 一、简介 post 4.2 提出了预渲染网页的概念。这个想法是,如果一个页面从不改变(或者至少不经常改…

    2025年3月7日
    200
  • 带有 UI 的 Github 图像托管 API

    该项目是使用 github 存储库作为图像托管服务的概念证明。该 api 允许用户从存储库上传、列出和删除图像文件,提供了一个简单的界面来管理 github 上托管的文件。 github:masfana/github-image-bucke…

    2025年3月7日
    200
  • Chunk-Busters:不要跨越溪流!

    ⚠️ 如果您有光敏性,您可能想跳过此操作。请参阅下面的静态图片,这些灯将开始快速闪烁! 互联网如何运作? 记住标题……我们在这里讨论的是流。 我可以谈论协议、数据包、排序、acks 和 nacks…但我们在这里谈论流,正如你可能猜对了(我相…

    编程技术 2025年3月7日
    200
  • 在 Nodejs 中进行身份验证的正确方法 [uide]

    身份验证是后端开发中最关键但经常被误解的方面之一。由于其复杂性,开发人员经常转向第三方解决方案,例如 auth0 或 supabase。虽然这些都是优秀的工具,但构建您自己的身份验证系统可以提供更大的灵活性和控制力。 在本指南中,您将了解如…

    2025年3月7日
    200
  • TIL 如何使用 JS 查看 GitLab 上的整个提交列

    这是很久以前的事了,但我将其添加到这里作为自我注释。 每当你在 gitlab 上打开 ci/cd > pipelines 时,你可能经常会看到这样的东西: 您可以通过在浏览器上打开开发控制台并更改一些 css 来修复样式来查看整个内容…

    2025年3月7日 编程技术
    200
  • Npm 检查并更新/删除包(如果需要)

    对于在我们的项目中处理保持最新依赖项的一种方法是 npm outdated 命令,它将显示已安装软件包的列表及其当前版本和最新可用版本。 为了更新 package.json 中列出的依赖项,可以使用 npm update 命令。 在这篇文章…

    2025年3月7日
    200
  • 了解 JavaScript 中的原型继承和 ESlasses

    javascript 具有与大多数传统 oop 语言不同的继承机制。原型是主要焦点,而 es6 类提供了更现代的方法。让我们看看 es6 类如何提高可读性和实用性以及原型继承如何运作。 1. 原型:继承的基础 javascript 中的每个…

    2025年3月7日
    200
  • 如何查看js文件

    可以通过以下几种方法查看 JavaScript 文件:使用浏览器开发者工具(Chrome、Firefox、Edge)查看源代码使用专用编辑器通过网络请求使用代码搜索引擎 如何查看 JavaScript 文件 了解 JavaScript 代码…

    2025年3月7日
    200

发表回复

登录后才能评论