Operations on Single-Valued Trapezoidal Neutrosophic Numbers using -Cuts
“Maple Package”

 

Mohamed Bisher Zeina *1, Omar Zeitouny 1, Fatina Masri 1, Fatima Kadoura 1, Said Broumi 2

1  Department of Mathematical Statistics, Faculty of Science, University of Aleppo, Aleppo, Syria

2 Laboratory of Information Processing, Faculty of Science Ben M’Sik, University Hassan II, Casablanca, Morocco

 

Email: bisher.zeina@gmail.com ; ozeitouny70@gmail.com ; fatenahmasri@gmail.com ; fatima.sa.kadoura@gmail.com ; broumisaid78@gmail.com

 

*  Correspondence: bisher.zeina@gmail.com

 

Abstract 

In this paper we present a Maple package called Neutrosophic, which allows users to do operations on trapezoidal and triangular neutrosophic numbers including summation, subtraction, division and multiplication based on -cuts and plots the results, also the package allows users to rank numbers depending on ambiguity index and value index. This package is very useful in neutrosophic decision making problems, neutrosophic probabilities, neutrosophic statistics and in many other fields of neutrosophic researches.

Keywords: Trapezoidal Neutrosophic Number, Triangular Neutrosophic Number -Cuts, Ambiguity Index, Value Index, Decision Making.

 

1.Introduction

 

In 1965 L.A. Zadeh extended crisp logic to fuzzy logic also crisp sets to fuzzy sets allowing element  to take partial degree of membership to the set  and this membership is noted by , so the nonmembership degree of the same element to the set  is  [1]. In 1986 K. Atanassov extended fuzzy logic and fuzzy sets to intuitionistic fuzzy logic and intuitionistic fuzzy sets letting space to indeterminacy between membership and nonmembership degrees by assuming that  where  [2]. In 1995 F. Smarandache extended boths of the previous logics to neutrosophic logic and introduced neutrosophic sets by defining three not  necessarily  dependent components; membership, nonmembership, and indeterminacy degrees. So element  of the set  are described by the triplet (  where . In applied sciences nonstandard analysis is not useful, so the last definition was transformed into standard analysis describing elements by the same triplet but  introducing what is known by single valued neutrosopihc sets [3], [4].

Neutrosophy had been applied in many fields of science including abstract algebra, topology, probability, statistics, machine learning, decision making, number theory, operations research, engineering, control systems, etc [5], [6], [7], [8][9], [10], [11], [12], [13], [14], [15].

 

2. Definitions   

2.1. Trapezoidal Neutrosophic Number

Trapezoidal neutrosophic number  defined on the set of real numbers  by its membership, indeterminacy and nonmembership functions: [16]

 

 

 


2.2. -Cuts of Trapezoidal Neutrosophic Number

Let   be a single-valued trapezoidal neutrosophic number, the crisp subset of reals defined by: [16]

 

Is called -cuts of of  where  and .

2.3. Arithemetic Operations on Single-Valued Trapezoidal Neutrosophic Numbers Based on -Cuts

First lets remember arithmetic operations on two real valued intervals  which are defined as follows:

 

 

 

 

Where:

 

Now let  be two single-valued trapezoidal neutrosophic numbers with -cuts as follows: [16]

 

Then arithmetic operations on  can be defiend as follows:

 

Where * is one of the operations {-,+,×,÷} and can be done using same interval arithmetic rules.

 

2.4. Value and Ambiguity Index Based Rnking Methods [16]

Value of single-valued trapezoidal neutrosophic number  can be defined as follows:

 

 

Also ambiguity of  can be defined as follows:

 

Then value index and ambiguity index can be defined as follows:

 

 

Where the values of  are determined by the decision maker preferences according to the condition 

Now two single-valued trapezoidal neutrosophic numbers  can be ranked by the following algorithm:

1.     if  then 

2.     if  then 

3.     if  then

a.      if  then 

b.     if  then 

c.      if  then 

3. Neutrosophic Maple Package

Now we introduce for the first time a Maple package that saves lots of time spended on doing operations on single-valued trapezoidal neutrispohic numbers and explain it by examples.

 

interface(warnlevel = 0):
Neutrosophic:=module()
description "using this module you can sum, subtract, divide and multiply trapezoidal neutrosophic numbers based on their alpha-beta-gamma cuts"; 
option package;
export NeutrosophicNumber,NeutrosophicAlphaBetaGammaCuts,PlotNeutrosophicNumber, NeutrosophicSum,NeutrosophicSub,NeutrosophicMult,NeutrosophicDiv,NeutrosophicValue, NeutrosophicAmbiguity,ValueIndex,AmbiguityIndex,CompareNeutrosophicNumbers;

#Neutrosophic Numbers

#Define a Trapezoidal Neutrosophic Number:

Neutrosophic Number:= proc (t1, t2, t3, t4, i1, i2, i3, i4, f1, f2, f3, f4)
 return ([[t1, t2, t3, t4], [i1, i2, i3, i4], [f1, f2, f3, f4]])
 end proc;

#Neutrosophic Alpha,Beta,Gamma Cuts:
NeutrosophicAlphaCuts := proc (a::list)
local alpha := 'alpha'
local leftT:= 
;
local rightT:= ;
return [leftT,rightT]
end proc;

NeutrosophicBetaCuts := proc (b::list)
local beta:= 'beta'
local leftI:= 
;
local rightI:= ;
return [leftI,rightI]
end proc;

NeutrosophicGammaCuts := proc (c::list)
local gamma:= ' gamma '
local leftG:= 
;
local rightG:= ;
return [leftG,rightG]
end proc;

NeutrosophicAlphaBetaGammaCuts := proc (n::list)
return ([NeutrosophicAlphaCuts(n[1]), NeutrosophicBetaCuts(n[2]), NeutrosophicGammaCuts(n[3])])
end proc;

#Determine whether we have Neutrosophic Cuts or NOT:

IsNeutrosophicCuts := proc (x::list)
if numelems(x[1]) = 2 then return true else return false end if 
end proc;

# Plotting Neutrosophic Numbers:
PlotNeutrosophicAlphaCuts:= proc(f1::list)
local Left:=unapply(expand(f1[1](alpha)),alpha);
local Right:=unapply(expand(f1[2](alpha)),alpha);
local L := Vector(11, unapply(Left((alpha-1)*(1/10)), alpha));
localU := Vector(11, unapply(Right((alpha-1)*(1/10)), alpha));
local alpha:=Vector([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1]);
F1:=dataplot( L,alpha,color="Green",style=line); G1:=dataplot(U,alpha,color="Green",style=line); H1:=dataplot(L[11]..U[11],Vector(11,1),color="Green",style=line,legend="Truth", legendstyle=[font=["HELVETICA",9],location=right]);
return {F1,G1,H1};
end proc;

PlotNeutrosophicBetaCuts := proc (f2::list)
local Left := unapply(expand(f2[1](beta)), beta);
local Right := unapply(expand(f2[2](beta)), beta);
local L := Vector(11, unapply(Left((beta-1)*(1/10)), beta)); 
local U := Vector(11, unapply(Right((beta-1)*(1/10)), beta));
local beta := Vector([0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
F1 := dataplot(L, beta, color = "Blue", style = line);
G1 := dataplot(U, beta, color = "Blue", style = line);
H1 := dataplot(L[1] .. U[1], Vector(11, 0), color = "Blue", style = line, legend = "Indeterminacy", legendstyle = [font = ["HELVETICA", 9], location = right]);
return {F1, G1, H1};
end proc;

PlotNeutrosophicGammaCuts := proc (f3::list)
local Left:= unapply(expand(f3[1](gamma)), gamma);
local Right := unapply(expand(f3[2](gamma)), gamma);
local L := Vector(11, unapply(Left((gamma-1)*(1/10)), gamma));
local U := Vector(11, unapply(Right((gamma-1)*(1/10)), gamma));
local gamma := Vector([0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
F1 := dataplot(L, gamma, color = "Red", style = line);
 G1 := dataplot(U, gamma, color = "Red", style = line);
 H1 := dataplot(L[1] .. U[1], Vector(11, 0), color = "Red", style = line, legend = "Falsity", legendstyle = [font = ["HELVETICA", 9], location = right]);
return {F1, G1, H1};
end proc;

PlotNeutrosophicNumber := proc (n::list)
if not IsNeutrosophicCuts(n) then 
t := PlotNeutrosophicAlphaCuts(NeutrosophicAlphaCuts(n[1])):
i := PlotNeutrosophicBetaCuts(NeutrosophicBetaCuts(n[2])):
f := PlotNeutrosophicGammaCuts(NeutrosophicGammaCuts(n[3])):
else
t := PlotNeutrosophicAlphaCuts(n[1]):
i := PlotNeutrosophicBetaCuts(n[2]):
f := PlotNeutrosophicGammaCuts(n[3]):
end if
plots:-display(t, i, f);
end proc;

#Neutrosophic Arithmetic Operations:
NeutrosophicSum := proc (t1::list, t2::list)
x := t1: y := t2:
if not IsNeutrosophicCuts(t1) then x := NeutrosophicAlphaBetaGammaCuts(t1); end if;
if not IsNeutrosophicCuts(t2) then y := NeutrosophicAlphaBetaGammaCuts(t2); end if;
L1 := unapply(x[1][1](alpha)+y[1][1](alpha), alpha);
U1 := unapply(x[1][2](alpha)+y[1][2](alpha), alpha);
L2 := unapply(x[2][1](beta)+y[2][1](beta), beta);
U2 := unapply(x[2][2](beta)+y[2][2](beta), beta);
L3 := unapply(x[3][1](gamma)+y[3][1](gamma), gamma); 
U3 := unapply(x[3][2](gamma)+y[3][2](gamma), gamma); 
[[L1, U1], [L2, U2], [L3, U3]]
end proc;

NeutrosophicMult := proc (t1::list, t2::list)
x := t1: y := t2:
if not IsNeutrosophicCuts(t1) then x := NeutrosophicAlphaBetaGammaCuts(t1); end if;
if not IsNeutrosophicCuts(t2) then y := NeutrosophicAlphaBetaGammaCuts(t2); end if;
L1 := unapply(x[1][1](alpha)*y[1][1](alpha), alpha);
U1 := unapply(x[1][2](alpha)*y[1][2](alpha), alpha);
L2 := unapply(x[2][1](beta)*y[2][1](beta), beta);
U2 := unapply(x[2][2](beta)*y[2][2](beta), beta);
L3 := unapply(x[3][1](gamma)*y[3][1](gamma), gamma);
U3 := unapply(x[3][2](gamma)*y[3][2](gamma), gamma);
[[L1, U1], [L2, U2], [L3, U3]]
end proc;

NeutrosophicSub := proc (t1::list, t2::list)
x := t1: y := t2:
if not IsNeutrosophicCuts(t1) then x := NeutrosophicAlphaBetaGammaCuts(t1); end if;
if not IsNeutrosophicCuts(t2) then y := NeutrosophicAlphaBetaGammaCuts(t2); end if;
L1 := unapply(x[1][1](alpha)-y[1][2](alpha), alpha);
U1 := unapply(x[1][2](alpha)-y[1][1](alpha), alpha);
L2 := unapply(x[2][1](beta)-y[2][2](beta), beta);
U2 := unapply(x[2][2](beta)-y[2][1](beta), beta);
L3 := unapply(x[3][1](gamma)-y[3][2](gamma), gamma);
U3 := unapply(x[3][2](gamma)-y[3][1](gamma), gamma);
[[L1, U1], [L2, U2], [L3, U3]]
end proc;

NeutrosophicDiv := proc (t1::list, t2::list)
x := t1: y := t2:
if not IsNeutrosophicCuts(t1) then x := NeutrosophicAlphaBetaGammaCuts(t1); end if;
if not IsNeutrosophicCuts(t2) then y := NeutrosophicAlphaBetaGammaCuts(t2); end if;
L1 := unapply(x[1][1](alpha)/y[1][2](alpha), alpha);
U1 := unapply(x[1][2](alpha)/y[1][1](alpha), alpha);
L2 := unapply(x[2][1](beta)/y[2][2](beta), beta);
U2 := unapply(x[2][2](beta)/y[2][1](beta), beta);
L3 := unapply(x[3][1](gamma)/y[3][2](gamma), gamma);
U3 := unapply(x[3][2](gamma)/y[3][1](gamma), gamma);
[[L1, U1], [L2, U2], [L3, U3]]
end proc;

#Value and Ambiguity:
VT := proc (t::list)
L := t[1];
U := t[2];
v := int((L(alpha)+U(alpha))*alpha, alpha = 0 .. 1);
return v;
end proc;

VI := proc (i::list)
L := i[1];
U := i[2];
 v := int((L(beta)+U(beta))*(1-beta), beta = 0 .. 1);
 return v;
end proc;

VF := proc (f::list)
L := f[1];
U := f[2];
gamma := 'gamma';
v := int((L(gamma)+U(gamma))*(1-gamma), gamma = 0 .. 1);
return v;
end proc;

AT := proc (t::list)
L := t[1];
U := t[2];
a := int((U(alpha)-L(alpha))*alpha, alpha = 0 .. 1);
return a;
end proc;

AI := proc (i::list)
L := i[1];
U := i[2];
a := int((U(beta)-L(beta))*(1-beta), beta = 0 .. 1);
return a;
end proc;

AF := proc (f::list)
L := f[1];
U := f[2];
gamma := 'gamma';
a := int((U(gamma)-L(gamma))*(1-gamma), gamma = 0 .. 1);
return a ;
end proc;

NeutrosophicValue := proc (n::list)
t := n[1];
i := n[2];
f := n[3];
if not IsNeutrosophicCuts(n) then 
y := NeutrosophicAlphaBetaGammaCuts(n);
t := y[1];
i := y[2];
f := y[3];
end if;
return evalf([VT(t), VI(i), VF(f)]);
end proc;

NeutrosophicAmbiguity := proc (n::list)
t := n[1];
i := n[2];
f := n[3];
if not IsNeutrosophicCuts(n) then 
y := NeutrosophicAlphaBetaGammaCuts(n);
t := y[1];
i := y[2];
f := y[3];
end if;
return evalf([AT(t), AI(i), AF(f)]);
end proc;

ValueIndex := proc (n::list, lambda := 1/3, mu := 1/3, nu := 1/3)
return evalf(lambda*NeutrosophicValue(n)[1]+mu*NeutrosophicValue(n)[2]+nu*NeutrosophicValue(n)[3]);
end proc;
AmbiguityIndex := proc (n::list, lambda := 1/3, mu := 1/3, nu := 1/3)
return evalf(lambda*NeutrosophicAmbiguity(n)[1]+mu*NeutrosophicAmbiguity(n)[2]+nu*NeutrosophicAmbiguity(n)[3];
end proc;

CompareNeutrosophicNumbers:=proc(n1,n2::list)
result:=cat(n1," Is the First Number and ",n2," Is the Second Number\n\n");
if ValueIndex(n1)<ValueIndex(n2) then cat(result,"\n1st Number is Greater than 2 nd Number");
elif ValueIndex(n1)>ValueIndex(n2) then cat(result,"\n2nd Number is Greater than 1 st Number");
else 
if AmbiguityIndex(n1)>AmbiguityIndex(n2) then cat(result,"\n2nd Number is Greater than 1 st Number");
elif AmbiguityIndex(n1)<AmbiguityIndex(n2) then cat(result,"\n1st Number is Greater than 2 nd Number");
else cat(result,"\\nTwo Numbers Are Equal");
end if;
end if;
end proc;
end module;

4. Examples

After calling neutrosophic package using with(Neutrosophic) command, lets assume that we have these two single-valued trapezoidal neutrosophic numbers 

Those numbers can be defined by the command:

n1 := NeutrosophicNumber(1, 2, 3, 7, 1, 2, 4, 10, 2, 5, 6, 9); 

n2 := NeutrosophicNumber(2, 4, 6, 10, 2, 5, 6, 8, 3, 4, 5, 9);

and can be plotted by the command:

PlotNeutrosophicNumber(n1); PlotNeutrosophicNumber(n2);

   

 

Lets assume that we want to calculate the following:

 

This can be done easily using the command:

t := NeutrosophicDiv(n1, NeutrosophicSub(n2, NeutrosophicDiv(n2, NeutrosophicMult(NeutrosophicSum(n1, n1), n1))));

and the result can be plotted as follows:

PlotNeutrosophicNumber(t);

 

Value index and ambiguity index can be calculated by the command:

ValueIndex(t); AmbiguityIndex(t);

Which results:

4.681097490

2.024921163

And we can compare  as follows:

CompareNeutrosophicNumbers(n1, n2);

Which results:

 

`[[1, 2, 3, 7], [1, 2, 4, 10], [2, 5, 6, 9]] Is the First Number and [[2, 4, 6, 10], [2, 5, 6, 8], [3, 4, 5, 9]] Is the Second Number

2nd Number is Greater than 1 st Number`

5. Conclusions  

In this article, we introduced a Maple package that is a very useful and important tool for decision makers to take their decisions depending on neutrosophic theory by easily doing arithmetic operations which was very hard to do without using this package. This package also allows users to compare two neutrosophic numbers depending on value index and ambiguity index. 

 

Funding: “This research received no external funding” 

Conflicts of Interest: “The authors declare no conflict of interest.” 

References

 

[1] 

L. Zadeh, "Fuzzy Sets," Information and Control, vol. 8, no. 3, pp. 338-353, 1965. 

[2] 

K. Atanassov, "Intuitionistic Fuzzy Sets," Fuzzy Sets and Systems, vol. 20, no. 1, pp. 87-96, 1986. 

[3] 

F. Smarandache, "Generalization of the Intuitionistic Fuzzy Set to the Neutrosophic Set," International Conference on Granular Computing, pp. 8-42, 2006. 

[4] 

H. Wang, F. Smarandache, Y. Zhang and R. Sunderraman, "Single Valued Neutrosophic Sets," Multispace and Multistructure, vol. 4, pp. 410-413, 2005. 

[5] 

F. Smarandache, "Indeterminacy in Neutrosophic Theories and their Applications," International Journal of Neutrosophic Science, vol. 15, no. 2, pp. 89-97, 2021. 

[6] 

P. K. Singh, "Single-valued Plithogenic graph for handling multi-valued attribute data and its context," International Journal of Neutrosophic Science, vol. 15, no. 2, pp. 98-112, 2021. 

[7] 

S. Debnath, "Application of Intuitionistic Neutrosophic Soft Sets in Decision Making Based on Game Theory," International Journal of Neutrosophic Science, vol. 14, no. 2, pp. 83-97, 2021. 

[8] 

M. B. Zeina, "Neutrosophic Event-Based Queueing Model," International Journal of Neutrosophic Science, vol. 6, no. 1, pp. 48-55, 2020. 

[9] 

M. B. Zeina, "Erlang Service Queueing Model with Neutrosophic Parameters," International Journal of Neutrosophic Science, vol. 6, no. 2, pp. 106-112, 2020. 

[10] 

M. Abobala and M. Ibrahim, "An Introduction to Refined Neutrosophic Number Theory," Neutrosophic Sets and Systems, vol. 45, pp. 40-53, 2021. 

[11] 

M. B. Zeina and A. Hatip, "Neutrosophic Random Variables," Neutrosophic Sets and Systems, vol. 39, pp. 44-52, 2021. 

[12] 

I. Shahzadi, M. Aslam and H. Aslam, "Neutrosophic Statistical Analysis of Income of YouTube Channels," Neutrosophic Sets and Systems, vol. 39, pp. 101-106, 2021. 

[13] 

H. Hashim, L. Abdullah, A. Al-Quran and A. Awang, "Entropy Measures for Interval Neutrosophic Vague Sets and Their Application in Decision Making," Neutrosophic Sets and Systems, vol. 45, pp. 74-95, 2021. 

[14] 

A. A. Abd El-Khalek, A. T. Khalil, M. A. Abo El-Soud and I. Yasser, "A Robust Machine Learning Algorithm for Cosmic Galaxy Images Classification Using Neutrosophic Score Features," Neutrosophic Sets and Systems, vol. 42, pp. 79-101, 2021. 

[15] 

S. Priyadharshini and F. Nirmala Irudayam, "A New Approach of Multi-Dimensional Single Valued," Neutrosophic Sets and Systems, vol. 45, pp. 151-161, 2021. 

[16] 

P. Biswas, S. Pramanik and B. C. Giri, "Value and ambiguity index based ranking method of single-valued trapezoidal neutrosophic numbers and its application to multi-attribute decision making," Neutrosophic Sets and Systems, vol. 12, pp. 127-138, 2016.