2017-09-11 35 views
1

我是一名大學生,他是一名志願者,擔任當地社區服務組織的項目經理。我工作的一大部分是將志願者時間表(通過文本和電子郵件提交給我)與tutee時間表(由教師通過Google表單提交)相匹配。在過去的兩年裏,我一直在使用excel表格和顏色編碼手動匹配所需的時間段和志願者的可用性。到目前爲止,這很容易,因爲我收到了相對較少的導師請求和志願者註冊。限制優化使用 - 爲社區服務組織創建最佳志願者計劃

在過去兩個月裏,我一直努力在我管理的學校發展輔導計劃。這個學期,我收到了超過25名學生的18份申請表。爲許多人手工匹配志願者日程安排需要幾個小時(如果不是幾天的話)完成。鑑於我的工作量,我認爲必須有更好的方法來解決這個問題。

我很好奇,如果你們中的任何一個人都受限制的編程經驗可以幫助我(1)解決我的日程安排問題或(2)推薦可以提供幫助的軟件。下面我將更詳細地概述調度過程,並列出調度轉移時必須考慮的約束條件。

調度過程

我問我的志願者給我自己的週一 - 週四可用性的格式像這樣:

L:9:30 - 12:00 T:2:00 - 4:30 W:12:00 - 1:30 Th:10:00 - 11:30

學校是15-20分鐘的車程,所以我依靠'司機'來拼車其他志願者到他們1小時的班次。如果志願者有一輛車並且願意拼車,那麼我試着讓至少兩名其他志願者與該司機享有同樣的可用性(鑑於該車有足夠的空間,並且教師已經在該時段請求了導師)。

然後,我祈禱老師已經要求該導盲車的時間段的導師。如果沒有,那麼拼車並不好,我不得不手動想出另一種解決方案。

的制約因素和變量

顯然,有一些制約因素和變量進行調度時發揮作用。我將列出儘可能多的我可以如下:

  • 是導師'司機'?
  • 如果導師是'司機',他有多少個座位?
  • 駕駛員的可用性是否與任何請求的時間段匹配?
  • 是否有其他非駕駛導師與駕駛員具有相同的可用性? (即有沒有人可以與司機拼車)
  • 難道所有在拼車的志願者都有一個可以輔導的學生嗎?
  • 老師是否要求個人或小組輔導(即一個或多個學生的一位或多位導師)?
  • 如果是,請教老師請求多少名導師?
  • 記住,一個志願者可以輔導多個學生

這是約束和變量的小單子,我可以拿出了我的頭頂。

那麼任何人都可以提供解決這個調度問題?沒有約束編程知識的人能否使用OptaPlanner來解決這個問題?

感謝您給予閱讀並提供建議。

回答

1

您可以使用OptaPlanner來解決這個問題,但感覺像Minizinc可能是一個更好的選擇。我的觀點是,在Minizinc的情況下,您描述了所需的屬性的一個解決方案,而不是實施工作流程和算法來管理變量,約束,輸入數據的解析器等,在OptaPlanner的情況下。

如果不具備約束滿足的經驗,它可能更簡單 - 只需在文本配置文件中描述允許/不允許的配置並運行求解器即可。你甚至可以提供一個簡單的GUI來生成輸入數據。

+0

船長特倫基,謝謝你的迴應。假設我必須在週三之前完成這些工作,並且只需要幾門介紹性編程課程(基本上沒有編程經驗)。您認爲我需要多長時間才能獲得解決方案?另外,看到這個由Geoffrey De Smet編寫的令人驚歎的程序(https://www.youtube.com/watch?v=sOWC4qrXxFk),它使用OpenShift。我想知道是否可以使用此預製程序。 – Perry

+0

@Perry我對OpenSwift瞭解不多。從我的角度來看,Minizinc比OptaPlannet簡單多了,特別是如果你不熟悉編程。有沒有經驗可以在幾天內解決這個問題 - 我不知道,這取決於很多事情。 – CaptainTrunky