2017-02-24 31 views
1

Netlogo 6への100-150の自作Netlogo 6を、Perlや別のスクリプト言語を使用してバッチでアップグレードしてください。 (必要な)手動検査と仕上げ。Netlogoの移行、下位互換性

Netlogo 6はNetlogo 4ファイルを開くことができないので、Netlogo 5でそれらを開き、Netlogo 6で保存して再度開いて保存して、いくつかアップグレードしました。特にエレガントな方法ではありません。

何かアドバイスはありますか?

答えて

3

Netlogo 6が4.1.3ファイルを読み込まない理由は、4.1.3ファイルが10または11であるのに対し、12セクションが必要だということです。セクションでは、文字列 "@#$#@#$#@"を返します。さらに、古い.nlogoファイルには、バージョン6で認識されない「CC-WINDOW」のパラメータがありました。最後に、Netlogo 6のボタンは、ティックが開始するまでそのボタンが無効かどうかを判断するために、値1または0でパラメータ化する必要があります。

次のpython 3コードは、すべてのNetlogoファイルを同じフォルダに入れ、 "CC-WINDOW"行を削除します。すべての "ボタン"ブロックの最後に1を加えます。コードがファイルを読み込むと、 "@#$#@#$#@"の数がカウントされます。ファイルの末尾に11より小さい数がある場合、合計で11を作成するのに十分な "@#$#@#$#@"ブレークを追加します。

このコードを実行する場合は、新しいフォルダに更新したい古いファイル。次のコードを含む.pyファイルを同じフォルダに配置し、実行すると、6.0互換バージョン()の新しいファイルが作成されます。そのフォルダ内のnetlogoファイル)。これはすべてのファイルで機能しません。たとえば、元のモデルの「グラフィックスウィンドウ」が正しくパラメータ化されていないため、1つのファイルが正しく更新されませんでした。つまり、このコードは、私がテストした4.1.3のモデルライブラリモデルの大部分で機能しました。また、Netlogo 6でファイルを開くことができることを知っているだけですが、実際にモデルが実際に実行されることを確認するために、後で何をする必要があるのか​​分かりません。

うまくいけば助けてください!私がある時点で明確でないかどうかを教えてください。

import os 

with open("files_updated.txt", "w") as files: 
    for filename in os.listdir("."): 
     if filename.endswith(".nlogo") and not filename.startswith("6"): 
      files.write(filename + '\n') 
      opened = open(filename, "r") 
      n = 0 
      printat = -1 
      cut_count = 0 
      count_breakers = 0 

      new_file_name = ("6_"+filename.strip(".txt") + ".nlogo") 
      print(new_file_name) 
      with open(new_file_name, "w") as out: 
       for line in opened: 
        n += 1 
        if line == "@#$#@#$#@\n": 
         count_breakers += 1 
        if line == "CC-WINDOW\n": 
         cut_count = 8 
        cut_count -= 1 
        if cut_count < 0: 
         out.write(line) 

        if line == "BUTTON\n" : 
         printat = n + 14 

        if printat == n: 
         out.write("1\n") 

       if count_breakers < 11: 
        out.write("@#$#@#$#@\n" * (11 - count_breakers)) 
+0

これは非常に明確で、進歩の手がかりを与えてくれます。示された警告はまた、それ自体のために話す。どのようにNetlogo 4と6のファイルレイアウトの差異について知っていますか?この知識を自分自身でどうやって得ることができますか? –

+0

私はテキストエディタ(Notepad ++)を使用してモデルライブラリからバージョン4と6の両方に存在するサンプルを開き、それらを比較してNetlogo 6バージョンのファイルに存在していたバージョン4ファイル。その後、Netlogo 4のバージョンが互換性を持つようになるまで、私はちょうどそれを試してみました。正確にエレガントではありませんが、テストしたほとんどの例では十分でした! –