求解定界调度的方法

本文关键字:方法 调度 | 更新日期: 2023-09-27 17:49:54

我正面临一个问题,我很难决定/想出一个解决问题的方法。问题如下:

给定要打N个电话,按最大次数安排。

知道信息:

  • 待机数
  • 号码主叫人(通过电话进行通话的人)
  • 通话类型(提醒、计费、协商等)
  • 通话类型预估时长(提醒1分钟、计费3分钟、协商15分钟等)
  • 待机数
  • 给定呼叫的理想日期
  • 给定呼叫的"最小"日期(不能在…之前发生)
  • 给定呼叫的"最大"日期(不能在…之后发生)
  • 一天只有8小时
  • 规则:

  • 在"最低"日期之前或"最高"日期之后不能打电话
  • 提醒呼叫放置奖励1分,提醒呼叫错过奖励-2分
  • 计费呼叫接通奖励6分,计费呼叫未接奖励-9分
  • 协商呼出奖励20分,协商呼漏奖励-25分
  • 一个电话给约翰必须放置的第一个人曾经打电话给他。请注意,它不是必须的,但是,调用将获得额外的积分,如果你这样做…

    我对人工智能有一点了解,我可以认识到这是一个适合这门课的问题,但我只是不知道该采取哪种方法…我应该使用神经网络吗?图搜索?

    PS:这不是一个学术问题。这是我面临的现实问题。
    PS2:指向系统仍在创建中…这里采样的点不是真实的…
    PS3:生成的算法可以执行多次(批处理作业风格),也可以根据性能在线解决…
    PS4:我的合同规定我将根据:(我拨打的电话数量)+(比率*电话持续时间)向客户收费,但有一个关于服务质量的条款,只拨打提醒电话对我来说不好,因为即使被提醒,人们仍然忘记参加他们的约会……这会降低我提供的服务的"质量"……我还不知道确切的数字

    求解定界调度的方法

    这对AI来说似乎不是问题。

    如果是我,我会创建一组按优先级排序的规则。然后开始填写来电者的日程表。

    可能规则之一是首先分配持续时间最短的呼叫类型(以满足"最大呼叫数"标准)。

    这听起来越来越像一个背包问题,你可以用通话时长和通话点来代替重量和价格。

    这只是一个非常基本的答案,但您可以尝试"蛮力"一个最佳解决方案:

    • 使用组合库(它也在NuGet中)生成给定人在给定时间段内(例如,展望未来一周)的呼叫的每种排列。
    • 对于每个排列,按估计持续时间将呼叫分组为8小时块,并为其分配日期。
    • 遍历块-如果您太早到达调用,则丢弃该排列。否则,根据是否在结束日期之前进行呼叫来添加或减去点数。将总分存储为该排列的分数。
    • 选择得分最高的排列。