File size: 3,750 Bytes
be99550 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | // π μΈκ° κ°μ λ€μ°¨μ νμ΅ λ° κ°μ± 물리 λμν μ΅ν© μμ§ (src/bin/run_emotion_learning.rs)
#[path="../emotion_engine.rs"] mod emotion_engine;
#[path="../korean_telemetry.rs"] mod korean_telemetry;
#[path="../parallel_engine.rs"] mod parallel_engine;
use std::time::Instant;
use emotion_engine::EmotionIntelligenceEngine;
use parallel_engine::LargeScaleEngine;
use korean_telemetry::TelemetryReporter;
fn main() {
println!("============================================================");
println!(" π [BioPhys] μΈκ° κ°μ λ€μ°¨μ νμ΅ & κ°μ± μ»΄ν¨ν
μ€μΈ‘ μμ§");
println!("============================================================\n");
let emotion_engine = EmotionIntelligenceEngine::new();
let mut physical_engine = LargeScaleEngine::new(256);
let emotion_scenarios = [
("μ¬ν/μμ€", "μ€λ«λμ ν¨κ»ν μμ€ν λ°λ €λλ¬Όμ λ λ보λ΄κ³ λ§μμ΄ λ무 μ°’μ΄μ§ λ― μν"),
("λΆμ/곡ν¬", "μ€μν λ°νλ₯Ό μλκ³ μ¬μ₯μ΄ ν°μ§ κ² κ°κ³ λ§μΉ κΉ λ΄ λ무 λλ €μ"),
("κΈ°μ¨/μ±μ·¨", "μ€λ«λμ λ°€μλ©° μ€λΉνλ μνμ λ§μΉ¨λ΄ ν©κ²©νμ΄! λ무 ν볡ν΄!"),
("λΆλ
Έ/μ’μ ", "μ무리 μ΄μ¬ν λ°€μμ μΌν΄λ μΈμ λ°μ§ λͺ»νκ³ λ¬΄μλΉν΄μ λ무 μ΅μΈνκ³ νκ° λ"),
];
for (label, user_input) in &emotion_scenarios {
println!("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ");
println!("π¬ [κ°μ μν©: {}]", label);
println!("π€ [μ¬μ©μ λ°ν]: \"{}\"", user_input);
println!("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ");
let t_start = Instant::now();
let (entry, valence, arousal) = emotion_engine.analyze_emotion(user_input);
// κ°μ μ μ μκ°(Valence)μ κ°μ±λ(Arousal)λ₯Ό 256x256 물리 격μμ μ£Όμ
// Valence > 0 β ν₯λΆμ± μμ μ΄, Valence < 0 β μ΅μ μ± μλ ΄, Arousal β μλμ§ μ§ν
for b in physical_engine.bedrock.iter_mut() {
*b = (*b * 0.3) + (valence * arousal * 0.7);
}
let avg_e = physical_engine.step_parallel();
let sample: Vec<f32> = physical_engine.topsoil[0..1000].iter().map(|p| p.value()).collect();
let telemetry = TelemetryReporter::analyze(&sample, avg_e, 3);
let dur = t_start.elapsed().as_secs_f64() * 1000.0;
println!("π§ [μ μ λ€μ°¨μ λΆμ]");
println!(" ββ μ μκ° (Valence) : {:+4.2} ({})", valence, if valence > 0.0 { "κΈμ μ μ" } else { "λΆμ μ μ" });
println!(" ββ κ°μ±λ (Arousal) : {:4.2} ({})", arousal, if arousal > 0.6 { "κ³ κ°μ± μν" } else { "μ κ°μ± μν" });
println!(" ββ μ¬λ¦¬νμ κΈ°μ : {}", entry.psychological_meaning);
println!();
println!("π [μ§μ μ± μλ κ°μ± κ³΅κ° νλ΅]");
println!(" \"{}\"", entry.empathetic_response);
println!();
println!("β‘ [κ°μ μ£Όμ
ν 볡μ‘κ³ λ¬Όλ¦¬ μν]");
print!("{}", telemetry);
println!("β±οΈ κ°μ λμ½λ© λ° λ¬Όλ¦¬ ν
λ λ©νΈλ¦¬ μ°μ° μκ°: {:.3} ms\n", dur);
}
println!("============================================================");
println!(" β
μΈκ° 4λ ν΅μ¬ κ°μ μ€ννΈλΌ(ν¬Β·λ
ΈΒ·μ ·ꡬ) λ€μ°¨μ νμ΅ λ° μ€μΈ‘ μλ£");
println!("============================================================\n");
}
|