Kombinasyon ama biraz akıllı....

mimmoya

Üye
Katılım
12 Mar 2010
Mesajlar
9
Puanları
1
Merhaba
Bir integer dizimiz var. 20 elemanlı. Bu dizi elemanları yaklaşık 50 civarı olacak. Toplamları 100 ü veren 2 ya da 3 lü kominasyona sokacağım. Toleransımız artı ve ekside 2. Yani 98 ve üstü 102 ve altı kabul edilecek. Öncelikli 2 daha sonra 3 lü kombinasyon tercihinde bulunmam gerekiyor.
Bir kombinasyon kodu yazdım fakat sıkıntım şu şekilde.
Dizi elemanlarının içinde diyelim ki 48 den 2 tane var. 50 den de 2 tane var. Benim kodum ilk 50 ve 50 yi alıp listeme atıyor ve bu 50 leri kombinasyon dizisinden çıkarıyor. Daha sonra gelen 48 ve 48 toplamı 96 yaptığından 98 ve üstü kabul şartına uymuyor. Halbuki 48 ve 50 alıp diğer 48 ve 50 yi alıp listeme atsa 2 adet kombinasyon seçeneğini de elemiş olacaktım. Diğer bir deyişle bu 2 50 yi alırsam bunlarla diğer sayılardan da toplam 100 +-2 kuralına uyacak kombinasyonlar oluşabilir en iyisi ben tam 100 olacak kombinasyon yapmayayım da 100e yakın kombinasyon çıkarayım ve bundan sonra bu sayılarla daha fazla kombinasyon üretebilirim diyebilecek bir algoritma gereksinimim var.

Her hangi bir dilde yazılmış olabilir sorun değil ben C# çalışıyorum bir şekilde convert edebilirim. Esas sorunum algoritma..

Konu ile ilgili yardımda bulunabilecek arkadaş var mı aramızda?

Teşekkür ederim.
 
Bana sanki mantık hatası yapıyormussunuz gibi geliyor.Anladıgım kadarı ile otomatik dolum tesisi için program yazıyorsunuz.Sizin hedefinizin sıfır hataya en yakın kombinasyonu seçmeniz gerekir.zaten 50+50 yi bulmuşsa hata sıfır ve en uygun deger,daha fazla aramaya gerek yok.
Siz herhalde diger seçimlerdede kullanabileyim diye birbirinin aynı olan iki degeri kullanmak istemiyorsunuz.Bunun içinde ayrı bir tarama yapıp varsa tolerans degerinde birbirinin aynı olmayan degerleri seçebilirsiniz,eger yoksa ilk seçilen yani birbirinin aynı degerde olanları kullanırsınız.
 
Merhaba
Evet benzer bir dozajlama yazılımı olacak.
Yaptığumız denemelerde şunu gördük.
50 50 kombinasyon tuttu diyelim. Bir sonraki kombinasyonda 48 48 en yakın değerler var sayalım.
Bu düşünce kombinasyon yazılımına rastgele değerler yazarken bir anda kombinasyon kitlendi. Yani en yakın değer -4 oluverdi. Yani 48 48 en iyi ihtimal kaldı. Ve bundan öncesi 50 50 idi. Ben örnek olsun diye yazdım ama gerçekten böyle bir noktaya gelebiliyor. Tabi ki toleransı geçtiği noktalar olabilecek buna müsade edilebilir belli sayıda ama kombinasyona giren değerleri log aldığımda kitlenme noktasında yani +- 2 tolerans içinde aslında bir sonraki hamleyi de düşünerek seçim yaptığımızda hepsinin girebileceğini gözlemledik.

Kısacası o an kombinasyon sonucundan çıkaracağı değerleri en yakına göre değil de bir sonraki (en azından o anki 20 adet içinde) 2 adet eşleşmeyi hatta hatta 3 sonrakine kadar eşleşmeyi biraz ileriye dönük hesaplarsa kitlenmeyecek.
 
Anladıgım kadarı ile elinizdeki 20 adet veriden elde edilebilecek maksimum uygun verileri secmek istiyorsunuz.
Eger öyleyse yapmanız gereken index1 ile uygun indexlerin sayısı,index2 ile uyumlu indexlerin sayıs ......
herbiri için adetleri bulursunuz,adeti en az olanı peşinen eşleştirir,daha sonra ikinci en az seçimi olanı eşleştirir ve sırasıyla devam edersiniz.(eşleşen dataları digerlerinden de sileceksiniz)Bu sayede eşleşebilecek maksimum kombinasyonu bulmuş olursunuz.
Program kısmı biraz alengirli olur ancak en uygun mantık budur diye düşünüyorum.Bu sayede kullanılabilecek tüm kombinasyonları kullanmış olursunuz.
 

Forum istatistikleri

Konular
127,954
Mesajlar
913,890
Kullanıcılar
449,604
Son üye
baba pero

Yeni konular

Geri
Üst