ood的5C解题法(2)----预定类

预定类

以餐厅(预定座位)为例子讲解

管理类解题步骤

  • Clarify
    • What
      1. 桌子的规格有什么不一样?
      2. 吧台里party有什么区别?
    • How
      1. 怎么样收费?
      2. 是否支持预约?暂时不支持
      3. 是否支持外卖?如果支持,每个order就要区分一下是Dine-in还是Dine-out。暂时不支持
  • Core Object
    • 列出core object
      Party->Restaurant->Table->Order->Meal
    • 考虑object之间的对应关系
      将Table与Meal的对应关系存放在Order中
      在这里插入图片描述
  • Use Case:以餐厅为主体进行思考
    • Find table
    • Take Order
    • Checkout
  • Class
    • Find table
      1. Restaurant find an available table, an change the table to be unavailable
      2. 此处支持拼桌吗?不支持,因为table是boolean类型,只能标志两种状态。可以在party中加入int size,并将table改为int类型,当被party占用了就减去party的大小
    • Take Order
      1. Restaurant takes an order
    • Checkout
      1. Restaurant checks out a table/order, mark the table available again
      2. calculate order price
        在这里插入图片描述

将管理类修改为预定类

思路

  • What
    • 考虑预定的东西。比如预定餐厅,要考虑预定的座位/人数
  • Use Case:主要有以下三个情况:Search / Select / Cancel
    • 流程
      Search criteria --input–> Search() --return–> List<Result> ----> Select() --result–> Receipt

修改

  • search criteria
    1. 人数:假设无拼桌,桌子一样大,不会有超过桌子大小的人数
    2. 日期:是否允许预定多日后的?允许
    3. 时间:是否所有时间都允许预定?24/7
  • select
    1. 可以预定:直接进入confirm阶段
    2. 不能预定:Throw exception / Show message
    3. Pair<Table, Timeslot> findTableForReservation(Time slot) throws NoTableForReservationException
    4. void confirmReservation(Pair<Table, Timeslot> reservation)
  • cancel
    1. restaurant takes a cancel reservation request, and ask the table to free that timeslot.

结果

Table和Party为静态属性,Order为动态属性
在这里插入图片描述

其他问题

  1. how to know if a table is open for reservation for a timesslot?
    预定时参数不写时间点timeSlot,而改为时间段timePeriod

LRU Cache

最近最少使用到的(least recently used),缓存每次都淘汰最早一次使用的记录。
在这里插入图片描述
使用hash表保证O(1)的时间复杂度内就能访问到该元素,使用双向链表维护他们最早使用的元素,保证每次弹出时都是队头或队尾的元素。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Out-of-distribution是指在模型训练时未曾出现过的数据分布,也称为“未知数据”。在模型面对未知数据时,其预测结果可能会出现误差或不确定性。因此,对于模型的鲁棒性和泛化能力的提升,需要对out-of-distribution数据进行有效的识别和处理。 ### 回答2: out-of-distribution(OoD)是指模型在测试阶段遇到了其训练数据集之外的样本或类别。当模型只使用特定的数据集进行训练时,它可能无处理那些与训练数据不同的输入。这些新的样本可能是在颜色、形状、大小等方面与训练数据有所不同,也可能属于未在训练数据中出现过的类别。 遇到OoD样本的问题是模型的泛化能力不足。模型在训练数据中表示和学习的特征可能过于特定,无推广到训练数据集之外的样本。这可能导致模型的预测不准确或不可靠。 为了解决OoD问题,有几种方可以采取。一种常见的方是收集更多来自OoD分布的样本,并将其添加到训练数据中,以使模型能够更好地学习如何处理这些新样本。另一种方是使用一些先验知识或规则,对OoD样本进行检测和筛选,以避免对其进行错误预测。 同时,一些研究者提出了一些用于检测OoD样本的新颖性评估方。这些方通过利用模型在训练样本和OoD样本上的输出差异来判断一个样本是否属于OoD类别。这种方可以帮助我们识别OoD样本,并采取相应的措施,以提高模型的泛化性能。 综上所述,解决out-of-distribution问题是训练一个具有较强泛化能力的模型的重要步骤。只有当模型能够有效处理新的样本和未见过的类别时,才能提高模型的可靠性和适用性。 ### 回答3: "out-of-distribution"是指数据集中没有包含的数据样本或样本类别。在机器学习和深度学习中,数据集通常用于训练和测试模型的性能。然而,在现实世界中,我们会遇到无准确分类的新数据,这些数据就属于"out-of-distribution"。这可能是因为这些数据具有与训练数据不同的特征,或者因为数据集的覆盖范围有限。 "out-of-distribution"的出现可能会对模型的性能和鲁棒性产生负面影响。由于模型没有前面没有见过这些类型的数据,它可能会对其进行错误的分类或给出不确定的预测结果。这种情况在实际应用中特别重要,因为我们希望模型能够在各种不同的情况下表现得可靠和准确。 为了解决"out-of-distribution"问题,一种常见的方是通过收集更多具有代表性的训练数据来增加数据集的覆盖范围。这样模型可以更好地学习不同类型的数据特征,并提高对"out-of-distribution"数据的泛化能力。另外,使用先进的模型架构和优化算也可以增强模型的鲁棒性。 除了增加训练数据和改进模型架构外,还可以使用一些检测方来识别"out-of-distribution"的样本。这些方可以根据模型的置信度、预测熵或数据分布等特征来判断样本是否属于训练集之外的数据。这些方可以帮助我们发现并处理那些可能造成模型失效的"out-of-distribution"数据。 总之,"out-of-distribution"是指在训练数据之外的数据样本或样本类别。对于机器学习和深度学习任务,了解和解决"out-of-distribution"问题是提高模型性能和鲁棒性的关键。通过增加训练数据、改进模型架构和使用检测方,我们可以减少"out-of-distribution"带来的负面影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值