2016-07-12 147 views
-2

要找到輸入數據文件Perl的機器學習

問題描述的啓動,處理和完成時間:輸入文件,我們需要處理一行一行,從行,我們必須添加第7列的值直到小於或等於30,它可以是n個行數,但是直到小於或等於30,並且從該輸出行,需要從第3列和第4列取得最大值,並且第2列值應該與逗號「,」第4列輸出應加上第3列和第4列值,其餘輸入行應符合上述條件。

運行下面的代碼時,它應該返回如下輸出預期輸出。但下面的代碼不返回的最後3行input.txt中的輸出,

請分享溶液或更好的解決方案,然後該代碼。

Perl代碼

#!/usr/bin/perl 

open(A,"output.txt")||die "File unable to open"; 
$k=0; 
while(<A>){ 

    @col = split(/\s+/,$_); 
     $k+="$col[6]"; 
    if($k <= 30) 
    { 
     push(@val,$_); 
    } 

    if($k > 30) 
    { 
     func(@val); 
     $k = 0; 
     @val=(); 
     @cl=(); 
     @BT=(); 
     @start=(); 
     @process=(); 
     $k+="$col[6]"; 
     push(@val,$_); 
    } 
} 

sub func() 
{ 
    foreach $line (@val){ 

      @cl = split(/\s+/,$line); 
      push(@BT,$cl[1]); 
      push(@start,$cl[3]); 
      push(@process,$cl[2]); 

      $star=(sort{$a<=>$b}@start)[-1]; 
      $proc=(sort{$a<=>$b}@process)[-1]; 
      $Bt=join(",",@BT); 
      $complete = $star+$proc;   

     } 
      print "Patch1(Job)Time\tStartingTime\tProcessing\tTimeCompletion\n$Bt\t$star\t$proc\t$complete\n"; 
} 

input.txt中

4.40609  5 1 4 7 14 9 
3.14721  36 1 1 10 10 10 
1.93361  98 2 1 4 5 7 
1.36379  30 3 1 12 13 6 
1.31525  83 2 1 7 5 3 
0.52453  61 3 5 8 5 9 
0.30074  84 20 1 26 13 4 
0.22983  17 4 10 15 12 9 
0.11886  9 10 5 24 12 8 
0.09495  67 30 2 36 7 2 
0.08804  24 16 5 28 11 14 
0.07005  35 26 6 35 11 9 
0.06632  38 11 9 26 14 12 
0.06436  50 21 3 36 12 4 
0.06268  14 11 5 27 9 7 
0.06131  11 19 2 33 8 2 
0.05119  10 22 7 33 10 2 
0.04004  45 1 4 37 6 6 
0.03790  88 11 1 34 8 7 
0.03244  86 27 4 45 13 6 
0.03171  91 17 5 34 8 9 
0.03135  85 9 1 34 7 5 
0.03127  25 10 1 33 6 16 
0.03055  72 9 1 33 6 9 
0.03030  34 8 8 32 13 9 
0.02963  75 18 1 40 9 1 
0.02919  51 17 10 34 14 3 
0.02904  1 24 9 35 8 5 
0.02537  21 4 8 31 8 22 
0.02205  100 26 2 48 11 8 
0.02187  41 9 3 39 12 9 
0.01731  3 10 5 39 12 7 
0.01698  44 2 14 34 11 8 
0.01613  93 17 6 40 10 10 
0.01388  20 13 5 41 11 21 
0.01243  70 9 12 29 6 7 
0.01128  76 9 11 33 8 21 
0.01116  60 5 11 30 5 8 
0.01113  47 26 7 49 12 5 
0.01038  32 9 15 34 14 7 
0.01018  46 27 2 50 6 5 
0.01000  27 1 9 44 7 3 
0.00941  42 11 10 39 12 7 
0.00940  6 30 1 55 7 11 
0.00802  23 26 6 44 4 15 
0.00801  28 5 10 35 6 4 
0.00630  55 4 9 44 12 8 
0.00556  78 26 1 55 6 23 
0.00533  31 21 15 38 6 7 
0.00516  13 9 10 41 9 6 
0.00515  97 3 4 45 5 9 
0.00500  29 4 14 42 14 5 
0.00491  54 12 6 43 6 2 
0.00478  33 5 6 47 10 8 
0.00422  37 14 15 42 13 10 
0.00413  79 19 3 53 8 15 
0.00408  52 28 2 61 9 3 
0.00372  53 12 7 41 4 2 
0.00369  16 2 12 40 4 9 
0.00361  87 13 7 47 8 7 
0.00349  68 1 12 48 6 1 
0.00293  64 26 4 63 13 6 
0.00273  96 22 10 52 9 10 
0.00244  74 19 1 60 9 12 
0.00216  40 28 1 65 7 10 
0.00187  66 17 13 47 7 2 
0.00181  43 22 15 51 10 8 
0.00173  82 25 4 67 14 17 
0.00154  49 12 9 53 10 4 
0.00151  12 14 8 57 13 1 
0.00147  62 14 13 43 4 11 
0.00143  18 26 2 70 12 12 
0.00132  7 24 15 54 9 25 
0.00130  69 27 14 54 6 6 
0.00126  90 27 1 72 11 9 
0.00117  94 24 11 58 8 12 
0.00105  99 10 14 45 5 8 
0.00095  2 13 4 55 4 6 
0.00075  56 7 10 54 7 8 
0.00067  48 27 4 66 4 5 
0.00056  8 23 13 60 7 6 
0.00053  89 17 10 64 12 8 
0.00051  92 16 8 67 14 10 
0.00034  65 28 6 78 11 8 
0.00026  71 12 12 62 8 8 
0.00024  22 24 15 64 6 23 
0.00022  15 22 12 65 5 8 
0.00022  26 16 15 66 13 17 
0.00022  77 26 6 72 4 22 
0.00020  81 5 14 62 8 16 
0.00018  57 17 13 61 4 5 
0.00017  80 23 11 74 10 14 
0.00016  73 27 13 76 11 9 
0.00015  59 16 9 69 6 7 
0.00014  19 12 12 66 7 1 
0.00014  58 29 10 81 10 6 
0.00014  63 26 15 72 8 25 
0.00008  95 25 8 77 4 11 
0.00007  39 22 13 74 6 11 
0.00006  4 22 14 76 7 8 

預計輸出

Batch1(Job)Time StartingTime Processing TimeCompletion 
5,36,98 4 2 6 
Batch1(Job)Time StartingTime Processing TimeCompletion 
30,83,61,84 5 20 25 
Batch1(Job)Time StartingTime Processing TimeCompletion 
17,9,67 10 30 40 
Batch1(Job)Time StartingTime Processing TimeCompletion 
24,35 6 26 32 
Batch1(Job)Time StartingTime Processing TimeCompletion 
38,50,14,11,10 9 22 31 
Batch1(Job)Time StartingTime Processing TimeCompletion 
45,88,86,91 5 27 32 
Batch1(Job)Time StartingTime Processing TimeCompletion 
85,25,72 1 10 11 
Batch1(Job)Time StartingTime Processing TimeCompletion 
34,75,51,1 10 24 34 
Batch1(Job)Time StartingTime Processing TimeCompletion 
21,100 8 26 34 
Batch1(Job)Time StartingTime Processing TimeCompletion 
41,3,44 14 10 24 
Batch1(Job)Time StartingTime Processing TimeCompletion 
93 6 17 23 
Batch1(Job)Time StartingTime Processing TimeCompletion 
20,70 12 13 25 
Batch1(Job)Time StartingTime Processing TimeCompletion 
76,60 11 9 20 
Batch1(Job)Time StartingTime Processing TimeCompletion 
47,32,46,27,42 15 27 42 
Batch1(Job)Time StartingTime Processing TimeCompletion 
6,23,28 10 30 40 
Batch1(Job)Time StartingTime Processing TimeCompletion 
55 9 4 13 
Batch1(Job)Time StartingTime Processing TimeCompletion 
78,31 15 26 41 
Batch1(Job)Time StartingTime Processing TimeCompletion 
13,97,29,54,33 14 12 26 
Batch1(Job)Time StartingTime Processing TimeCompletion 
37,79,52,53 15 28 43 
Batch1(Job)Time StartingTime Processing TimeCompletion 
16,87,68,64 12 26 38 
Batch1(Job)Time StartingTime Processing TimeCompletion 
96,74 10 22 32 
Batch1(Job)Time StartingTime Processing TimeCompletion 
40,66,43 15 28 43 
Batch1(Job)Time StartingTime Processing TimeCompletion 
82,49,12 9 25 34 
Batch1(Job)Time StartingTime Processing TimeCompletion 
62,18 13 26 39 
Batch1(Job)Time StartingTime Processing TimeCompletion 
7 15 24 39 
Batch1(Job)Time StartingTime Processing TimeCompletion 
69,90,94 14 27 41 
Batch1(Job)Time StartingTime Processing TimeCompletion 
99,2,56,48 14 27 41 
Batch1(Job)Time StartingTime Processing TimeCompletion 
8,89,92 13 23 36 
Batch1(Job)Time StartingTime Processing TimeCompletion 
65,71 12 28 40 
Batch1(Job)Time StartingTime Processing TimeCompletion 
22 15 24 39 
Batch1(Job)Time StartingTime Processing TimeCompletion 
15,26 15 22 37 
Batch1(Job)Time StartingTime Processing TimeCompletion 
77 6 26 32 
Batch1(Job)Time StartingTime Processing TimeCompletion 
81,57 14 17 31 
Batch1(Job)Time StartingTime Processing TimeCompletion 
80,73,59 13 27 40 
Batch1(Job)Time StartingTime Processing TimeCompletion 
19,58 12 29 41 
Batch1(Job)Time StartingTime Processing TimeCompletion 
63 15 26 41 
Batch1(Job)Time StartingTime Processing TimeCompletion 
95,39,4 25 14 39 
+1

請問您可以在程序中加上'use strict'和'use warnings'並正確聲明所有的變量。所以我們可以幫助你。 – Arijit

回答

3

一些改進建議秒。

  1. use strictuse warnings。然後解決他們揭示的問題(主要是,我懷疑,未聲明的變量)。
  2. 使用3精氨酸open()和詞彙文件句柄(open my $fh, '<', $file),
  3. 包括在open()/die()消息(open ... or die "$file: $!"$!
  4. split(/\s+/, $_)與僅僅split相同。
  5. 這些報價在$k+="$col[6]"$k += $col[6])中是不必要的。
  6. func()是子程序的一個可怕的名字。
  7. func()使用了很多全局變量。
  8. 您傳遞@valfunc(),但子例程,使用全局副本,而不是參數。

我還沒有時間看您正在使用的算法。