簡體   English   中英

基於歷史的時間調度算法

[英]Time scheduling algorithm based on history

我一直在嘗試解決我以前使用過的應用程序的調度問題。 這個問題如下...

示例場景:

ContactA在后台運行Our App。 他剛乘車去上下班的家。 因此,他處於@Evening上下班狀態。

他的“代客”設置指出,他只希望在@Evening上下班時處於通知狀態(不發送短信或電子郵件提醒)時撥打電話。

一旦我們的應用程序看到ContactA處於@Evening上下班狀態,並且可以撥打電話,該應用程序將掃描其所有聯系人,以查找他指定為首選呼叫的任何聯系人。

該算法在他的座席列表中為ContactA識別3個潛在匹配項:

  • 聯系人X
  • 聯絡人
  • 聯絡人Z

如何確定在@Evening上下班時提示ContactA與之聯系的人?

首先,它應該查看這三個應用程序是否也都在使用該應用程序。 例如,它標識ContactXContactY都在使用該應用程序,但ContactZ沒有。

因此,然后將進一步查看ContactXContactY,以查看它們當前是否處於接受電話的代客狀態。

如果兩者都是,它將查看其中是否是一個收藏夾。 如果是這樣,則該人具有優先權。

如果兩者都不是,則可以回顧歷史記錄以查看最晚聯系的歷史,從而選擇最先聯系的人。

如果ContactXContactY現在都顯示為“不可用”,則基於其App Valet設置,該應用可以選擇提示我致電ContactZ

提前致謝

偽代碼(您不需要任何特定的語言,但這是您的算法在代碼中的簡單實現)。 contactSpecified將是“指定為首選呼叫”的所有聯系人的數組。

var contactsToCall[];
//Add all contacts that are using the app and are available
foreach(contact in contactsSepcified) {
    if(contact.isUsingApp() && contact.isAvailable()) {
        contactsToCall.add(contact);
    }
}

//Add all contacts not using the app if none of the app users have been added
if(contactsToCall.size() == 0) {
    foreach(contact in contactsSepcified) {
        if(!contact.isUsingApp()) {
            contactsToCall.add(contact);
        }
    }
}

foreach(contact in conctactsToCall) {
    if(conctact.isFavorite()) {
        call(contact);
        return;
    }
}

suggestContacts(contactsToCall);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM