falsche Matrixberechnung
Verfasst: Samstag 13. Oktober 2018, 19:29
Mir wird die Matrix bp in Periode 5 falsch erstellt. Mir wird hier 20,21,22,23 ausgegeben. Ich hab das Problem jetzt so vereinfacht, dass das Erstellen von bp nicht mehr abhängig von dem Inhalt der ersten Schleife abhängig ist. Ich verstehe einfach nicht wie es zu den Werten kommt. Suche jetzt schon seit 15 Stunden nach dem Grund und werde langsam wahnsinnig...
Hier der Code:
Anfragen =np.array([1,4,5,2,7,0,9,11,4,7])
bp = np.arange(40).reshape(10,4)
peter=np.array([100,100,100,100])
a = np.array([ [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0],
[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0] ])
v=[]
for t in range(10):
if t==0:
x = [] #ist die Liste x leer
myy = berechne_bidpreise1(f, teta, flugkapazität, a, p, q, t, x)
if t in reoptperiods and t != 0:
x = np.zeros((t,12)) #wird eine 0er Matrix mit axis[0]= Anzahl der bisherigen Perioden hergestellt
for t in range(t): #für alle Perioden bis zur aktuellen Reoptimierung
if v[t]==1: #wenn die Ba in Periode t angenommen wird, dann...
x[t,Anfragen[t]] = 1
myy = berechne_bidpreise1(f, teta, flugkapazität, a, p, q, t, x)
for i in range(4):
bp[t,i]=a[i,Anfragen[t]]*peter
v.append(1)
Output:
bp[5,0]:20
bp[5,1]:21
bp[5,2]:22
bp[5,3]:23
Alle anderen Perioden werden richtig berechnet....
Hier der Code:
Anfragen =np.array([1,4,5,2,7,0,9,11,4,7])
bp = np.arange(40).reshape(10,4)
peter=np.array([100,100,100,100])
a = np.array([ [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0],
[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0] ])
v=[]
for t in range(10):
if t==0:
x = [] #ist die Liste x leer
myy = berechne_bidpreise1(f, teta, flugkapazität, a, p, q, t, x)
if t in reoptperiods and t != 0:
x = np.zeros((t,12)) #wird eine 0er Matrix mit axis[0]= Anzahl der bisherigen Perioden hergestellt
for t in range(t): #für alle Perioden bis zur aktuellen Reoptimierung
if v[t]==1: #wenn die Ba in Periode t angenommen wird, dann...
x[t,Anfragen[t]] = 1
myy = berechne_bidpreise1(f, teta, flugkapazität, a, p, q, t, x)
for i in range(4):
bp[t,i]=a[i,Anfragen[t]]*peter
v.append(1)
Output:
bp[5,0]:20
bp[5,1]:21
bp[5,2]:22
bp[5,3]:23
Alle anderen Perioden werden richtig berechnet....