Skip to content

Instantly share code, notes, and snippets.

@andregnhoato
Last active December 26, 2015 05:19
Show Gist options
  • Select an option

  • Save andregnhoato/7099797 to your computer and use it in GitHub Desktop.

Select an option

Save andregnhoato/7099797 to your computer and use it in GitHub Desktop.
Partes de código responsável por calcular os coeficientes: CUD, CUC e CUE;
/**
* @param sobreposicaoX sobreposição eixo x laterais
* @param sobreposicaoY sobreposição eixo y aspersores
* @formula cuc possivel visualizar a formula em
* https://dl.dropboxusercontent.com/u/10055997/cuc.gif
*/
public void calculoCuc(float sobreposicaoX, float sobreposicaoY) {
//organiza em um array os valores sobrepostos
List<Float> listaSobreposicao = listaSobreposicao(sobreposicoes, sobreposicaoX, sobreposicaoY);
Float mediaSobreposicao;
Float somatoria = 0F;
Float somatoriaAbsolutos = 0F;
//somatória da sobreposiçao
for (int i = 0; i < listaSobreposicao.size(); i++) {
somatoria += listaSobreposicao.get(i);
}
mediaSobreposicao = somatoria / listaSobreposicao.size();
List<Float> valoresAbsolutos = new ArrayList();
for (int i = 0; i < listaSobreposicao.size(); i++) {
valoresAbsolutos.add(Math.abs(listaSobreposicao.get(i) - mediaSobreposicao));
}
for (int i = 0; i < valoresAbsolutos.size(); i++) {
somatoriaAbsolutos += valoresAbsolutos.get(i);
}
CUC = round(1 - (somatoriaAbsolutos / (valoresAbsolutos.size() * mediaSobreposicao)) ,4);
CUD = round(calculoCud(listaSobreposicao, mediaSobreposicao),4);
CUE = round(CalculoCue(listaSobreposicao, mediaSobreposicao),4);
Cuc = new SimpleStringProperty(CUC + "");
cuc.textProperty().bind(Cuc);
cuc.setFont(Font.font("Verdana", FontWeight.BOLD, 14));
Cud = new SimpleStringProperty(CUD+"");
cud.textProperty().bind(Cud);
cud.setFont(Font.font("Verdana", FontWeight.BOLD, 14));
Cue = new SimpleStringProperty(CUE+"");
cue.textProperty().bind(Cue);
cue.setFont(Font.font("Verdana", FontWeight.BOLD, 14));
}
/**
* @param listaSobreposicoes lista com as sobreposições
* @param mediaSobreposicoes media dos valores sobrepostos
* @see Calculo cud corresponde a somatória dos 25% menores valores divido pela media geral das sobreposições
* @return CUD
*/
public Float calculoCud(List<Float> listaSobreposicoes, float mediaSobreposicoes){
//ordena a listagem
Collections.sort(listaSobreposicoes);
//armazenando o valor de 1/4 do array
float quarto = listaSobreposicoes.size() / 4;
float somatoria = 0;
for(int i = 0; i < quarto; i++){
somatoria += listaSobreposicoes.get(i);
}
//calcula media de 1/4
float quartil = somatoria / quarto;
//calcula cud media de 1/4 dividido pela media geral
return (quartil / mediaSobreposicoes);
}
/**
*
* @param listaSobreposicoes lista com os valores sobrepostos
* @param mediaSobreposicoes media dos valores sobrepostos
* @return CUE
*/
public Float CalculoCue(List<Float> listaSobreposicoes, float mediaSobreposicoes){
//1 calcular o desvio padrão = valor sopreposição - media geral elevado ao quadrado e realizar a somatória dos valores
Float soma = 0F;
for (Float valor : listaSobreposicoes) {
double a = valor - mediaSobreposicoes;
soma =+ (float)Math.pow(a, 2);
}
//2 calcular cue = 1 - raiz quadrada(soma / ((quantidade sobreposições -1 ) * media sobreposições ao quadrado)
return 1-(float)Math.sqrt(soma/((listaSobreposicoes.size() - 1) * (float) Math.pow(mediaSobreposicoes, 2)));
}
public static Float round(float d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.floatValue();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment