会微积分的喵

我走得很慢,但我从不后退

说实话,作为一个打了十几年游戏的老玩家,我一直对”匹配系统是怎么知道我很强/很菜”这件事特别好奇。

后来深入了解才发现,原来这些看似玄学的分数背后,其实是一套套精妙的数学模型。今天就来聊聊几种主流的能力分系统,看看它们到底是怎么工作的。

阅读全文 »

说实话,作为一个打了十几年游戏的老玩家,我一直对”匹配系统是怎么知道我很强/很菜”这件事特别好奇。

后来深入了解才发现,原来这些看似玄学的分数背后,其实是一套套精妙的数学模型。今天就来聊聊几种主流的能力分系统,看看它们到底是怎么工作的。

阅读全文 »

一个常见的调度问题是作业车间调度问题,多个作业在多台机器上处理。每个作业由一系列任务组成,这些任务必须按照给定的顺序执行,并且每个任务必须在特定的机器上处理。例如,作业可以是制造单一的消费品,如汽车。问题是如何安排机器上的任务,以最小化调度的长度,即所有任务完成所需的时间。

作业车间问题由几个约束条件:

  • 在作业的前一个任务完成之前,作业的任何任务不能启动
  • 一台机器一次自能做一项任务
  • 一项任务,一旦开始,必须运行到完成

例子

下面是一个作业车间调度问题的简单例子,其中每个作业都用一对数字(m, p)来表示,其中m是必须处理该任务的机器编号,p是该任务的处理时间。(作业和机器的编号从0开始)

  • job 0 = [(0, 3), (1, 2), (2, 2)]
  • job 1 = [(0, 2), (2, 1), (1, 4)]
  • job 2 = [(1, 4), (2, 3)]
阅读全文 »

OR-Tools是用c++编写的,但也可以在Python、Java或C#中使用它。下面主要介绍使用Python创建和运行OR-Tools程序。

以下部分将帮助您开始使用Python的OR-Tools:

  • 什么是优化问题
  • 使用Python解决优化问题
  • 更多使用Python的例子
  • 确定你希望解决的问题类型
阅读全文 »

OR-Tools是用于组合优化的开源软件,寻求从大量可能的解决方案中找到问题的最佳解决方案。下面是一些使用OR-Tools解决的问题例子:

  • 车辆路径规划:在给定的约束条件下(例如,“卡车不能装载超过20000磅”或“所有的递送必须在两个小时内
    完成”),为提取和递送包裹的车队找到最佳路线。
  • 调度问题:在一组固定的机器或其他资源上,为一组复杂的任务找到最佳调度,其中一些任务需要在其他任务之前执行。
  • 装箱问题:将尽可能多的不同尺寸的物品装入数量固定的箱子中,使得每个箱子容量最大。

在大多数情况下,像上述问题有大量可能的解决方案,太多了以至于计算机无法全部搜索它们。为了解决这个问题,OR-Tools使用最先进的算法来缩小搜索集合,以便找到一个最优(或接近最优)的解决方案。

阅读全文 »

0x01 Redis四种模式

这里的模式主要是说的Redis Server的部署模式,有四种:单机模式、主从模式、哨兵模式、集群模式

这四种模式的详细介绍可以参考这篇文章:https://juejin.cn/post/6844904191236767751

主从模式的Redis数据库,单点连接主节点。这种模式主要如果主节点挂掉,从库会切换为主节点,但是主节点IP已经变化,应用服务需要修改IP地址,重新发布。

建议哨兵模式,这种主要连接的是哨兵节点(一个或多个组成),访问redis集群的数据都是通过哨兵集群的,redis集群出现问题,应用服务不用更改访问地址

阅读全文 »

0x01 源于线上Bug

某天下午正在愉快的写着代码,突然某服务客户端报错,看了下报错详细信息,是报的超时错误,客户端设置的连接超时时间是5s,一般不可能报错的,开始查日志,定位问题…

从服务记录的日志来看,是服务里面会请求模型服务,这块耗时超过了5s才返回。整个服务是使用的gunicorn + flask的方式,部署在公司私有云上,请求模型服务使用的是python requests包。

这块代码如下(经过一定的简化):

阅读全文 »
0%