Bir sorunla karşı karşıyayım, nasıl yaklaşacağımdan emin değilim. Her biri belirli iş kısıtlamaları olan (bazıları kişisel, bazıları ortak) çalışanlar için bir takvim oluşturmalıyım.
Ne ile çalışıyorum:
- Doktorum var
- Her doktor haftada 5 gün çalışmak zorundadır.
- Her doktorun haftada 1 gece çalışması gerekir.
- Her doktor diğer doktorlara kıyasla eşit miktarda gece çalışmak zorundadır (veya mümkün olduğunca yakın)
- Her doktor, diğer doktorlara kıyasla eşit miktarda perşembe gecesi ve pazar gecesi çalışmalıdır (veya mümkün olduğunca yakın)
- Bazı doktorlar belirli günlerde / gecelerde çalışamaz (kullanıcı tarafından girilir)
- Bazı doktorlar belirli günler / geceler çalışmak ister (kullanıcı tarafından girilir)
- Bazı doktorlar belirli günler / geceler çalışmak istemez (kullanıcı tarafından girilir)
Söz konusu kullanıcı, takvimle ilgilenen kişidir, otomatik olarak tüm kısıtlamalara uyan bir takvim oluşturacak bir çözüm oluşturmaya çalışıyorum. Çözüm, sadece her doktor için "doktor ekle" ve "kısıtlamalar ekle", sonra "takvim oluştur" düğmesi olan büyük bir ayar girişidir. Bu kullanıcı için gerçekten basit.
Benim sorunum :
Asıl planlamayı nasıl yapacağımdan emin değilim, Sinir Ağları, Genetik Algoritmalar ve benzerleri hakkında okudum ve hepsi de doğru bir çözüm gibi gözüküyor ama aslında tam olarak değil.
GA'lara baktığımda, belirli bir popülasyonla (benim sorunum) bir çözüm bulmaya çalışıyorlar, ancak başlangıç popülasyonu zaten daha sonra optimize edilecek olan belirli kısıtlamalara uymak zorunda. Bu durumda, başlangıç popülasyonum zaten bir çözümdür. "Optimize edilmiş" olmasına ihtiyacım yok. Tek bir kişinin arka arkaya 3 pazartesi gecesi çalışması, doğru olması ve başkalarının aynı miktarda çalışması, diğerlerinin de bir noktada 3 pazartesi gecesi çalışacağı anlamına gelmesi önemli değil. Bu benim sorunumun zaten bir GA'nın başlangıç noktasıyla çözüldüğü için GA'ların benim için çok "gelişmiş" olduğunu düşündürüyor.
Fakat yine de, GA’lar gerçekten bunun için yaratılmış gibi gözüküyor, bu yüzden doğru bir şekilde anlamıyor olabilir miyim?
Her neyse, hiç GA kullanmadım (ya da sinir ağları ya da benzeri şeyler) kullanmadığımdan, bunun gibi bir öğrenme eğrisine girmeden önce doğru yaklaşıma gittiğimden emin olmak isterim.
Benim sorum :
Benimki gibi bir sorun için iyi bir yaklaşım / algoritma / teknik nedir sizce? Gaz? Nöral ağlar? Tamamen farklı bir şey var mı?
Tüm kulaklarım ve gerekirse daha fazla ayrıntıya açığım ama sanırım kendimi açıkça anladım :)