Add symbolic regression experiment.

This commit is contained in:
zjkree
2025-01-14 05:22:08 +01:00
parent c5538e35bb
commit 64a81e4110
6 changed files with 423 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
use anyhow::Result;
use rand::thread_rng;
use rand::Rng;
// Suppose you have these in your library:
use offchain::gp::generate_spec::ranmdom_code_fixed;
use offchain::gp::mutation::mutate_by_index;
use offchain::compiler::ast::UntypedAst;
fn main() -> Result<()> {
let mut rng = thread_rng();
// We'll produce, say, 3 random ASTs ("subjects").
let num_subjects = 3;
let max_points = 6;
for i in 0..num_subjects {
// Generate a random AST
let original = ranmdom_code_fixed(&mut rng, max_points);
println!("=== Subject #{} ===", i);
println!("Original AST:\n{:#?}", original);
// Let's do 2 successive mutations on it
let mut prev = original.clone();
for mut_idx in 0..2 {
let mutated = mutate_by_index(&prev, &mut rng, max_points);
println!("Mutation #{} result:\n{:#?}", mut_idx, mutated);
prev = mutated; // so the next iteration mutates from the last result
}
println!("=== End of Subject #{} ===\n", i);
}
println!("Done generating & mutating random ASTs!");
Ok(())
}