<commit_before>package com.scd.funcoes;

import java.util.List;

import com.scd.model.Termo;
import com.scd.model.Universo;
import com.scd.model.Variavel;

public class FuncaoDeDefuzzificacao {
	
	public static void deffuzifica(Variavel variavel) {
		double dividendo = encontraDividendo(variavel);
		double divisor = encontraDivisor(variavel);
		System.out.println(dividendo);
		System.out.println(divisor);
		double valorDeffuzificado = dividendo / divisor;
		System.out.println("deffuzification " + valorDeffuzificado);
		System.out.println();
		variavel.setValorDeffuzificado(valorDeffuzificado);
	}

	private static double encontraDivisor(Variavel variavel) {
		double divisor = 0;
		for (Termo termo : variavel.getTermos()) {
			divisor += termo.getQuantidadeDeValoresDoUniverso() * termo.getValorAtivacao();
		}
		return divisor;
	}

	private static double encontraDividendo(Variavel variavel) {
		double dividendo = 0;
		Universo universo = variavel.getUniverso();
		for (int i = universo.getInicio(); i <= universo.getFim(); i += 10) {
			boolean encontrouTermo = false;
			System.out.println("i " + i);
			for (Termo termo : variavel.getTermos()) {
				System.out.println("nome termo " + termo.getDescricao());
				if (termo.getNucleo().getInicio() <= i && termo.getNucleo().getFim() >= i) {
					System.out.println("termo " + termo.getValorAtivacao());					
					dividendo += i * termo.getValorAtivacao();
					if(i != 0) {
						termo.setQuantidadeDeValoresDoUniverso(termo.getQuantidadeDeValoresDoUniverso() + 1);
					}
					encontrouTermo = true;
				}				
			}
			System.out.println();
			if (!encontrouTermo) {
				Termo termo = encontraTermoAdequadoParaOValor(i, variavel.getTermos());
				System.out.println("termoEncontrado =>" + termo.getDescricao());
				System.out.println(termo.getValorAtivacao());
				System.out.println();
				dividendo += i * termo.getValorAtivacao();
				if(i != 0) {
					termo.setQuantidadeDeValoresDoUniverso(termo.getQuantidadeDeValoresDoUniverso() + 1);
				}
			}
		}
		return dividendo;
	}

	private static Termo(int valor, List<Termo> termos) {
		Termo termoEncontrado = new Termo();
		int menorDistancia = Integer.MAX_VALUE;
		for (Termo termo : termos) {
			System.out.println("termo suporte " + termo.getDescricao());
			System.out.println(termo.getSuporte().getInicio() + " <= " + valor + " && " + termo.getSuporte().getFim() + " >= " + valor);
			if (termo.getSuporte().getInicio() <= valor && termo.getSuporte().getFim() >= valor) {
				int distanciaParaOTermo = 0;
				System.out.println(valor + " <= " + termo.getNucleo().getInicio());
				if (valor <= termo.getNucleo().getInicio()) {
					distanciaParaOTermo = valor - termo.getSuporte().getInicio(); 
				} else {
					distanciaParaOTermo = termo.getSuporte().getFim() - valor;
				}
				<commit_msg>commit FuncaoDeDefuzzificacao<commit_after>package com.scd.funcoes;

import java.util.List;

import com.scd.model.Termo;
import com.scd.model.Universo;
import com.scd.model.Variavel;

public class FuncaoDeDefuzzificacao {
	
	public static void deffuzifica(Variavel variavel) {
		double dividendo = encontraDividendo(variavel);
		double divisor = encontraDivisor(variavel);
		System.out.println(dividendo);
		System.out.println(divisor);
		double valorDeffuzificado = dividendo / divisor;
		System.out.println("deffuzification " + valorDeffuzificado);
		System.out.println();
		variavel.setValorDeffuzificado(valorDeffuzificado);
	}

	private static double encontraDivisor(Variavel variavel) {
		double divisor = 0;
		for (Termo termo : variavel.getTermos()) {
			divisor += termo.getQuantidadeDeValoresDoUniverso() * termo.getValorAtivacao();
		}
		return divisor;
	}

	private static double encontraDividendo(Variavel variavel) {
		double dividendo = 0;
		Universo universo = variavel.getUniverso();
		for (int i = universo.getInicio(); i <= universo.getFim(); i += 10) {
			boolean encontrouTermo = false;
			System.out.println("i " + i);
			for (Termo termo : variavel.getTermos()) {
				System.out.println("nome termo " + termo.getDescricao());
				if (termo.getNucleo().getInicio() <= i && termo.getNucleo().getFim() >= i) {
					System.out.println("termo " + termo.getValorAtivacao());					
					dividendo += i * termo.getValorAtivacao();
					if(i != 0) {
						termo.setQuantidadeDeValoresDoUniverso(termo.getQuantidadeDeValoresDoUniverso() + 1);
					}
					encontrouTermo = true;
				}				
			}
			System.out.println();
			if (!encontrouTermo) {
				Termo termo = encontraTermoAdequadoParaOValor(i, variavel.getTermos());
				System.out.println("termoEncontrado =>" + termo.getDescricao());
				System.out.println(termo.getValorAtivacao());
				System.out.println();
				dividendo += i * termo.getValorAtivacao();
				if(i != 0) {
					termo.setQuantidadeDeValoresDoUniverso(termo.getQuantidadeDeValoresDoUniverso() + 1);
				}
			}
		}
		return dividendo;
	}

	private static Termo 	(int valor, List<Termo> termos) {
		Termo termoEncontrado = new Termo();
		int menorDistancia = Integer.MAX_VALUE;
		for (Termo termo : termos) {
			System.out.println("termo suporte " + termo.getDescricao());
			System.out.println(termo.getSuporte().getInicio() + " <= " + valor + " && " + termo.getSuporte().getFim() + " >= " + valor);
			if (termo.getSuporte().getInicio() <= valor && termo.getSuporte().getFim() >= valor) {
				int distanciaParaOTermo = 0;
				System.out.println(valor + " <= " + termo.getNucleo().getInicio());
				if (valor <= termo.getNucleo().getInicio()) {
					distanciaParaOTermo = valor - termo.getSuporte().getInicio(); 
				} else {
					distanciaParaOTermo = termo.getSuporte().getFim() - valor;
				}
				
{'fraction_non_alphanumeric': 0.14275593340417994, 'fraction_numerical': 0.003188097768331562, 'mean_word_length': 4.069120287253142, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4330056', 'n_tokens_mistral': 2404, 'n_tokens_neox': 2103, 'n_words': 326}