cdu*_*gan 3 java algorithm scheduling
您建议我使用什么算法来解决以下问题?
我想解决根据日历可用性找到适合所有(或几乎所有)参与者的最佳时间段的问题.
我正在使用Java并希望能够为这些参与者安排会议.我将参与者的可用性数据分为半小时段.我想找到所有这些参与者都可以参加的时间.
可用性问题看起来像这样
|Participant | 09:00 | 09:30 | 10:00 | 10:30 | 11:00 | 11:30 |
|Person 1 | Free | Busy | **Free** | Free | Busy | Free |
|Person 2 | Free | Busy | **Free** | Free | Busy | Busy |
|Person 3 | Free | Busy | **Free** | Free | Busy | Busy |
|Person 4 | Free | Busy | **Free** | Free | Busy | Busy |
|Person 5 | Free | Busy | **Free** | Free | Busy | Free |
Run Code Online (Sandbox Code Playgroud)
我想选择适合每个人的时段.理想情况下,我希望算法选择至少一个选项.然后,我可以将约束应用于所选时间以找到最佳值.
可用性计划可以转换为位数组,其中Free为1,Busy为0.我在下面指定了一个示例作为指南:
|Participant | 09:00 | 09:30 | 10:00 | 10:30 | 11:00 | 11:30 |
|Person 1 | Free | Busy | Free | Free | Busy | Free |
Run Code Online (Sandbox Code Playgroud)
Person 1的位数组看起来像: 1 | 0 | 1 | 1 | 0 | 1
由于您以30分钟为增量设置周期,因此24小时时间范围内的位数组不会超过48.在Java中,长数据类型足以保存此位数组的值.将每个参与者的可用时隙转换为位数组.然后,将按位运算符AND应用于每个参与者的可用调度的位数组表示.结果位数组将是所有参与者的共同空闲时间.