Kafamdaki Algoritma (Otomatik Sayı Atma Ve Fazlası)
-
Arkadaşlar kafamda küçük bir iş için bir algoritma oluşturdum ve bu algoritma için ihtiyacım olan şeyi size anlatıcam fakat ondan önce program şöyle başlıyor. Kafanızda biraz oluşsun diye gösteri yapıyorum:
Merhaba kaç farklı iş türünüz var?
-kullanıcı sayıyı girer, mesela 5
İş sayısına göre her işi yapmak için gerekli süreyi sırası ile yazınız.
-kullanıcı 5 sayı girer
10
20
30
25
5
İşçi sayınızı giriniz:
-kullanıcı sayı girer, mesela 10
Şimdi bundan sonra yapmak istediğim şey algoritmanın şöyle işlemesi:
5 farklı iş türüne 5 farklı iş saati atanır en başta daha sonra işçi sayısına göre 1. işe 2 kişi atanır, 2. işe 3 kişi atanır 3. işe 1 kişi, 4. işe 1 kişi 5. işe 3 kişi (random olarak atanmasını istiyorum ve toplamı 10 olacak tabii ki çünkü 10 işçi var dedi kullanıcının dediği kadar yani) Program kaç tane atanabiliyorsa böyle random şekilde (tabii hepsi birbirinden farklı olacak) atayacak ama bu atama işlemini nası yapar bilemedim. Bu random atamaları yaptıktan sonra yapacağım iş şu, mesela 1. işe 2 kişi mi atanmış.. birinci işin süresi 10 du 2 kişi atanmışsa artık süresi 5 e düşer yani bölüyorum. böyle böyle böldükten sonra oluşan kümede maksimum olan sayıyı seçicem bu sayı verdiğim örnekte 30 dur çünkü 3. işe bir kişi atanmış ve 3. işin süresi 30.. Elde var 30 .. Diğer rastgele oluşmuş kümelerde de aynı işlemler yapılacak diyelim orda da 20 elde edildi, 10 elde edildi 5 elde edildi 25 elde edildi vs...
30,20,10,5, 25 elimizde var bunlardan ise minimumunu seçicek yani verdiğim örnekten gidersek burdan 5 i seçicek ve 5 in değerlerini buraya yazıcak. 5 in geldiği yerde diyecek 1. işe şu kadar işçi 2. işe şu kadar işçi 3. işe şu kadar işçi 4. işe şu kadar 5. işe bu kadar işçi geliyordu diyecek.
işlere rastgele sayıda işçi atama konusunda sorun yaşıyorum yardım ederseniz sevinirim. Ya da bunu excelde vs. yapma yolu var mı?
-
ÜSTAD
=eğer(t2>t2;"Ne alkaysa";Çok Alaka")yaparsın ama tablodaki değere göre atayabilirsin. mesela şu şu özelliktekiler 1 işe şu şu özeliktekiler den 3 kişi 3 işe gibisinden
exleeki VB den ayarlayabilebileceğini bilemiyorum olabiliritesi olabilir.
-
galiba random (0,10) de bir sayı atıcak sorna 10dan çıkar de mesla 4 attı 10 dan çıakracak kaldı 6 yani artık random (0,6) oalcak böyle gider en son 5 sayyı atınca artık o sayıyı kalandan çıkaracak sonuç olmuş olacak yöntem bu uygulamyı bilmiyorumhatta kodları bile
-
en iyisi bence mesela 5 iş var 10 tane işçi var 1 den 10 a kadar bütün işçiler için bi tek tek bi işe atarsın rastgele olarak
C kodu:
for(i=1;i<=isci_sayisi;i++){
isler[rand()%is_sayisi+1]++;
}
her iş için en az bi işçi olsun istiyosan baştan atama yaparsın işçi sayısından çıkarırsın..
-
Random ile uğraşma, her yolu deneyip, her bir durumu değerlendirip (mesela her durum için bir puanlama yapıp) sonra en yüksek puanlı olanı bir kenarda tut, döngüler bittiğinde o durumu geri döndür, aradığın sonuç odur.
Zamanın varsa şu aşağıdakileri bir kurcala derim.
http://en.wikipedia.org/wiki/Depth-first_search
http://en.wikipedia.org/wiki/Depth-limited_search
http://en.wikipedia.org/wiki/A*_search_algorithm
http://en.wikipedia.org/wiki/Hill_climbing
http://en.wikipedia.org/wiki/Breadth-first_search
