TransWikia.com

Skip time taking loop values to take input next value after certain time

Mathematica Asked by Dhruv Sharma on July 16, 2021

I am fitting using NonlinearModelFit, where I am trying to input guess values for parameters (g and xp1) from the for a loop. For a certain value of g or xp1, the loop takes infinitely long to compute and gets stuck. I want to skip to the next value of the loop after a certain time, say 5 seconds.

 pllcn22o = 
      Reap[For[g1 = -3, g1 < 6, g1 = g1 + 0.1,
         
         For[xp1 = -5, xp1 < 5, xp1 = xp1 + 0.5,
          pllcn22oo = 
           NonlinearModelFit[datal[2, tn, tend], 
            pllca22, {x0, f0, x1, f1, 
             x2, f2, {xp, xp1}, {g, g1}}, t, 
            MaxIterations -> 100000];
          If[ pllcn22oo["BIC"] < -1500 , 
           Sow[Join[{pllcn22oo["BIC"], "=g" g1, 
              pllcn22oo["BestFitParameters"]}]]]]]][[2]];
   pllcn22os= Sort[pllcn22o[[1]], #1[[1]] < #2[[1]] &]
    Export["pllc22o.mx", pllcn22os]

One Answer

Here is an example of MarcoB's suggestion:

AbsoluteTiming[
 TimeConstrained[Print[Pause[1]; 1], 3];
 TimeConstrained[Print[Pause[5]; 10], 3];
 TimeConstrained[Print[Pause[2]; 100], 3];
 ]

You can think of each Print statement as one iteration of the loop. Example output of the code:

1
100
{6.03724, Null}

This shows that it skipped the second Print statement when it took too long. The total time it took to run the code is 1 + 3 + 2 = 6 seconds. It would have taken 1 + 5 + 2 = 8 seconds but the second Print statement was interrupted after 3 seconds.

Answered by C. E. on July 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP