Şimdi Ara

200 TL ÖDÜLLÜ ALGORİTMA SORUSU

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
18
Cevap
1
Favori
745
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Aşağıdaki bir problem ve önerilen bir çözüm önerisi var.
    Daha iyi bir çözüm algoritması bulana 200TL ödül vericem

    PROBLEM
    Bir sınıfta yer alan çok sayıda öğrenciye 3 farklı bursun dağıtımı yapılacaktır.

    Dağıtılacak burslar:
    * İç Anadolu Bursu
    * Aile Bursu
    * Başarı Bursu

    Her bursun kaç öğrenciye verileceği ve burs tutarı şu kurallar ile belirleniyor:

    İç Anadolu Bursu
    Memleketi iç anadoluda bir şehir olan çocuklar arasından;
    Her şehir için o şehrin hece sayısı kadar kişiye burs verilecek.
    Örnek: An-ka-ra'lı 3 kişiye, kon-ya'lı 2 kişiye, kır-şe-hir'li 3 kişiye.... şeklinde.
    Burs tutarı: 500lira + karneOrtalaması*20;

    Aile Bursu
    3 çocuklu bir ailede yaşayan çocuklar arasından;
    ismi A ile başlayan çocukların bir kısmına, B ile başlayanların bir kısmına.... ismi Z ile başlayan çocukların bir kısmına burs verilecek.
    Her harf için kaç kişiye burs verileceği şu şekilde belirlenir:
    - harf gurubunda tek sayıda öğrenci varsa gurubun 1/3'üne;
    - harf gurubunda çift sayıda öğrenci varsa gurubun 1/2'sine burs verilir.
    Örnek:
    ailesinde 3 çocuk olan ve ismi B ile başlayan 7 öğrenci varsa bunların 7/3 = 2.33 -> 3 (her zaman yukarı tamamlıyoruz) tanesi aile bursu alabilir.
    ailesinde 3 çocuk olan ve ismi C ile başlayan 1 öğrenci varsa bunların 1/3 = 0.33 -> 1 (her zaman yukarı tamamlıyoruz) tanesi aile bursu alabilir.
    ailesinde 3 çocuk olan ve ismi A ile başlayan 4 öğrenci varsa bunların 4/2 = 2 tanesi aile bursu alabilir.
    Burs tutarı: 300lira + karneOrtalaması*22;

    Başarı Bursu
    Ortalaması 4 ve üstü olan tüm öğrencilere burs verilecek
    Burs tutarı: 100lira + karneOrtalaması*20;

    -> Her öğrenci sadece bir burstan yararlanabilir.
    -> Not ortalamaları 1-10 aralığındadır

    Dağıtılacak bursların toplam tutarının maksimum olması için nasıl bir çözüm uygulanmalıdır?


    Çözüm Yöntemi (Bu çözümden daha iyi bir yöntem bulana 200TL ödül verilecek)
    1- Önce burs alma ihtimali ve burs tutarları tablosu oluşturulur.

    200 TL ÖDÜLLÜ ALGORİTMA SORUSU
    Daha sonra burs tutarlarına göre dağıtım yapılır.
    Önce İç Anadolu Bursu, sonra Aile Bursu en son ise Başarı bursu dağıtılır.

    İç Anadolu Bursu
    İç anadolu bursu alabilen her bir öğrenci için aşağıdaki formül uygulanıp sonuçlara göre büyükten küçüğe sıralama yapılır.
    SIRALAMA FORMULU = İçAnadoluOlasıKazanc - ( AileOlasıKazanc + BasarıOlasıKazanc)
    Sonra Ankaralı cocuklardan yukardaki formül sonucuna göre en yüksek değere sahip 3 tanesi İç Anadolu Bursu için seçilir.
    Benzer şekilde her iç anadolu şehri için yukardaki formül sonucuna göre sıralama yapılıp hece sayısı kadar ogrenci secilip burs verilir.

    Aile Bursu
    Aile bursu alabilen ve iç anadolu bursu almamış öğrenciler için aşağıdaki formül uygulanıp sonuçlara göre büyükten küçüğe sıralama yapılır.
    SIRALAMA FORMULU = AileOlasıKazanc - BasarıOlasıKazanc
    Sonra ismi A,B,C... ile başlayan cocuklar bulunup guruplara ayrılır. her gurup icinde yukardaki formüle göre sıralama yapılır ve kişi sayısına göre belli sayıda öğrenci secilir.

    Başarı Bursu
    Önceki iki bursu alamayan ve başarı bursu alabilen herkese bu burs verilir







  • Soru herhangi bir proje ödevi sorusu falan mı yoksa keyfii bir soru mu
    Yazarı kimdir
    Ona göre bakmayı düşünüyorum

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Gelistirdigim bir projede karşılaştığım bir problemin benzeri. Burs dagitmiyorum ama başka bir kar optimizasyonu yaomaya çalışıyorum.
    Orjinalinde değişkenler daha fazka biraz daha komplex.
    Son kisimdaki çözümü takip ediyorum şuan. Uyguladigim cozum okdukca verimli sonuç veriyor ama maksimum kara ulasmiyor. Her durumda en dogru sonucu bulacak bir algoritma araştırıyorum.

    Bu tarz problemler sanırım daha cok endüstri muhendisliginin konusu. Piyasada kütüphaneler de var ama altindan kalkamadim. Google or tools diye aratabilirsin

    Çözüm bulan veya bulmama yardim edenlere ödül vermek istiyorum. Freelance gibi uluslararası platformlarda yayinlamayi düşündüm ancak önce donanimhaber den yardim bakmak geldi aklima

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Endüstri mühendisliğiyle çok alakası yok. CS'nin alanı bu, knapsack probleminin biraz farklı versiyonu sadece, internette araştırın, geeksforgeeks sitesinde bakın buna çok benzer bir sürü soru bulabilirsiniz. Kendi sorunuza uyarlarsınız.
    200 lira vermeye gerek yok kimseye.
  • Hocam biraz araştırdım. Piyasadaki benzer problemlere göre bu yazdığım daha karışık. knapsack da değişkenler birbirinden bağımsız. Bu problemde burslar birbirini etkiliyor.
    Bir öğrenci hem iç anadoludan olabilir hem adı A ile başlayabilir. Bir kriterin seçenek kümesi diğer probleminki ile kesişiyor. tüm kombinasyonları denemeden çözülmesi gerekli

    Özet olarak çözemedim ve çözüme ihtiyacım var.
    Çözene 200 lira helali hoş olsun :)



    < Bu mesaj bu kişi tarafından değiştirildi abars -- 28 Aralık 2019; 21:55:4 >
  • Bu tipik bir optimizasyon sorusu yani bir algoritma uygulayarak halledilebilecek birşey değil. Seyahat Eden Tüccar / Traveling Salesman Problem 'i de örneğin bir Dijkstra algoritması ile asla halledilecek birşey olmaması gibi. Yani 'başlık' ta bir problem var ysni bu bir algoritma sorusu değil bu ufak çaplı bir proje. Probleme bu açıdan baktığınzda bu projeyi başarıyla yapabilecek profili ağır bir kişi iyimser bir tahminle 2 işgününde yapar ve öyle kişi de Türkiye şartlarında brüt 500TL / gün ücret talep etmesi gerekir. (yani €75 / gün gibi birşey) Yanlış anlamayın: Konuya sadece finansal açıdan degerlendirmiyorum. "Optimizasyon" gibi Bilgisayar Bilimi alanına giren bir problemin çözüm yolu üzerine bilgi veriyorum :)

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Tek bir algoritma ile çözülemeyecek kadar komplex olduğunun farkındayım. Ama proje diyecek kadar da büyük değil bence. Çünkü yapılacak iş/yazılacak kod fazla değil. Ekranlar veritabanları vs yok. Tahminen yarım veya bir sayfalık pseudo kod ile açıklanabilir bir çözümü olacak.
    Çözüm yolunu bilmeyen profesyonel bir kişi 2 gün de çalışsa yapamaz. Ancak araştırma yapıp farklı algoritmaları/yöntemleri bir araya getirip çözüm bulması gerekir.

    Belki burdan birinin aklına verimli bir yol gelir veya benzer bir problem ile uğraşmıştır yakın zamanda diye düşünerek buraya yazdım.
    Çözen olmazsa freelancer.com gibi platformlarda ilan vericem.
  • abars kullanıcısına yanıt
    2 günlük işlere dahi artık proje deniliyor. Projenin tanımı: İlk kez yapılacak herhangi bir iş. Bahsettiğiniz optimizasyon problemi ilk kez yapılacak birşey. O yüzden proje. Ama diyelim ki sizin dediğiniz gibi bu iş bir proje değil... Bu durumda bu işin pseudo kod, onun implementasyonu, bug-fix'leri vs toplam kaç saat süreceğini tahmin ediyorsunuz?

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Çok fazla değişken vb var gibi geldi ( 3 alan öğrenci sayısı, 4 alan öğrenci sayısı, ankaralı olan 8 alan kişi vb gibi)
    Ama bunlar bana linearmış gibi göründü

    yani Denklem sistemi yazılabilir muhtemelen
    Bunu yazdıktan sonra matrix çözme vb işlemiyle free variableler için de türev vb kullanarak bir çözüm üretilebilir belki

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sadece pseudo kod yeterli.
    Implementasyonu ben yapıcam. Çözmem gereken asıl problem burs ile ilgili değil. pseudo kod ile anlatılan yöntemi asıl probleme uyarlıcam.
  • abars kullanıcısına yanıt
    Akşam alelacele bakmıştım. Şimdi soruya ve çözümünüze tekrar baktım. İlk yazdığım cevapta knapsack önerim doğru ama 200 lira kısmı yanlış, hızlıca cevap vereceğim diye bildiğin saçmalamışım. Bu tür soruların kesin çözümünü bulan adama dünyada cenneti yaşatacaklar çünkü.

    Problem bildiğimiz np problem yani ihtimaller arttığında çözümü imkansız, zor bile denemez yani mümkün değil. Eğer toplam ihtimal sayısı çok fazla değilse tüm kombinasyonlar denenerek bulunabilir ki siz denenmemeli demişsiniz. O halde yaptığınız çözüm yapılabilecek en mantıklı çözümlerden birisi. Bir diğer çözüm problemi genetik algoritmanın işleyebileceği hale dönüştürüp çok sayıda iterasyonla optimal sonuca ulaşmaya çalışmak. Ama aslında genetik algoritma da kombinasyon deniyor, sadece kombinasyonların içerisinde en mantıklı görünenleri seçtiği için tamamını denemiyor da bir kısmını denemiş oluyor. Ki bu bile bize kesin sonucu vermeyecek dediğim gibi.




  • Gözden kaçan kısmı buldum. Önce anadolu bursunu dağıtıyor ve maksimumdan veriyorsun. sonra aile bursunu ve en son başarı bursunu veriyorsun. En son başarı bursunu verdikten sonra ortalaması 4'ün altında olan öğrenciler hiç bir burs alamamış olabilirler. çünkü anadolu bursunu da aile bursunu da en çok alabilen öğrenciye vermiş oluyorsun. Biraz komplex ama bana 2 gün verebilirsen bu bakış açısı ile yürümeyi denerim. bu arada işlemlerini bir adım kısaltmak için söylüyorum, senin kurduğun algoritmada anadolu bursunu hesaplatmadan direkt olarak en yüksek ortalamaya sahip öğrencileri sıralayıp versen de aynı sonucu verecek. bir basamak kısalır yaptığın işlem. sonuç olarak dediğim gibi, maksimum burs toplamına ulaşmak istiyorsan başarı bursu alamayacak öğrencileri diğer 2 burstan faydalandırmak gerekiyor gibi görünüyor buradan



    < Bu mesaj bu kişi tarafından değiştirildi rotaszkorsn -- 29 Aralık 2019; 2:29:22 >
  • quote:

    Orijinalden alıntı: Guest-D639AD061

    Akşam alelacele bakmıştım. Şimdi soruya ve çözümünüze tekrar baktım. İlk yazdığım cevapta knapsack önerim doğru ama 200 lira kısmı yanlış, hızlıca cevap vereceğim diye bildiğin saçmalamışım. Bu tür soruların kesin çözümünü bulan adama dünyada cenneti yaşatacaklar çünkü.

    Problem bildiğimiz np problem yani ihtimaller arttığında çözümü imkansız, zor bile denemez yani mümkün değil. Eğer toplam ihtimal sayısı çok fazla değilse tüm kombinasyonlar denenerek bulunabilir ki siz denenmemeli demişsiniz. O halde yaptığınız çözüm yapılabilecek en mantıklı çözümlerden birisi. Bir diğer çözüm problemi genetik algoritmanın işleyebileceği hale dönüştürüp çok sayıda iterasyonla optimal sonuca ulaşmaya çalışmak. Ama aslında genetik algoritma da kombinasyon deniyor, sadece kombinasyonların içerisinde en mantıklı görünenleri seçtiği için tamamını denemiyor da bir kısmını denemiş oluyor. Ki bu bile bize kesin sonucu vermeyecek dediğim gibi.
    Öncelikle zaman ayırdığınız için teşekkürler

    Bu cevaba sevinsem mi üzülsem mi bilemedim :)
    Her durumda en iyi sonucu verecek bir method bulmayı umuyordum. Öyle bir çözümün olmadığına üzüldüm.
    Bir yandan da yapılabilecekleri yapmış olmak içimi biraz rahatlattı :)

    Yine de biraz iyileştirmeler yaparak daha iyi sonuçlar alınamaz mı?




  • quote:

    Orijinalden alıntı: rotaszkorsn

    Gözden kaçan kısmı buldum. Önce anadolu bursunu dağıtıyor ve maksimumdan veriyorsun. sonra aile bursunu ve en son başarı bursunu veriyorsun. En son başarı bursunu verdikten sonra ortalaması 4'ün altında olan öğrenciler hiç bir burs alamamış olabilirler. çünkü anadolu bursunu da aile bursunu da en çok alabilen öğrenciye vermiş oluyorsun. Biraz komplex ama bana 2 gün verebilirsen bu bakış açısı ile yürümeyi denerim. bu arada işlemlerini bir adım kısaltmak için söylüyorum, senin kurduğun algoritmada anadolu bursunu hesaplatmadan direkt olarak en yüksek ortalamaya sahip öğrencileri sıralayıp versen de aynı sonucu verecek. bir basamak kısalır yaptığın işlem. sonuç olarak dediğim gibi, maksimum burs toplamına ulaşmak istiyorsan başarı bursu alamayacak öğrencileri diğer 2 burstan faydalandırmak gerekiyor gibi görünüyor buradan
    Sıralama formullerinin son kısmında yer alan kısımlar diğer burslardan yararlanma ihtimali ve kazanc tutarı yüksek kişilerin sıralamada sona alınmasını sağlıyor.
    Yani diyelim ki iki kişi anadolu bursu için eşit durumda ve birini seçmek gerekiyor.
    Bunlardan birinin ortalaması 4 üstü. Sıralama formülünden dolayı başarısız olana anadolu bursu verilecek




  • abars kullanıcısına yanıt
    FizzBuzz problemi gibi bir pseudo kodla ifade edilebilecek türde bir problem mi bu? Problemin ifadesi bile 1 sayfa.

    Ben olsam ANN (Yapay Sinir Ağları) ile çözmeyi denerdim. ANN ile TSP (Seyahat Eden Tüccar) probleminin çözümü var. TSP de bu da optimizasyon problemi.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • abars kullanıcısına yanıt
    İyileştirmeler yapılabilir. Np problemler ve çözüm yöntemlerine bakarsanız birkaç farklı yaklaşım yöntemi bulunur.
    Np problemler epey eski ve hakkında baya bir araştırma yapıldı, ama bu kadar araştırmaya ve emeğe değecek mi o sizin tercihiniz.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.