-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTestDataGenerator.cs
More file actions
79 lines (63 loc) · 2.3 KB
/
TestDataGenerator.cs
File metadata and controls
79 lines (63 loc) · 2.3 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using UnityEngine;
public class TestDataGenerator : MonoBehaviour
{
public enum TestFunction
{
Quadratic, // x^2 + 1
Cubic, // x^3 - 2x
Trigonometric, // sin(x) + cos(x)
Exponential, // e^x
Complex, // x^2 * sin(x)
Rational // (x + 1) / (x + 2)
}
public TestFunction selectedFunction = TestFunction.Quadratic;
public int numDataPoints = 20;
public float minX = -5f;
public float maxX = 5f;
private AdvancedSymbolicRegressionGP gpController;
void Start()
{
gpController = GetComponent<AdvancedSymbolicRegressionGP>();
GenerateTestData();
}
public void GenerateTestData()
{
float[] inputs = new float[numDataPoints];
float[] outputs = new float[numDataPoints];
for (int i = 0; i < numDataPoints; i++)
{
float x = Mathf.Lerp(minX, maxX, i / (float)(numDataPoints - 1));
inputs[i] = x;
outputs[i] = EvaluateFunction(x);
}
gpController.inputData = inputs;
gpController.outputData = outputs;
Debug.Log($"<color=cyan>Generated {numDataPoints} data points for: {selectedFunction}</color>");
Debug.Log($"<color=yellow>Sample: f({inputs[0]:F2}) = {outputs[0]:F2}</color>");
}
float EvaluateFunction(float x)
{
switch (selectedFunction)
{
case TestFunction.Quadratic:
return x * x + 1f;
case TestFunction.Cubic:
return x * x * x - 2f * x;
case TestFunction.Trigonometric:
return Mathf.Sin(x) + Mathf.Cos(x);
case TestFunction.Exponential:
return Mathf.Exp(Mathf.Clamp(x, -2f, 2f)); // Clamped to prevent overflow
case TestFunction.Complex:
return x * x * Mathf.Sin(x);
case TestFunction.Rational:
return (x + 1f) / (x + 2f + 0.01f); // Small offset to avoid division by zero
default:
return 0f;
}
}
[ContextMenu("Regenerate Data")]
public void RegenerateData()
{
GenerateTestData();
}
}