// Récupère les données et initialise les coefficients private double[] InitializeLinearVariables() { IntPtr resultPtr = CPPTOUnityLibWrapper.linear_create(NbInputWithExpedient); double[] result = new double[NbInputWithExpedient]; Marshal.Copy(resultPtr, result, 0, (int)NbInputWithExpedient); return(result); }
private void Calculate() { _nbPoints = (uint)(redSpheres.Length + blueSpheres.Length); _coordinates = new double[_nbPoints * NbInputs]; _values = new double[_nbPoints]; _resultedCoefficients = InitializeLinearVariables(); switch (LinearAlgorithm) { case Algorithm.Classification: GetCoordinatesAndValues(redSpheres, "red", Algorithm.Classification); GetCoordinatesAndValues(blueSpheres, "blue", Algorithm.Classification); CPPTOUnityLibWrapper.linear_train_classification(_resultedCoefficients, _coordinates, _values, _nbPoints, NbInputs); DisplayLinearClassification(whiteSpheres, _resultedCoefficients); DisplayLinearClassification(redSpheres, _resultedCoefficients); DisplayLinearClassification(blueSpheres, _resultedCoefficients); break; case Algorithm.Regression: GetCoordinatesAndValues(redSpheres, "red", Algorithm.Regression); GetCoordinatesAndValues(blueSpheres, "blue", Algorithm.Regression); CPPTOUnityLibWrapper.linear_train_regression(_resultedCoefficients, _coordinates, _values, _nbPoints, NbInputs); DisplayLinearRegression(whiteSpheres, _resultedCoefficients); break; case Algorithm.NoMatrixLibraryRegression: GetCoordinatesAndValues(redSpheres, "red", Algorithm.NoMatrixLibraryRegression); GetCoordinatesAndValues(blueSpheres, "blue", Algorithm.NoMatrixLibraryRegression); CPPTOUnityLibWrapper.linear_train_no_matrix_library_regression(_resultedCoefficients, _coordinates, _values, _nbPoints); DisplayLinearRegression(whiteSpheres, _resultedCoefficients); break; default: throw new ArgumentOutOfRangeException(); } }