Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problema con la iteración #46

Open
jon85p opened this issue Dec 26, 2020 · 1 comment
Open

Problema con la iteración #46

jon85p opened this issue Dec 26, 2020 · 1 comment
Assignees

Comments

@jon85p
Copy link
Owner

jon85p commented Dec 26, 2020

Hay que comprobar que se tomen guesses distintos a medida que se va reintentando en la ventana de tiempo máxima esperada.

@xmagor xmagor assigned jon85p and xmagor and unassigned jon85p Jan 1, 2021
@xmagor
Copy link
Collaborator

xmagor commented Feb 22, 2021

He estado revisando con los Sistemas de Ecuaciones-SSEE mas complejos del directorio de ejemplos que tenemos:

  • evaporador_vertical_V3.enl
  • test_2_sinGuesses.enl

Validé que los guesses iniciales sean 1 para las variables que no estén directamente declaradas e imprimí la lista guesseBloque en el bucle en el que se encuentra el llamado del método de scipy de opt.root() :

pyENL/solver.py

Lines 199 to 222 in 78586c0

while tiempo_bloque < pyENL_timeout:
# print("Bloque número:",j)
# print(varsBloque, guessBloque,eqnsBloque)
solBloque = opt.root(pyENL_sistema, guessBloque,
args=(varsBloque, eqnsBloque,bloque), tol=tol, method=method)
asegura_convergencia = True
# print(solBloque['success'])
if solBloque['success'] == False:
asegura_convergencia = False
# Si no fue capaz de solucionar el bloque le cambia los guess
# a las variables que no estan solucionadas en ese bloque
for jj, varBloque in enumerate(varsBloque):
obtemp = varBloque
if not varBloque.solved:
obtemp.guess = random_lim(varBloque.lowerlim, varBloque.upperlim) # * objetoVar.units
varsBloque[jj] = obtemp
tiempo_fin = time()
tiempo_bloque = tiempo_fin - tiempo_inicio
else:
print('Bloque ', j, 'Resuelto!')
# return [],[],asegura_convergencia
# raise Exception("Gordillo y los chulos")
break

Y en ambos sistemas los bloques se resuelven en el primer llamado a opt.root(), ojalá encontraramos un SEE qué genere un bloque que el opt.root() no sea capaz de resolver bajo unos guesses iniciales.

Por ahora revisé el contenido de ese bucle

pyENL/solver.py

Line 199 in 78586c0

while tiempo_bloque < pyENL_timeout:
y en caso de que el opt.root() no sea capaz se escogerían nuevos guesses aleatoriamente dentro del rango disponible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants