[Swift-commit] r5540 - SwiftApps/SciColSim

jonmon at ci.uchicago.edu jonmon at ci.uchicago.edu
Wed Feb 1 10:51:40 CST 2012


Author: jonmon
Date: 2012-02-01 10:51:40 -0600 (Wed, 01 Feb 2012)
New Revision: 5540

Modified:
   SwiftApps/SciColSim/annealing.swift
Log:
annealing.swift now has comand line arguments for -maxrange, -minrange, -rangeinc



Modified: SwiftApps/SciColSim/annealing.swift
===================================================================
--- SwiftApps/SciColSim/annealing.swift	2012-01-31 23:29:20 UTC (rev 5539)
+++ SwiftApps/SciColSim/annealing.swift	2012-02-01 16:51:40 UTC (rev 5540)
@@ -3,9 +3,10 @@
 
 type file;
 
-type Res {
-  float loss;
-  float sdev;
+type Res
+{
+    float loss;
+    float sdev;
 }
 
 global boolean FIX_VARIABLES = true;
@@ -13,181 +14,214 @@
 global int Nworkers = @toint(@arg("nworkers","4"));
 global int rerunsPerApp;
 
-(float nx) newx(float x, float dx) 
+( float nx ) newx( float x, float dx )
 {
-    float r = (random()) ; # / (pow(2.0,31.0)-1.0);
-    if (r > 0.5){
-        nx = x + (random())*dx; # /(pow(2.0,31.0)-1.0);
-    } else {
-        nx = x - (random())*dx; # /(pow(2.0,31.0)-1.0);
+    float r = (random()); // / (pow(2.0,31.0)-1.0);
+
+    if (r > 0.5)
+    {
+        nx = x + (random())*dx; // /(pow(2.0,31.0)-1.0);
     }
+    else
+    {
+        nx = x - (random())*dx; // /(pow(2.0,31.0)-1.0);
+    }
     // tracef("newx(%f,%f)=%f\n",x,dx,nx);
 }
 
-app (file outfile, file loss) evolve (string args[], file graph)
+app  (file outfile, file loss ) evolve ( string args[], file graph )
 {
-  evolve @loss args stdout=@outfile ;  // graph is passed implicitly
+    evolve @loss args stdout=@outfile;  // graph is passed implicitly
 }
 
-app (file x) sumloss(file loss[])
+app ( file x ) sumloss( file loss[] )
 {
-  sumloss @filenames(loss) stdout=@x;
+    sumloss @filenames(loss) stdout=@x;
 }
 
 /*
 
-Program structure:
+  Program structure:
 
   main
-    optimizer_sweep() - formerly, python script
-      multi_annealing()
-        multi_loss()
-          evolve()
-        sumloss()
+  optimizer_sweep() - formerly, python script
+  multi_annealing()
+  multi_loss()
+  evolve()
+  sumloss()
 */
 
-(file bestfile, file maxfile) multi_annealing (
-    float T_start,
-    float T_end, 
-    float Target_rejection, 
-    int evolve_reruns, 
-    float starting_jump,
-    float params0[],
-    float target_innov,
-    int annealing_cycles)
+( file bestfile, file maxfile ) multi_annealing (
+                                                  float T_start,
+                                                  float T_end,
+                                                  float Target_rejection,
+                                                  int evolve_reruns,
+                                                  float starting_jump,
+                                                  float params0[],
+                                                  float target_innov,
+                                                  int annealing_cycles )
 {
-    int cycle=10;     # const
-    int NEVOPARAMS=5; # const - 5 params, alpha 1,m through delta, does not include target_innovation
+    int cycle      = 10;     // const
+    int NEVOPARAMS = 5;      // const - 5 params, alpha 1,m through delta, does not include target_innovation
 
     float rejection[][];  // [i][j] where i is cycle and j is evolve-parameter (alpha_i, alpha_m, beta, gamma, delta)
 
     float x[][], dx[][], curr_loss[], curr_sdev[];
-    
+
     Res mlres[][];
+
     mlres[0][0] = multi_loss( 0, 0, params0, target_innov, evolve_reruns ); // FIXME: serves for all evolve-params ???
-    tracef("multi_annealing: AR: initial: %f +- %f\n",mlres[0][0].loss,mlres[0][0].sdev);
+    tracef( "multi_annealing: AR: initial: %f +- %f\n", mlres[0][0].loss, mlres[0][0].sdev );
 
-    foreach j in [0:NEVOPARAMS-1] {
-        x[0][j]=params0[j];
-        dx[0][j] = starting_jump;
-	rejection[0][j] = 0.0;
-        curr_loss[j] = mlres[0][0].loss;
-        curr_sdev[j] = mlres[0][0].sdev;
+    foreach j in [0:NEVOPARAMS-1]
+    {
+        x[0][j]         = params0[j];
+        dx[0][j]        = starting_jump;
+        rejection[0][j] = 0.0;
+        curr_loss[j]    = mlres[0][0].loss;
+        curr_sdev[j]    = mlres[0][0].sdev;
     }
 
-    iterate iter_i {    # foreach i in [1:annealing_cycles]
-         int i = iter_i + 1;
+    iterate iter_i
+    {    // foreach i in [1:annealing_cycles]
+        int i = iter_i + 1;
 
         // set new temperature, rejection threshold, and dx values for this cycle
 
-        float temperature = T_start*exp( @tofloat(i-1)*(jlog(T_end)-jlog(T_start))/@tofloat(annealing_cycles));
+        float temperature = T_start*exp( @tofloat( i-1 ) * ( jlog( T_end ) - jlog( T_start ) ) / @tofloat( annealing_cycles ) );
 
-        tracef(@strcat("multi_annealing: AR: i=%i ....T = ",color(3,"%f"),"\n"), i, temperature);
+        tracef( @strcat( "multi_annealing: AR: i=%i ....T = ", color( 3, "%f" ),"\n" ), i, temperature );
 
-	// On each new "major" cycle within the annealing_cycles (other than the first) set new rejection and dx values
+        // On each new "major" cycle within the annealing_cycles (other than the first) set new rejection and dx values
 
-        if ( i %% cycle == 1 && i > 1 ){ 
-            tracef("multi_annealing: new cycle at i=%i\n",i);
-            tracef(color(Pink, "multi_annealing: AR: New cycle at %i: prev dx[0-4]=[%f %f %f %f %f]\n"),i,dx[i-1][0],dx[i-1][1],dx[i-1][2],dx[i-1][3],dx[i-1][4]);
-            foreach  k in [0:NEVOPARAMS-1] {
-                float newrejection = rejection[i-1][k] / @tofloat(cycle);
-                if (newrejection > 0.0){
-                    dx[i][k] = dx[i-1][k] / (newrejection / Target_rejection);
-                    # FIXME: re-enable: rejection[i][k]=0.0;
+        if ( i %% cycle == 1 && i > 1 )
+        {
+            tracef( "multi_annealing: new cycle at i=%i\n", i );
+            tracef( color( Pink, "multi_annealing: AR: New cycle at %i: prev dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i-1][0], dx[i-1][1], dx[i-1][2], dx[i-1][3], dx[i-1][4] );
+            foreach k in [0:NEVOPARAMS-1]
+            {
+                float newrejection = rejection[i-1][k] / @tofloat( cycle );
+                if ( newrejection > 0.0 )
+                {
+                    dx[i][k] = dx[i-1][k] / ( newrejection / Target_rejection );
+                    // FIXME: re-enable: rejection[i][k]=0.0;
                 }
-                else{
+                else
+                {
                     dx[i][k] = dx[i-1][k] * 2.0;
-                    # FIXME: re-enable: rejection[i][k]=rejection[i-1][k];
+                    // FIXME: re-enable: rejection[i][k]=rejection[i-1][k];
                 }
                 // FIXME: HANGS? : tracef(color(Red,"Recomputed rejection: i=%d k=%d dx[i][k]=%f\n"), i, k, dx[i][k]);
             }
-            tracef(color(Blue, "multi_annealing: AR: New cycle at %i: dx[0-4]=[%f %f %f %f %f]\n"),i,dx[i][0],dx[i][1],dx[i][2],dx[i][3],dx[i][4]);
+            tracef( color( Blue, "multi_annealing: AR: New cycle at %i: dx[0-4]=[%f %f %f %f %f]\n" ), i, dx[i][0], dx[i][1], dx[i][2], dx[i][3], dx[i][4] );
         }
-        else { # If not new cycle, set dx[i][*] from previous dx ([i-1]). rejection[i]j] is set later.
-            foreach  k in [0:NEVOPARAMS-1] {
+        else
+        { // If not new cycle, set dx[i][*] from previous dx ([i-1]). rejection[i]j] is set later.
+            foreach k in [0:NEVOPARAMS-1]
+            {
                 dx[i][k] = dx[i-1][k];
             }
         }
-        #foreach j in [0:NEVOPARAMS-1] { // Try a new value for each non-fixed param; then write results and accept or reject
-        iterate j {  // Try a new value for each non-fixed param; then write results and accept or reject
+        //foreach j in [0:NEVOPARAMS-1] { // Try a new value for each non-fixed param; then write results and accept or reject
+        iterate j
+        {  // Try a new value for each non-fixed param; then write results and accept or reject
             // float try_x[];
-            int curr = (i * NEVOPARAMS) + j;
+            int curr = ( i * NEVOPARAMS ) + j;
             int prev = curr-1;
             // tracef("in multi_annealing: i=%i j=%i curr=%i prev=%i\n", i, j, curr, prev);
-            if ( /*(!FIX_VARIABLES) || */ (var_fixed[j]==0) ) {  # Adjustable vars
-                # fixed=1,1,0,0,0: FIXME: FIX_VARIABLES flag has faulty logic but OK when TRUE
+            if ( /*(!FIX_VARIABLES) || */ ( var_fixed[j] == 0 ) ) {  // Adjustable vars
+                // fixed=1,1,0,0,0: FIXME: FIX_VARIABLES flag has faulty logic but OK when TRUE
                 float try_x[];
-                foreach k in [0:NEVOPARAMS-1] { // Select the evolve params to try
-                    if ( k < j ) {
+                foreach k in [0:NEVOPARAMS-1]
+                { // Select the evolve params to try
+                    if ( k < j )
+                    {
                         try_x[k] = x[i][k]; // already set x[i][k]
                     }
-                    else {
-                        if ( k == j ) {
+                    else
+                    {
+                        if ( k == j )
+                        {
                             try_x[k] = newx(x[i-1][j],dx[i-1][j]); // permute x[i-1][j]
                         }
-                        else { // k > j
+                        else
+                        { // k > j
                             try_x[k] = x[i-1][k]; // use x[i-1][k] (from prior cycle)
                         }
                     }
                 }
-                tracef(@strcat("multi_annealing: AR: ", color(10,"%f"), " ", color(9,"%i"),"\n"), try_x[j],j);
+                tracef( @strcat( "multi_annealing: AR: ", color( 10,"%f" ), " ", color( 9,"%i" ),"\n" ), try_x[j], j );
                 // Up to here, x[] and dx[] are only set for previous i
-                mlres[i][j] = multi_loss(i,j,try_x, target_innov, evolve_reruns); # do the N evolve()'s, N=evolve_reruns
-                tracef("multi_annealing: AR: %f +- %f\n", mlres[i][j].loss, mlres[i][j].sdev);
+                mlres[i][j] = multi_loss( i, j, try_x, target_innov, evolve_reruns ); // do the N evolve()'s, N=evolve_reruns
+                tracef( "multi_annealing: AR: %f +- %f\n", mlres[i][j].loss, mlres[i][j].sdev );
                 // Beyond this point, x[] and dx[] are being set for this i,j
 
                 float ALOT=100000000000.0; // 100,000,000,000. = 10^11
-                if (mlres[i][j].loss < ALOT) { 
-                    tracef("multi_annealing: AF: best_opt_some.txt: %f,%f,%f,%f,%f,%f,%f,%f\n",
-                           target_innov,mlres[i][j].loss,try_x[0],try_x[1],try_x[2],try_x[3],try_x[4],mlres[i][j].sdev);
-                    tracef(color(Red,"multi_annealing: AF: max_dist.txt - tbd\n")); // FIXME: max_dist is global set in evolve()
+
+                if ( mlres[i][j].loss < ALOT )
+                {
+                    tracef( "multi_annealing: AF: best_opt_some.txt: %f,%f,%f,%f,%f,%f,%f,%f\n",
+                           target_innov, mlres[i][j].loss, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4], mlres[i][j].sdev );
+                    tracef( color( Red,"multi_annealing: AF: max_dist.txt - tbd\n" ) ); // FIXME: max_dist is global set in evolve()
                 }
-                else {  // does this ever occur? if so did we want to still do the ratio computation above???
-                    tracef("multi_annealing: Loss %f > ALOT at [i][j] = [%d][%d]\n", mlres[i][j].loss, i ,j);
+                else
+                {  // does this ever occur? if so did we want to still do the ratio computation above???
+                    tracef( "multi_annealing: Loss %f > ALOT at [i][j] = [%d][%d]\n", mlres[i][j].loss, i ,j );
                 }
-                float ratio = min(1.0, exp( -(mlres[i][j].loss-curr_loss[prev]) / temperature));
-                float r = (random()) ; # / (pow(2.0,31.0)-1.0);  // FIXME: AR: why all the 2^31's ???
+
+                float ratio = min( 1.0, exp( -( mlres[i][j].loss - curr_loss[prev] ) / temperature ) );
+                float r     = (random()) ; // / (pow(2.0,31.0)-1.0);  // FIXME: AR: why all the 2^31's ???
+
                 tracef("multi_annealing: AR: %f vs %f\n", r, ratio);
-                if (r > ratio) {  // Reject new parameter
-                    x[i][j] = x[i-1][j];
-                    rejection[i][j] = rejection[i-1][j] + 1.0;  // FIXME: AR: Is this correct? incr rejection? 
+
+                if (r > ratio)
+                {  // Reject new parameter
+                    x[i][j]         = x[i-1][j];
+                    rejection[i][j] = rejection[i-1][j] + 1.0;  // FIXME: AR: Is this correct? incr rejection?
                     curr_loss[curr] = curr_loss[prev];
                     curr_sdev[curr] = curr_sdev[prev];
-                    # FIXME: AR: the following prints seem to replicate values in the .cpp version - please clarify.
-                    tracef("multi_annealing: AR: %i,%i %i Did not accept: %f (%i)\n", i, j, i, try_x[j], j);
-                    tracef("multi_annealing: AR: %f %f %f %f %f\n", try_x[0],try_x[1],try_x[2],try_x[3],try_x[4]);
+                    // FIXME: AR: the following prints seem to replicate values in the .cpp version - please clarify.
+                    tracef( "multi_annealing: AR: %i,%i %i Did not accept: %f (%i)\n", i, j, i, try_x[j], j );
+                    tracef( "multi_annealing: AR: %f %f %f %f %f\n", try_x[0],try_x[1],try_x[2],try_x[3],try_x[4] );
                 }
-                else {           // Accept new parameter
-                    tracef("multi_annealing: Accepting try_x[j], i=%i j=%i\n",i,j);
-                    x[i][j] = try_x[j];
-                    rejection[i][j] = rejection[i-1][j];  // FIXME: AR: Is this correct? no incr of rejection? 
-                    tracef("multi_annealing: Accepting try_x[j], i=%i j=%i try_x[j]=%f\n",i,j,try_x[j]);
+                else
+                {           // Accept new parameter
+                    tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i\n",i,j );
+
+                    x[i][j]         = try_x[j];
+                    rejection[i][j] = rejection[i-1][j];  // FIXME: AR: Is this correct? no incr of rejection?
                     curr_loss[curr] = mlres[i][j].loss;
                     curr_sdev[curr] = mlres[i][j].sdev;
+
+                    tracef( "multi_annealing: Accepting try_x[j], i=%i j=%i try_x[j]=%f\n", i, j, try_x[j] );
                     float rj[];
-                    foreach k in [0:NEVOPARAMS-1] {  # FIXME!!!
-                        if (k <= j) {
-                           rj[k] = rejection[i][k]; # Was either set from previous j or just set for this j
+                    foreach k in [0:NEVOPARAMS-1]
+                    {  // FIXME!!!
+                        if (k <= j)
+                        {
+                            rj[k] = rejection[i][k]; // Was either set from previous j or just set for this j
                         }
-                        else {
-                           rj[k] = rejection[i-1][k]; # Not yet set, use previous
+                        else
+                        {
+                            rj[k] = rejection[i-1][k]; // Not yet set, use previous
                         }
                     }
                     tracef(@strcat("multi_annealing: AR: [%i][%i] ", color(8,"Rejection counts: "),
-                           color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"),
+                                   color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"),
                            i, j, rj[0], rj[1], rj[2], rj[3], rj[4]);
                     tracef(@strcat("multi_annealing: AR: %i ", color(8,"***** Did accept! "),
-                            color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"),
-                            i, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4]);
+                                   color(1,"%f"), " ", color(7,"%f"), " ", color(5,"%f"), " ", color(9,"%f"), " ", color(6,"%f"), "\n\n"),
+                           i, try_x[0], try_x[1], try_x[2], try_x[3], try_x[4]);
                 }
             }
-            else { # Fixed Vars
-                x[i][j] = x[i-1][j];
+            else
+            { // Fixed Vars
+                x[i][j]         = x[i-1][j];
                 rejection[i][j] = rejection[i-1][j];
                 curr_loss[curr] = curr_loss[prev];
                 curr_sdev[curr] = curr_sdev[prev];
-                # dx[i][j] not set for fixed vars
-           }
+                // dx[i][j] not set for fixed vars
+            }
         } until(j == NEVOPARAMS-1);
     } until(iter_i == (annealing_cycles-1));
 }
@@ -195,157 +229,152 @@
 (Res r) multi_loss( int ci, int cj, float x[], float target_innov, int evolve_reruns )
 // (Res r, Stats s) multi_loss( int ci, int cj, float x[], float target_innov, int evolve_reruns ) FIXME: To obtain stats
 {
-  file rfile[];
-  file ofile[]; // FIXME: to obtain timings and otehr stats
-  tracef("multi_loss: entered: ci=%i cj=%i target_innov=%f evolve_reruns=%i x=%q\n",ci, cj, target_innov,evolve_reruns,x);
+    file rfile[];
+    file ofile[]; // FIXME: to obtain timings and otehr stats
 
-  int appCalls = @toint(@tofloat(evolve_reruns) / @tofloat(rerunsPerApp));  # FIXME: handle fractional issues and rounding etc. For now must divide evenly
+    tracef("multi_loss: entered: ci=%i cj=%i target_innov=%f evolve_reruns=%i x=%q\n",ci, cj, target_innov,evolve_reruns,x);
 
-tracef("multi_loss appCalls=%i\n", appCalls);
-  foreach i in [1:appCalls] {  // repeats of the evolove() - same as n_reruns
-    file outfile; // FIXME: map and save in future 
-    string args[] = [ // FIXME: move this to a setargs() function
-      //    alpha_i        alpha_m        beta           gamma          delta          target_innov
+    int appCalls = @toint(@tofloat(evolve_reruns) / @tofloat(rerunsPerApp));  // FIXME: handle fractional issues and rounding etc. For now must divide evenly
+
+    tracef("multi_loss appCalls=%i\n", appCalls);
+
+    foreach i in [1:appCalls]
+    {  // repeats of the evolove() - same as n_reruns
+        file outfile; // FIXME: map and save in future
+        string args[] = [ // FIXME: move this to a setargs() function
+            //    alpha_i        alpha_m        beta           gamma          delta          target_innov
             @strcat(x[0]), @strcat(x[1]), @strcat(x[2]), @strcat(x[3]), @strcat(x[4]), @strcat(target_innov),
-      
-      //     n_epochs n_steps evolve_reruns           range
-      //    "40000",  "20",   @strcat(evolve_reruns), "2",
-            "40000",  "20",   @strcat(rerunsPerApp),  "2", 
-      
-      //    verbose_level
+
+            //     n_epochs n_steps evolve_reruns           range
+            //    "40000",  "20",   @strcat(evolve_reruns), "2",
+            "40000",  "20",   @strcat(rerunsPerApp),  "2",
+
+            //    verbose_level
             "1",
-      
-      //    T_start T_end   Annealing_steps Target_rejection Starting_jump
+
+            //    T_start T_end   Annealing_steps Target_rejection Starting_jump
             "2.",   "0.01", "2",            "0.3",           "2.3",
-      
-      //    FREEZE: alpha_i alpha_m beta gamma delta
-                    "1",    "1",    "0", "0",  "0",
-      
-      //   operation-code:(m,a) Nworkers           seed
-           "m",                 @strcat(Nworkers), "1234567" ];
 
-    file graph <"movie_graph.txt">;
-    (outfile, rfile[i]) = evolve(args,graph); 
-    // (ofile[i], rfile[i]) = evolve(args,graph); 
-    tracef("multi_loss: i=%i calling evolve, args=%q\n", i, args);
-    // tracef("multi_loss: after evolve: i=%i %k %k\n", i, outfile, rfile[i]);
-  }
-  file sumfile = sumloss(rfile);
-  r = readData(sumfile);
-  tracef("multi_loss: returning: ci=%i cj=%i r.loss=%f r.sdev=%f\n",ci,cj,r.loss,r.sdev);
-  // file statfile = sumstats(ofile);  FIXME: to obtain timings and otehr stats
-  // s = readStat(statsfile);          FIXME: to obtain timings and otehr stats
+            //    FREEZE: alpha_i alpha_m beta gamma delta
+            "1",    "1",    "0", "0",  "0",
+
+            //   operation-code:(m,a) Nworkers           seed
+            "m",                 @strcat(Nworkers), "1234567" ];
+
+        file graph <"movie_graph.txt">;
+
+        ( outfile, rfile[i] ) = evolve( args, graph );
+        // (ofile[i], rfile[i]) = evolve(args,graph);
+
+        tracef("multi_loss: i=%i calling evolve, args=%q\n", i, args);
+        // tracef("multi_loss: after evolve: i=%i %k %k\n", i, outfile, rfile[i]);
+    }
+    file sumfile = sumloss(rfile);
+    r            = readData(sumfile);
+
+    tracef("multi_loss: returning: ci=%i cj=%i r.loss=%f r.sdev=%f\n",ci,cj,r.loss,r.sdev);
+    // file statfile = sumstats(ofile);  FIXME: to obtain timings and otehr stats
+    // s = readStat(statsfile);          FIXME: to obtain timings and otehr stats
 }
 
 optimizer_sweep() // Implements logic of python driver script
 {
-  int minrange=58;
-  int maxrange=59;
-  int rangeinc=50;
+    int minrange = @toint(@arg("minrange", "58"));
+    int maxrange = @toint(@arg("maxrange", "59"));
+    int rangeinc = @toint(@arg("rangeinc", "50"));
 
-  //int maxrange=1009;
-  //int maxrange=209;
+    // FIXME: add provision for random priming and random param values when x[i] == -100 (see optimizer.cpp main())
 
-  // FIXME: add provision for random priming and random param values when x[i] == -100 (see optimizer.cpp main())
+    int nreps = 1; // 15
 
-  int nreps=1; # 15
-
 //    file bestfile <single_file_mapper; file=@strcat("output/T",target,".R",rep,".best_opt_some")>;
 //    file maxfile <single_file_mapper; file=@strcat("output/T",target,".R",rep,".max_dist")>;
 
-  foreach target_innov in [minrange:maxrange:rangeinc] {
-    foreach rep in [1:nreps] {
-      file outfile;  // <single_file_mapper; file=@strcat("output/T",target_innov,".R",rep,".out")>;
-      file lossfile; // <single_file_mapper; file=@strcat("output/T",target_innov,".R",rep,".loss_data")>;
-/*
-      (outfile,lossfile) = multi_annealing(
-         T_start          = 2.0,
-         T_end            = 0.01,
-         Target_rejection = 0.3,
-         evolve_reruns    = 10,
-         starting_jump    = 2.3,
-         params0[]        = [0.0, 0.0, 4.0, 50.0, -1.0],
-         @tofloat(target_innov),
-         annealing_cycles = 2); 
-*/
-      (outfile,lossfile) = multi_annealing(
-         2.0,
-         0.01,
-         0.3,
-         100,
-         2.3,
-         [0.0, 0.0, 4.0, 50.0, -1.0],
-         @tofloat(target_innov),
-         30);
+    foreach target_innov in [minrange:maxrange:rangeinc]
+    {
+        foreach rep in [1:nreps]
+        {
+            file outfile;  // <single_file_mapper; file=@strcat("output/T",target_innov,".R",rep,".out")>;
+            file lossfile; // <single_file_mapper; file=@strcat("output/T",target_innov,".R",rep,".loss_data")>;
+
+            ( outfile,lossfile ) = multi_annealing(
+                                                    2.0,
+                                                    0.01,
+                                                    0.3,
+                                                    100,
+                                                    2.3,
+                                                    [0.0, 0.0, 4.0, 50.0, -1.0],
+                                                    @tofloat(target_innov),
+                                                    30 );
+        }
     }
-  }
 }
 
 rerunsPerApp = 100;
 
 main()
 {
-  optimizer_sweep();
+    optimizer_sweep();
 }
 
 main();
 
 /*
 
-Program structure:
+  Program structure:
 
   main
-    optimizer_sweep()
-      multi_annealing()
-        multi_loss()
-          evolve()
-        sumloss()
+  optimizer_sweep()
+  multi_annealing()
+  multi_loss()
+  evolve()
+  sumloss()
 
-Example parameter sets:
+  Example parameter sets:
 
-for target in range(58,59,50):
+  for target in range(58,59,50):
   for i in range(1):
-    args="./toptimizer 0 0 4 50 -1 "+target+" 40000 20 75    2 1 2. 0.01 2 0.3 2.3 1 1 1 0 0 m # > out.T"+str(target)+".i"+str(i)
-    os.system(args);
+  args="./toptimizer 0 0 4 50 -1 "+target+" 40000 20 75    2 1 2. 0.01 2 0.3 2.3 1 1 1 0 0 m // > out.T"+str(target)+".i"+str(i)
+  os.system(args);
 
-      string fastargs1[] = [
-        "0", "0", "4", "50", "-1", @strcat(target),
-        "40000", "20", "1000", "2",
-        "1",
-        "2.", "0.01", "100", "0.3", "2.3",
-        "1", "1", "0", "0", "0"];
-      string fastargs2[] = [
-        "0", "0", "4", "50", "-1", @strcat(target),
-        "40000", "20", "1000", "2",
-        "1",
-        "2.", "0.01",  "5", "0.3", "2.3",
-        "1", "1", "0", "0", "0", "m"];
-      string fastargs3[] = [
-        "0", "0", "4", "50", "-1", @strcat(target),
-        "40000", "20", @strcat(repeats), "2",
-        "1",
-        "2.", "0.01",  "2", "0.3", "2.3",
-        "1", "1", "0", "0", "0", "m"];
+  string fastargs1[] = [
+  "0", "0", "4", "50", "-1", @strcat(target),
+  "40000", "20", "1000", "2",
+  "1",
+  "2.", "0.01", "100", "0.3", "2.3",
+  "1", "1", "0", "0", "0"];
+  string fastargs2[] = [
+  "0", "0", "4", "50", "-1", @strcat(target),
+  "40000", "20", "1000", "2",
+  "1",
+  "2.", "0.01",  "5", "0.3", "2.3",
+  "1", "1", "0", "0", "0", "m"];
+  string fastargs3[] = [
+  "0", "0", "4", "50", "-1", @strcat(target),
+  "40000", "20", @strcat(repeats), "2",
+  "1",
+  "2.", "0.01",  "2", "0.3", "2.3",
+  "1", "1", "0", "0", "0", "m"];
 */
 
 (string args[]) setargs()
 {
-  // string longargs[] = @strcat("0 0 4 50 -1 ",target," 40000 20 1000 2 1 2. 0.01 100 0.3 2.3 1 1 0 0 0 m");
+    // string longargs[] = @strcat("0 0 4 50 -1 ",target," 40000 20 1000 2 1 2. 0.01 100 0.3 2.3 1 1 0 0 0 m");
 
-  //  [alpha_i alpha_m beta gamma delta target_innov
-  //  [n_epochs n_steps n_reruns] [range]
-  //  [verbose_level]
-  //  [T_start T_end Annealing_steps Target_rejection Starting_jump]
-  //  [FREEZE_alpha_i FREEZE_alpha_m FREEZE_beta FREEZE_gamma FREEZE_delta] [operation-code:(m,a) Nworkers]
+    //  [alpha_i alpha_m beta gamma delta target_innov
+    //  [n_epochs n_steps n_reruns] [range]
+    //  [verbose_level]
+    //  [T_start T_end Annealing_steps Target_rejection Starting_jump]
+    //  [FREEZE_alpha_i FREEZE_alpha_m FREEZE_beta FREEZE_gamma FREEZE_delta] [operation-code:(m,a) Nworkers]
 }
 
-######### HOLD JUNK
+////////////////// HOLD JUNK
 
-#                    tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "),
-#                                   color( /* 2 */ 1," %f"), "\n\n"),
-#                                   i, rejection[i][j] ); // , rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]);
-# FIXME: determine correct rejection[] values to avoid hanging:
-#                    tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "),
-#                                   color( /* 2 */ 1," %f"), color(7," %f"), color(5," %f"), color(9," %f"), color(6," %f"), "\n\n"),
-#                                   rejection[i][0], rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]);
-# END FIXME
+//                    tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "),
+//                                   color( /* 2 */ 1," %f"), "\n\n"),
+//                                   i, rejection[i][j] ); // , rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]);
+// FIXME: determine correct rejection[] values to avoid hanging:
+//                    tracef(@strcat("multi_annealing: AR: %i ", color(8,"Rejection counts: "),
+//                                   color( /* 2 */ 1," %f"), color(7," %f"), color(5," %f"), color(9," %f"), color(6," %f"), "\n\n"),
+//                                   rejection[i][0], rejection[i][1], rejection[i][2], rejection[i][3], rejection[i][4]);
+// END FIXME




More information about the Swift-commit mailing list