reattempt solve if iteration limit is reached
How can I reattempt to solve using the full newton raphson method when the 20 iteration limit is reached?
How can I reattempt to solve using the full newton raphson method when the 20 iteration limit is reached?
Hi JervisW,
You may increase the maximum number of iterations to something like 100 or more: Power Flow > Solution > Parameters > ITMXN
regards, chiangm
Nice, I didn't know about increasing the solution parameters. What if I wanted to check if the iteration limit is reached in my script?
To do this programmatically, I use the solved function. It looks at the last solution and returns an error code > 0 if there was a problem and returns 0 for no problem.
Assuming you have psspy.throwPsseExceptions = True near the start of your file:
import psspy
psspy.throwPsseExceptions = True
ITERATION_LIMIT = 1
def solve_and_reattempt(attempts=3):
for attempt in range(attempts):
try:
return psspy.fnsl()
except psspy.FnslError:
# an error solving, if iteration limit reached resolve
if psspy.solved() == ITERATION_LIMIT:
continue
# else re-raise Error
else:
raise
and you would use the solve_and_reattempt function like this:
solve_and_reattempt(attempts=2)
Comments