4 votes

comment multiplier un tableau gekko de FV ou de variables à un tableau gekko intermédiaire si les deux ont des dimensions différentes sans changer la quantité de FV ?

Bien sûr, il y a du code après, mais pour rester simple et exprimer mon problème, je vais seulement partager ceci. Tout fonctionne bien, j'ai juste besoin que le tableau "x" passe de la taille 24 au numéro de mon autre tableau (dans ce cas 100). Le tableau ne peut pas être modifié au début car il s'agit d'un facteur horaire. Je veux donc optimiser 24 valeurs et non pas créer un nouveau tableau et optimiser 100 valeurs différentes. Les 24 valeurs doivent se répéter les unes les autres car le tableau de taille 100 correspond à 4 jours et 4 heures (4*24+4=100). Bien sûr, je serais également heureux si quelqu'un connaissait une solution sans changer de dimension, mais je pense que ce n'est pas possible.

f=[1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06]
x4= [0.045930370209, 0.043303258083, 0.039624317151, 0.039318197146, 0.037919352547, 0.037661007306, 0.034399522806, 0.034002995811, 0.033886332129, 0.037339258323, 0.037931042705, 0.038383778229, 0.038823242557, 0.040123255664, 0.040823891738, 0.04379281023, 0.043943821635, 0.045684085291, 0.046003064191, 0.046954569286, 0.048654216051, 0.049955602478, 0.048859969614, 0.046682038822]
T_g=[10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 10.424666667, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 10.101444444, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222, 12.065722222]
x = m.Array(m.FV,24)
for i in range(24):
            x[i].value = x4[i]
            x[i].lower = 0.01
            x[i].upper = 0.15
            x[i].STATUS=1
e= m.Var(2.7,lb=1,ub=4)
l = m.Var(-35.1,lb=-38,ub=-30)
g = m.Var(7.1,lb=5,ub=9)
h = m.Var(0.142,lb=0.0,ub=1.5)
xop=[None]*1
ysimm=[None]*1
a=[None]*1
index = np.ones(N,int)
for i in range(N):
            index[i]= int(i%24)

a[0]=m.Intermediate((e / (1 + (l / (T_g - 40)) ** g) + h))
ysimm[0]=m.Intermediate(a[0]*f)
xop[0]=m.Intermediate(x[index]*ysimm[0])

0voto

John Hedengren Points 1

Utilisez les compréhensions de listes pour convertir a y ysimm aux listes.

import numpy as np
from gekko import GEKKO
m = GEKKO()
f=[1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, \
   1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, \
   1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, \
   1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, \
   0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, \
   0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, \
   0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, \
   0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, \
   0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 1.06, 1.06, 1.06, \
   1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06, 1.06]
x4= [0.045930370209, 0.043303258083, 0.039624317151, 0.039318197146, \
     0.037919352547, 0.037661007306, 0.034399522806, 0.034002995811, \
     0.033886332129, 0.037339258323, 0.037931042705, 0.038383778229, \
     0.038823242557, 0.040123255664, 0.040823891738, 0.04379281023, \
     0.043943821635, 0.045684085291, 0.046003064191, 0.046954569286, \
     0.048654216051, 0.049955602478, 0.048859969614, 0.046682038822]
T_g=[10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, \
     10.22025, 10.22025, 10.22025, 10.22025, 10.22025, 10.22025, \
     10.22025, 10.22025, 10.22025, 10.22025, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 10.424666667, \
     10.424666667, 10.424666667, 10.424666667, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 9.1760277778, \
     9.1760277778, 9.1760277778, 9.1760277778, 10.101444444, \
     10.101444444, 10.101444444, 10.101444444, 10.101444444, \
     10.101444444, 10.101444444, 10.101444444, 10.101444444, \
     10.101444444, 10.101444444, 10.101444444, 10.101444444, \
     10.101444444, 10.101444444, 10.101444444, 10.101444444, \
     10.101444444, 10.101444444, 10.101444444, 10.101444444, \
     10.101444444, 10.101444444, 12.065722222, 12.065722222, \
     12.065722222, 12.065722222, 12.065722222, 12.065722222, \
     12.065722222, 12.065722222, 12.065722222, 12.065722222, \
     12.065722222, 12.065722222]
N = 24
x = m.Array(m.FV,N)
for i in range(N):
   x[i].value = x4[i]
   x[i].lower = 0.01
   x[i].upper = 0.15
   x[i].STATUS=1
e = m.Var(2.7,lb=1,ub=4)
l = m.Var(-35.1,lb=-38,ub=-30)
g = m.Var(7.1,lb=5,ub=9)
h = m.Var(0.142,lb=0.0,ub=1.5)
M = len(f)
index = np.ones(M,int)
for i in range(M):
    index[i]= int(i%24)
a=[(e / (1 + (l / (T_g[i] - 40)) ** g) + h) for i in range(len(T_g))]
ysimm=[a[i]*f[i] for i in range(M)]
xop=[x[index[i]]*ysimm[i] for i in range(M)]
m.solve()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X