Exemplo n.º 1
0
EXPORT boolean _delete_from_ordered_pointers(
	POINTER		p,
	POINTER		**parray)
{
	POINTER	*q, *array;
	int     j;

	if ((parray == NULL) || (*parray == NULL))
	{
	    (void) printf("WARNING in delete_from_ordered_pointers(), "
			  "parray is NULL\n");
	    return NO;
	}
	array = *parray;
	if (!index_of_pointer_in_array(p,array,&j))
	{
	    (void) printf("WARNING in delete_from_ordered_pointers(), "
			  "p not found in parray\n");
	    return NO;
	}
	for (q = array+j; *q; ++q)
	    *q = *(q+1);

	end_of_set(array) -= sizeof(POINTER);
	if (end_of_set(array)==0)
	    *parray = NULL;

	return YES;
}		/*end _delete_from_ordered_pointers*/
Exemplo n.º 2
0
EXPORT  boolean _add_to_pointers(
	POINTER	newp,
	POINTER	**parray)
{
	if (expand_set((POINTER *)parray,2*sizeof(POINTER)) == FUNCTION_FAILED)
	    return FUNCTION_FAILED;
	(*parray)[end_of_set(*parray)/sizeof(POINTER)] = newp;
	end_of_set(*parray) += sizeof(POINTER);
	return FUNCTION_SUCCEEDED;
}		/*end _add_to_pointers*/
Exemplo n.º 3
0
EXPORT boolean _delete_from_ordered_pointers_at_location(
	int		i,
	POINTER		**parray)
{
	POINTER		*q;

	if ((*parray == NULL) || (i > size_of_pointers(*parray)))
	    return FUNCTION_FAILED;
	for (q = *parray + i; *q; ++q)
	    *q = *(q + 1);
	end_of_set(*parray) -= sizeof(POINTER);
	if (end_of_set(*parray)==0)
	    *parray = NULL;
	return FUNCTION_SUCCEEDED;
}		/*end _delete_from_ordered_pointers_at_location*/
Exemplo n.º 4
0
bool nn_fuzzy_set::normal_set() {
	reset_position();
	while (!end_of_set()) {
		if(get_membership() == 1)
			return true;
		next_member();
	}
	return false;
}
Exemplo n.º 5
0
nn_fuzzy_set nn_fuzzy_set::strong_alpha_cut(double alpha) {
	nn_fuzzy_set result;
	reset_position();
	while (!end_of_set()) {
		if(get_membership() > alpha)
			result.add_new(get_member(),get_membership());
		next_member();
	}
	return result;
}
Exemplo n.º 6
0
nn_fuzzy_set nn_fuzzy_set::crossover() {
	nn_fuzzy_set result;
	reset_position();
	while (!end_of_set()) {
		if(get_membership() == 0.5)
			result.add_new(get_member(),get_membership());
		next_member();
	}
	return result;
}
Exemplo n.º 7
0
nn_fuzzy_set nn_fuzzy_set::support() {
	nn_fuzzy_set result;
	reset_position();
	while (!end_of_set()) {
		if(get_membership() > 0)
			result.add_new(get_member(),get_membership());
		next_member();
	}
	return result;
}
Exemplo n.º 8
0
EXPORT boolean _delete_from_pointers(
	POINTER		p,
	POINTER		**parray)
{
	POINTER		*q;

	if (*parray == NULL)
	    return FUNCTION_FAILED;
	for (q = *parray; *q; ++q)
	    if (*q == p)
		break;
	if (*q == NULL) /* Pointer p not in array */
	    return FUNCTION_FAILED;

	*q = (*parray)[end_of_set(*parray)/sizeof(POINTER) - 1];
	(*parray)[end_of_set(*parray)/sizeof(POINTER)-1] = NULL;
	end_of_set(*parray) -= sizeof(POINTER);
	if (end_of_set(*parray)==0)
	    *parray = NULL;
	return FUNCTION_SUCCEEDED;
}		/*end _delete_from_pointers*/
Exemplo n.º 9
0
bool nn_fuzzy_set::complement(int type = NN_COMPLEMENT_NORMAL, int parameter = 1) {
	switch (type)
	{
		case NN_COMPLEMENT_NORMAL:					// perform complement by the normal complement method like in crisp sets
			reset_position();
			while(!end_of_set()) {
				set_membership(1 - get_membership());
				next_member();
			}
			return true;
		case NN_COMPLEMENT_SUGENOCLASS:			// perform complement by the sugeno class of operators
			reset_position();
			while(!end_of_set()) {
				set_membership((1 - get_membership()) / (1 + (parameter * get_membership())));
				next_member();
			}
			return true;
		default:
			return NULL;
	}
}
Exemplo n.º 10
0
EXPORT  boolean _add_to_ordered_pointers(
	POINTER		newp,
	POINTER		antep,
	POINTER		**parray)
{
	int	j, k;

	if (expand_set((POINTER *)parray,2*sizeof(POINTER)) == FUNCTION_FAILED)
	    return FUNCTION_FAILED;
	if (antep == NULL)
	    j = (int)size_of_pointers(*parray)-1;
	else
	{
	    if (!index_of_pointer_in_array(antep,*parray,&j))
	    	return FUNCTION_FAILED;
	    for (k = (int)size_of_pointers(*parray); k > j; --k)
	        (*parray)[k+1] = (*parray)[k];
	}
	(*parray)[j+1] = newp;
	end_of_set(*parray) += sizeof(POINTER);
	return FUNCTION_SUCCEEDED;
}		/*end _add_to_ordered_pointers*/
Exemplo n.º 11
0
nn_fuzzy_set nn_fuzzy_set::t_norm(nn_fuzzy_set op2,int type = NN_TNORM_MINIMUM) {
	nn_fuzzy_set result;
	reset_position();
	op2.reset_position();
	if (nn_size() != op2.nn_size()) {
		nn_incompatibleFuzzySetsException ex;
		throw ex;
	}
	switch (type) {
		case NN_TNORM_MINIMUM:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				if (get_membership() > op2.get_membership()) {
					result.add_new(get_member(), op2.get_membership());
				}
				else {
					result.add_new(get_member(), get_membership());
				}
				next_member();
				op2.next_member();
			}
			break;
		case NN_TNORM_PRODUCT:
				while (!end_of_set()) {
					if (get_member() != op2.get_member()) {
						nn_incompatibleFuzzySetsException ex;
						throw ex;
					}
					result.add_new(get_member(), get_membership() * op2.get_membership());
					next_member();
					op2.next_member();
				}
				break;
		case NN_TNORM_EINSTEIN_PRODUCT:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				result.add_new(get_member(), (get_membership() * op2.get_membership()) / (2 - ((get_membership() + op2.get_membership()) - get_membership() * op2.get_membership())));
				next_member();
				op2.next_member();
			}
			break;
		case NN_TNORM_DRASTIC_PRODUCT:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				if (op2.get_membership() == 1) {
					result.add_new(get_member(), get_membership());
				}
				else if (get_membership() == 1) {
					result.add_new(get_member(), op2.get_membership());
				}
				else {
					result.add_new(get_member(), 0.0);
				}
				next_member();
				op2.next_member();
			}
			break;

		default:
			break;
	}
	return result;
}
Exemplo n.º 12
0
nn_fuzzy_set nn_fuzzy_set::s_norm(nn_fuzzy_set op2,int type = NN_SNORM_MAXIMUM) {
	nn_fuzzy_set result;
	reset_position();
	op2.reset_position();
	if (nn_size() != op2.nn_size()) {
		nn_incompatibleFuzzySetsException ex;
		throw ex;
	}
	switch (type) {
		case NN_SNORM_MAXIMUM:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				if (get_membership() < op2.get_membership()) {
					result.add_new(get_member(), op2.get_membership());
				}
				else {
					result.add_new(get_member(), get_membership());
				}
				next_member();
				op2.next_member();
			}
			break;
		case NN_SNORM_SUM:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				result.add_new(get_member(), get_membership() + op2.get_membership() - (get_membership() * op2.get_membership()));
				next_member();
				op2.next_member();
			}
			break;
		case NN_SNORM_EINSTEIN_SUM:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				result.add_new(get_member(), get_membership() + op2.get_membership() / (1 + (get_membership() * op2.get_membership())));
				next_member();
				op2.next_member();
			}
			break;		
		case NN_SNORM_DRASTIC_SUM:
			while (!end_of_set()) {
				if (get_member() != op2.get_member()) {
					nn_incompatibleFuzzySetsException ex;
					throw ex;
				}
				if (op2.get_membership() == 0) {
					result.add_new(get_member(), get_membership());
				}
				else if (get_membership() == 0) {
					result.add_new(get_member(), op2.get_membership());
				}
				else {
					result.add_new(get_member(), 1.0);
				}
				next_member();
				op2.next_member();
			}
			break;
		default:
			break;
	}
	return result;
}