ループ内で複数のデータ ファイルを読み取ることが困難です。非常に多くの異なるインスタンスで数学的モデルを解決したいと考えています。各インスタンスをtxtファイルに保存しています。インスタンスは、いくつかのパラメーター (数値、配列、行列) によって定義されます。たとえば、インスタンス InstanciaSEC_E0_m1_J3_K2.txt には次のデータが含まれています。
E = 0
m = 1
J = 3
K = 2
p = {0: 0.696969696969697, 1: 0.30303030303030304}
UDC = {(0, 1): 9.0, (1, 2): 10.0, (0, 0): 5.0, (1, 1): 6.0, (1, 0): 9.0, (0, 2): 6.0}
UDU = {(0, 1): 5.0, (1, 2): 4.0, (0, 0): 2.0, (1, 1): 4.0, (1, 0): 1.0, (0, 2): 3.0}
UAC = {(0, 1): 1.0, (1, 2): 0.0, (0, 0): 2.0, (1, 1): 3.0, (1, 0): 4.0, (0, 2): 0.0}
UAU = {(0, 1): 9.0, (1, 2): 10.0, (0, 0): 5.0, (1, 1): 6.0, (1, 0): 10.0, (0, 2): 6.0}
単一のインスタンスを読み取るには、それを .py ファイルに変更してインポートするだけです。
import InstanciaSEC_E0_m1_J3_K2 as I
次に、次のようにして、内部の情報にアクセスします。
I.E=E
I.m=m
I.UDC=UDC
等々。インスタンス情報を取得したら、モデルを構築して解決し、解決方法に関する必要な情報を取得できます。
そのような多くのインスタンス ファイルに対して同じことができるようにしたいと考えています。理想的には、データ ファイルを繰り返しインポートし、情報を抽出し、モデルを解決して、次のデータ ファイルに進むことができる必要があります。メイン関数内のループでインポートを実行してそれを回避できるかどうかはわかりません.作業中...次の関数を定義して、インスタンス ファイルからデータを取得します。
def getVarFromFile(filename):
import imp
f = open(filename)
global data
data = imp.load_source('data', "", f)
f.close()
次に、メイン コード内で次のことを行います。
Exp = 5
for K in range(50,101,50):
for J in range(5,6,1):
for m in range(2,3,1):
for E in range(Exp):
getVarFromFile('/Users/Carlos/Desktop/Stab2/InstanciasSeguridad/InstanciaSEC_E%s_m%s_J%s_K%s.py' %(E,m,J,K))
print data.E
print data.m
print data.J
print data.K (etc.)
print "/Users/Carlos/Desktop/Stab2/InstanciasSeguridad/InstanciaSEC_E%s_m%s_J%s_K%s.py" %(E,m,J,K)
最後の印刷は、私が実際にデータファイルをループしていることを確認しますが、取得している情報は正しくありません..私の目には、imp.load_source()関数だけが怪しいビットです(ドキュメントを読んだ後でも)。どんな助けでも素晴らしいでしょう。たぶん、私はこれらすべてを間違った方法で行っているので、データ ファイルから変数をループして取得するもっと簡単な方法があります。