0
@@ -47,22 +47,6 @@ let path_length pts =
0
- Array.fold_left (fun (i,sum) e -> (i + 1, sum + e * i)) (1, 0) arr
0
- let init = [|1;2;3;4;5;6;7;8;9;1;2;3;4;5;6;7;8;9;|] in
0
- let cooling = Anneal.kirkpatrick_seq 0.9999 10.0 in
0
- let (n, sol, score) = Anneal.optimize init objective reversed_section 500000 cooling in
0
- Printf.printf "%d evaluations; score=%f; sol=\n" n score;
0
- Array.iter (Printf.printf "%d ") sol;
0
let posfn = ref "coords.txt" in
0
let usage = Printf.sprintf "Usage: %s [-help] [-coords filename]" Sys.argv.(0) in
0
@@ -75,32 +59,44 @@ let _ =
0
+ let d = path_length path in
0
+ Printf.eprintf "Path %s:" name;
0
+ Array.iter (Printf.eprintf " %d") path;
0
+ Printf.eprintf ": %f\n" d;
0
+ let cooling = Anneal.kirkpatrick_seq 0.9999 10.0 in
0
+ let (n, sol, score) = Anneal.optimize path (fun p -> -. path_length p) reversed_section 500000 cooling in
0
+ Printf.eprintf " Optimization: %d evaluations; score=%f\n" n score;
0
+ Printf.printf "%s " name;
0
+ Array.iter (Printf.printf "%d ") sol;
0
+ let line = read_line () in
0
+ let re = Str.regexp "[ \t]+" in
0
+ let name::pts = Str.split re line in
0
+ (name, Array.of_list (List.map int_of_string pts))
0
+ let name, p = read_path () in
0
+ match Array.length p with
0
+ (*TODO bug if p = 2 and p.(0)=p.(1) *)
0
let buf = Scanf.Scanning.from_file !posfn in
0
let _ = read_positions buf in
0
- let d = path_length path in
0
- Printf.printf "Path:";
0
- Array.iter (Printf.printf " %d") path;
0
- Printf.printf ": %f\n" d;
0
- let cooling = Anneal.kirkpatrick_seq 0.9999 10.0 in
0
- let (n, sol, score) = Anneal.optimize path (fun p -> -. path_length p) reversed_section 5000 cooling in
0
- Printf.printf " Optimization: %d evaluations; score=%f; sol=" n score;
0
- Array.iter (Printf.printf "%d ") sol;
0
- let _ = doit [|1; 1;|] in (* TODO something wrong ... infinite loop ... probably in solution generation! *)
0
- let _ = doit [|1; 2;|] in
0
- let _ = doit [|1; 3;|] in
0
- let _ = doit [|2; 3;|] in
0
- let _ = doit [|3; 2;|] in
0
- let _ = doit [|1; 1; 2;|] in
0
- let _ = doit [|1; 2; 3;|] in
0
- Printf.printf "ERROR:%s\n%s\n" (Printexc.to_string exn) usage;
0
+ Printf.printf "ERROR:%s\n%s\n" (Printexc.to_string exn) usage
Comments
No one has commented yet.