2016-03-24 7 views
1

ile üst döngüye geri dön 4-parametrik RAINFLOW yöntemini programlıyorum. Öyleyse fikir, normalde birkaç 1000, 10000 veya daha fazla noktadan (kuvvet zamanı) oluşan bir yük geçmişinden, 4 gereksinim ile tanımlanan standart yükleme döngüleri elde etmektir. Bu yükleme geçmişinde, yükselen ve düşen bir example here olan 2 standart döngü vardır. Her ikisi de resimde gösterilmiştir. Her zaman başlangıçta başlarsınız ve döngülerden birini bulmaya çalışırsınız, eğer ilk puanlardan başarılı olmazsanız, bir noktayı yukarı taşıyorsunuz (j = j + 1) ve tekrar başlıyorsunuz. Bir döngü bulduğunuzda, 2. ve 3. noktaları (y1 ve y2) siler ve en baştan başlarsınız.Python - Döngü

Algoriteyi, ilk olarak yük geçmişinin ikinci noktalarının ilk veya daha yüksek olandan daha yüksek olup olmadığını belirleyeceği bir şekilde yaptım, böylece hangi döngünün ilk önce görüneceğini (nereden başlayacağını) bilir. Oradan da, sadece resimlerde de listelenen gereksinimleri araştırıyor.

Benim sorun: Ben 2 döngü olmayan bulunursa durumunda, programın j +1 ekleyerek ediyorum ve tekrar üstten başlar nerede bir bakıma bu programlamak istiyorum ve yapacağını böylece bir döngü bulunana kadar. While döngüsünü kullandım ve doğru/yanlış ile yapmaya çalıştım ama işe yaramaz. Gerçekten hiçbir şey olmuyor .... eğer birisinin bir fikri varsa.

y rastgele noktaların vektörünün yalnızca kısa bir örneğidir. koşulları sağlamadığını çünkü

y = [0.00, 2.00, 4.00, 5.00, 5.50, 6.00, 5.00, 4.00, 3.20, 3.50, 4.00, 4.50, 4.70, 4.80, 5.00, 4.50, 4.30, 4.00, 3.00, 2.00, 1.00, 
1.50, 2.50, 4.00, 4.50, 2.50, 1.50, 0.50, 0.30, 2.50, 3.00, 1.50, 2.00, 2.50, 5.00, 5.50, 6.00, 6.20, 5.50, 3.00] 


a = [] 
for j in range(len(y)): 
while j<(len(y)-4): 
    if y[j+1] > y[j]: 
     while False: 
      if y[j+2] >= y[j] and y[j+3] >= y[j+1]: 
       True 
       a.append(y[j+1])     
       del y[j+1] 
       a.append(y[j+1])     
       del y[j+1] 
      else: 
       j = j+1 
       if y[j] >= y[j+2] and y[j+1]>= y[j+3]: 
        stavek = True 
        a.append(y[j+1])      
        del y[j+1] 
        a.append(y[j+1])      
        del y[j+1] 
       else: 
        j=j+1 
        False 

    elif y[j+1] < y[j]: 
     while False: 
      if y[j+2] <= y[j] and y[j+3] <= y[j+1]:      
       a.append(y[j+1]) 
       del y[j+1] 
       a.append(y[j+1]) 
       del y[j+1] 
      else: 
       j = j+1 
       if y[j] <= y[j+2] and y[j+1]<= y[j+3]: 
        stavek = True 
        a.append(y[j+1]) 
        del y[j+1] 
        a.append(y[j+1]) 
        del y[j+1] 
       else: 
        j=j+1 
        False 
+0

Kod yazarsanız, dili etiketlemelisiniz. İnsanların sorunuzu bulmasına yardımcı olur ve ayrıca sözdizimi rengini etkiler. – crashmstr

+0

Üzgünüm, Bu forum için yeni ve daha alışkın değilim :) – mcluka

+0

[Tur] (http://stackoverflow.com/tour) ve [Nasıl Yapılır] (http) hakkında iyi bilgiler var : //stackoverflow.com/help/how-to-ask) – crashmstr

cevap

0

while False yürütmek asla. Belki de do ->while'a bakmanız gerekir, böylece en az bir kez çalışır ve döngüye devam etmek için doğru veya yanlış olarak ayarladığınız yeni bir değişken tanıtın.