1

Konu: Dağılım

Visual Fox Pro
CREATE CURSOR CrTest (Deger n (4,2),h1 n(2),h2 n(2),h3 n(2),h4 n(2),h5 n(2),h6 n(2))

INSERT INTO CrTest (deger) values(44.4)
INSERT INTO CrTest (deger) values(44.4)
INSERT INTO CrTest (deger) values(24.0)
INSERT INTO CrTest (deger) values(22.2)
INSERT INTO CrTest (deger) values(22.2)
INSERT INTO CrTest (deger) values(20.0)
INSERT INTO CrTest (deger) values(19.2)
INSERT INTO CrTest (deger) values(17.8)
INSERT INTO CrTest (deger) values(16.7)
INSERT INTO CrTest (deger) values(15.6)
INSERT INTO CrTest (deger) values(6.0)
INSERT INTO CrTest (deger) values(5.6)
INSERT INTO CrTest (deger) values(4.4)
INSERT INTO CrTest (deger) values(3.3)
INSERT INTO CrTest (deger) values(3.3)


Elimizde böyle bir veri var.
Burada deger veya degerler toplamı 45 e en yakın olan satırların toplayıp o satır veya satırların karşısına sırasıyla numara vermesini istiyorum.
İstediğim şey elle yaptığımda yaklaşık aşağıdaki gibi veya değişik kombinasyonları olabilir.

Visual Fox Pro
CREATE CURSOR CrTestSonuc (Deger n (4,2),h1 n(2),h2 n(2),h3 n(2),h4 n(2),h5 n(2),h6 n(2),h7 n(2),h8 n(2),h9 n(2))

INSERT INTO CrTestSonuc (deger,h1) values(44.4,1)
INSERT INTO CrTestSonuc (deger,h2) values(44.4,1)
INSERT INTO CrTestSonuc (deger,h3) values(24.0,1)
INSERT INTO CrTestSonuc (deger,h4) values(22.2,1)
INSERT INTO CrTestSonuc (deger,h4) values(22.2,2)
INSERT INTO CrTestSonuc (deger,h3) values(20.0,2)
INSERT INTO CrTestSonuc (deger,h5) values(19.2,1)
INSERT INTO CrTestSonuc (deger,h5) values(17.8,2)
INSERT INTO CrTestSonuc (deger,h6) values(16.7,1)
INSERT INTO CrTestSonuc (deger,h6) values(15.6,2)
INSERT INTO CrTestSonuc (deger,h5) values(6.0,3)
INSERT INTO CrTestSonuc (deger,h6) values(5.6,3)
INSERT INTO CrTestSonuc (deger,h6) values(4.4,4)
INSERT INTO CrTestSonuc (deger,h7) values(3.3,1)
INSERT INTO CrTestSonuc (deger,h7) values(3.3,2)
Bilmediğin Neyse Yanıldığındır.

2 Son düzenleyen, ugurlu2001 (06.02.2012 14:15:31)

Re: Dağılım

Ramazan; 45 en üst limit mi? Birde sonuç tablosundaki H01...H09 sütünlarındaki değerleri neye göre atadın? Test tablosunda 6 tane H sütunu var, ama sonuç tablosunda 9 tane?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: Dağılım

ugurlu2001 yazdı:

Ramazan; 45 en üst limit mi? Birde sonuç tablosundaki H01...H09 sütünlarındaki değerleri neye göre atadın? Test tablosunda 6 tane H sütunu var, ama sonuç tablosunda 9 tane?

45 üst limit.
H değerleri Toplamı 45 e en yakın satırlara göre aldım.
Test tablosuda h sütunu 9 olacak.

Aklıma ilk gelen fikir şuydu;
Büyükten küçüğe sıralar,En üstteki sayı ile en altaki sayıyı toplamı 45 e yakınığına göre dağıtabilirim. Tabi ortaya geldiğimde 20 li veya 10 lu bir sayıda kalabilir bu sorun değil.. Burada amaç mümkün oldukça 45 e yakın toplamların dağılımını yapmak. Daha sonrada elle müdahale edecekler.

Bilmediğin Neyse Yanıldığındır.

4 Son düzenleyen, ugurlu2001 (07.02.2012 10:18:26)

Re: Dağılım

Peki ; 44.4 değerinde hem H1 de hem de H2 de 1 değerini atamışsın; Ama 22.2 değerinde sadece H4 sütunun da 1 ve 2 atamışsın. Burdaki mantık nedir? İş akış yöntemi tanımı olmadığından;  Test ve Sonuç Cursorlari arasında bir bağıntı kurulamıyor ( yada en azından ben beceremedim )  Birde bazı sütunlara 3 bazılarında 4 değeri var. Sonra tekrardan 1 ve 2 değerlerini kullanmışsın. Ordaki bağıntı nedir?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

5

Re: Dağılım

ugurlu2001 yazdı:

Peki ; 44.4 değerinde hem H1 de hem de H2 de 1 değerini atamışsın; Ama 22.2 değerinde sadece H4 sütunun da 1 ve 2 atamışsın. Burdaki mantık nedir? İş akış yöntemi tanımı olmadığından;  Test ve Sonuç Cursorlari arasında bir bağıntı kurulamıyor ( yada en azından ben beceremedim )  Birde bazı sütunlara 3 bazılarında 4 değeri var. Sonra tekrardan 1 ve 2 değerlerini kullanmışsın. Ordaki bağıntı nedir?

İlişki;
44.4 birimi saattir.
Her bir satır farklı ürünlerin siparişlerine göre miktar ile çarpılarak oluşan üretimi süresi (DEGER=SAAT).
Bu ürünleri (H=HÜCRE ) hücrelerde max kapasitede çalıştırmak için dağıtım yapmak.
1 ve 2 de haliyle O hücrede üretilecek 1.,2.... farklı ürünler olmuş oluyor.

Bilmediğin Neyse Yanıldığındır.

6

Re: Dağılım

Sanırım yeterince açık olmadı.

Bilmediğin Neyse Yanıldığındır.

7

Re: Dağılım

Yaklaşık Sonuç. Başka fikirlere açığım.

Visual Fox Pro
Create Cursor Crtest (Deger N (4,2),Sira n(3),h1 N(2),h2 N(2),h3 N(2),h4 N(2),h5 N(2),h6 N(2),h7 N(2),h8 N(2),h9 N(2))

Insert Into Crtest (Deger) Values(44.4)
Insert Into Crtest (Deger) Values(44.4)
Insert Into Crtest (Deger) Values(24.0)
Insert Into Crtest (Deger) Values(22.2)
Insert Into Crtest (Deger) Values(22.2)
Insert Into Crtest (Deger) Values(20.0)
Insert Into Crtest (Deger) Values(19.2)
Insert Into Crtest (Deger) Values(17.8)
Insert Into Crtest (Deger) Values(16.7)
Insert Into Crtest (Deger) Values(15.6)
Insert Into Crtest (Deger) Values(6.0)
Insert Into Crtest (Deger) Values(5.6)
Insert Into Crtest (Deger) Values(4.4)
Insert Into Crtest (Deger) Values(3.3)
Insert Into Crtest (Deger) Values(3.3)
 
 
 
Select Crtest
Lcsira=0
Locate
Scan
    Lcrecno=Recno()
    If Deger=>40 And Deger=<45 And Sira=0
        Select Crtest
        Lcsira=Lcsira+1
        Replace Sira With Lcsira
    Else
        If Deger<45 And Sira=0
            Select Crtest
            Lcsira=Lcsira+1
            Replace Sira With Lcsira
 
            LcUret=Deger
            Select Crtest
            Locate
            Scan For Sira=0
                If Between(LcUret+Deger,30,45)
                    Select Crtest
                    Replace Sira With Lcsira
                    Exit
                Endif
            Endscan
        Endif
    Endif
    Go Lcrecno
    Select Crtest
Endscan
Bilmediğin Neyse Yanıldığındır.

8

Re: Dağılım

mrduyar yazdı:
ugurlu2001 yazdı:

Peki ; 44.4 değerinde hem H1 de hem de H2 de 1 değerini atamışsın; Ama 22.2 değerinde sadece H4 sütunun da 1 ve 2 atamışsın. Burdaki mantık nedir? İş akış yöntemi tanımı olmadığından;  Test ve Sonuç Cursorlari arasında bir bağıntı kurulamıyor ( yada en azından ben beceremedim )  Birde bazı sütunlara 3 bazılarında 4 değeri var. Sonra tekrardan 1 ve 2 değerlerini kullanmışsın. Ordaki bağıntı nedir?

İlişki;
44.4 birimi saattir.
Her bir satır farklı ürünlerin siparişlerine göre miktar ile çarpılarak oluşan üretimi süresi (DEGER=SAAT).
Bu ürünleri (H=HÜCRE ) hücrelerde max kapasitede çalıştırmak için dağıtım yapmak.
1 ve 2 de haliyle O hücrede üretilecek 1.,2.... farklı ürünler olmuş oluyor.

sorununa çözüm üretemiyeceğim ama konu ilgimi çektiği için sormak istedim
elindeki işleri üretim hücrelerine en uygun şekilde dağıtacak bir program yapmaya çalışıyorsun galiba
9 adet üretim hücren var
yapılacak 15 çeşit işin var (bu rakkamı değer kolonundaki kayıt sayısından çıkardım)
her iş için harcanacak sürelerin belli(değer)
her iş için bir öncelik sıran var(sira)
değer ve sira kolonlarına göre hücrelere dağıtmaya çalışıyorsun
eğer doğru anladıysam bu verilerle bir üretim planı oluşuturacaksın
hücrelerin kapasitesi olmadan optimum yerleşim nasıl olur yani neyi baz alarak yerleştirecek

Kader, beyaz kağıda sütle yazılmış yazı
Elindeyse beyazdan, gel de sıyır beyazı. (NFK)

9

Re: Dağılım

tarik yazdı:


sorununa çözüm üretemiyeceğim ama konu ilgimi çektiği için sormak istedim
elindeki işleri üretim hücrelerine en uygun şekilde dağıtacak bir program yapmaya çalışıyorsun galiba
9 adet üretim hücren var
yapılacak 15 çeşit işin var (bu rakkamı değer kolonundaki kayıt sayısından çıkardım)
her iş için harcanacak sürelerin belli(değer)
her iş için bir öncelik sıran var(sira)
değer ve sira kolonlarına göre hücrelere dağıtmaya çalışıyorsun
eğer doğru anladıysam bu verilerle bir üretim planı oluşuturacaksın
hücrelerin kapasitesi olmadan optimum yerleşim nasıl olur yani neyi baz alarak yerleştirecek

Bu resim sanırım sorulara cevap olacak.

http://www.wagner.com.tr/vfpresim/uretim_cizelgeleme_1.jpg

Visual Fox Pro
*Set Step on

Select CrRapor3
Lcsira=0
Locate
Scan
    Lcrecno=Recno()
    If URETILECEK=>40 And URETILECEK=<45 And Sira=0
        Select CrRapor3
        Lcsira=Lcsira+1
        Replace Sira With Lcsira
    Else
        If URETILECEK<45 And Sira=0
            Select CrRapor3
            Lcsira=Lcsira+1
            Replace Sira With Lcsira
 
            LcUret=URETILECEK
            Select CrRapor3
            Locate
            Scan For Sira=0
                If LcUret+URETILECEK<45
                    Select CrRapor3
                    Replace Sira With Lcsira
                    LcUret=LcUret+URETILECEK
                Endif
            Endscan
        Endif
    Endif
    Go Lcrecno
    Select CrRapor3
Endscan
 
 
 
** hücreleri ekle
*Lchucre='A07/A08/A09/A10/A11/A12/A13/A14/A16/A17/A18/A19/A20/A21'
If Occurs("/",Lchucre)>0
    Lchucre=Chrtran(Lchucre, ' ', '')
    Lcdeger1=''
    Lca=1
    Lcb=3
    For a=1 To 20
        Lcdeger=Substr(Lchucre,Lca,Lcb)
        If Len(Lcdeger)>0
            Lcdeger1=Lcdeger1+", 000 as "+Lcdeger
        Endif
        Lca=Lca+4
    Endfor
Else
    Lcdeger1=",0 as "+Lchucre
Endif
If !Empty(Lcdeger1)
    Select * &Lcdeger1 From CrRapor3 Into Cursor CrRapor4 Readwrite Order By Sira
Endif
 
Select CrRapor4
gnFieldcount = Afields(gaMyArray)  && Create array.
LcBasSira=10
Select CrRapor4
Locate
Lcdon=0
Scan
    If Sira=Lcdon
        LcBaslik=gaMyArray(LcBasSira,1)
        Replace &LcBaslik With Sira
    Else
        LcBasSira=LcBasSira+1
        LcBaslik=gaMyArray(LcBasSira,1)
        Replace &LcBaslik With Sira
    Endif
    Lcdon=Sira
Endscan
Bilmediğin Neyse Yanıldığındır.