Funcionamento do Analysis
Analysis
A classe Analysis é responsável por fazer uma análise dos dados, sendo possível utilizar modelos de aprendizado de máquina para identificar o tipo de movimento feito, pontuação do movimento comparando com a base histórica para acompanhar a evolução do paciente, entre outras possibilidades.

Foi utilizado o padrão de projeto comportamental Strategy, porque várias classes relacionadas diferem apenas em seus comportamentos e é necessário variantes dos algoritmos de aprendizado de máquina no framework.
A classe IMachineLearning declara uma interface que é comum a todos os algoritmos de aprendizado de máquina, ela declara um método que o contexto da aplicação utiliza para executar uma estratégia.
namespace StrategyDesignPattern
{
public interface IMachineLearning
{
// Interface for methods
public void ExecuteMachineLearning(string data);
}
}
Cada classe concreta deve implementar o método ExecuteMachineLearning da interface IMachineLearning, conforme os códigos abaixos eles necessitam do desenvolvedor implementar de acordo com a sua necessidade. Caso ocorra a necessidade de ter mais algoritmos é só ir adicionando novas classes concretas que implementem a interface supracitada. O método ExecuteMachineLearning recebe uma string com os dados para que seja processado. Assim, a classe concreta implementa diferentes variações de um algoritmo que o contexto da aplicação necessitar.
using UnityEngine;
namespace StrategyDesignPattern
{
public class Algorithm1 : IMachineLearning
{
// Implement Algorithm 1
public void ExecuteMachineLearning(string data)
{
Debug.Log("Data: '" + data);
}
}
}
using UnityEngine;
namespace StrategyDesignPattern
{
public class Algorithm2 : IMachineLearning
{
// Implement Algorithm 2
public void ExecuteMachineLearning(string data)
{
Debug.Log("Data: '" + data);
}
}
}
A classe Context contém uma propriedade que é usada para conter a referência de um objeto strategy. Esta propriedade é ajustada pelo ClientML de acordo com o algoritmo de aprendizado de máquina necessário.
namespace StrategyDesignPattern
{
// Strategy Pattern Context
public class Context
{
private IMachineLearning ml;
public Context(IMachineLearning ml)
{
this.ml = ml;
}
public void SetStrategy(IMachineLearning ml)
{
this.ml = ml;
}
public void ExecuteMachineLearning(string data)
{
ml.ExecuteMachineLearning(data);
}
}
}
A classe ClientML cria um objeto strategy específico e passa para o contexto. O contexto define um setter que permite o ClientML alterar a estrategia associada com o contexto durante a execução.
using UnityEngine;
namespace StrategyDesignPattern
{
public class ClientML : MonoBehaviour
{
// Start is called before the first frame update
// Start method 1 and 2 - ML
void Start()
{
Context ctx = new Context(new Method1());
ctx.ExecuteMachineLearning("data1");
ctx.SetStrategy(new Method2());
ctx.ExecuteMachineLearning("data2");
}
}
}
How can we help?
A premium WordPress theme with an integrated Knowledge Base,
providing 24/7 community-based support.



