# Formulation of a score for how busy a person is

I want to calculate a score which would give information about how busy a person is on a particular day by his email activity (i.e sent/received, replied etc)

I can get the following information of my inbox -

• Number of unread mails in inbox.
• Total number of mails received on that day.
• Number of mails received as "To" among unread mails (these mails would be important and would be replied so more busy).
• Number of mails received as "Cc" among unread mails (these mails mostly would be less important and won't be replied so less busy).
• Number of mails received from sender "no-reply" among unread mails (these mails would never be replied).
• Size of the mails (if the text is too much then the recipient does not read).
• Attachment or not.

How can i use these and come up with a formula which would give the information about how busy the person is ?

Stephen Tashi
I want to calculate a score which would give information about how busy a person is on a particular day by his email activity (i.e sent/received, replied etc)

You can't wisely build a tool unless you know what the tool is to be used for. So you should reveal what kinds of decisions (or amusements) the score would be used for.

I would use either a linear or non-linear mapping of the variables, f: $\mathbb{R}^{6} \cup \{0,1\} \rightarrow \mathbb{R}$, to give you a score. The mapping is really up to you to decide.

This score would be used for showing the busyness of a person as a visualization in the web. So that a potential mail sender sees this visualization and finds out when is the recipient normally free. Then he sends him the mail so that he can be sure that the recipient has highest probability to read the mail since his inbox is free

Stephen Tashi
Is the decision to be made from a score of X: "Is a person with score X likely to promptly read an email that I send now? "

I don't know if that's the same goal as asking "Is a person with score X likely to have no unread messages in their inbox?" For example, I don't sit at my computer all day. If there are no unread messages in my inbox, this means there is a high probability that I've just left the computer to do other things, so I wouldn't be likely to respond promptly.

Besides the information you listed, can you get any time-stamped data that shows when messages were sent or received?

Yes. The score will be used to visualize in such a way to enable the mail sender to send the mail.... something like a traffic light. Green - send(since free) Red - don't (since busy)

The tool would run every 15 mins to check for new mails. So maybe the whole busyness factor can be a function of time. And it will check these and give for one day. And then have the last day's data as historical data.

Yes the date and time for a message sent or received can also be obtained.

Stephen Tashi
Your desire for a "score" indicates that you want a simplistic number that predicts something. I think you should instead consider is whether there is a simple algorithm (not necessarily a "formula" for a single number) that predicts what you want.

A good question to ask is "Can I estimate the history of the thing I am trying to predict from the data?". We also need to refine what you are trying to predict. Having thought about it, I realize that "Will this person read my email quickly" is a different question than "Will this person read my email and respond to it quickly" and these are different questions that "Is this person busy". For example, a person who is currently "taking care of email" may be decreasing his unread messages and increasing his sent messages and this (I think) counts as being busy. However, if you sent an email to him during such a session, he might quickly read it and respond since we know he is at his computer and not on lunch break.

For the moment, let's say the object is to predict whether a person will read an email quickly. If you can can track when individual emails arrive and when they are read then you can know 'time-to-be read" exactly and you can compute things like the average-time-to-be-read for messages that arrived in given time interval.

If you can't track individual emails, perhaps you can make some estimate of time-to-be-read. For example, let's consider only emails with "To". Suppose the data for three 15 minute periods are

Period 1: 3 unread 4 arrived
Period 2: 2 unread 2 arrived
Period 3: 3 unread 1 arrived.

Can we estimate how quickly (on the average) individual emails were read? We'd probably have to make assumptions. For example, you could assume that when a person reads any emails that he reads the oldest ones first (or deletes them without reading them). We can't tell the exact time it took him to read a message but perhaps we can estimate it within a multiple of 15 minutes.

If you can estimate the thing you want to predict from the data then you can represent the data as a "time series" of data records. It may turn out that the best prediction for "time-to-be-read" for the next 15 minute period is simply "average_time_to_be read" for messages in the current 15 minute time period. Or it may turn out that data records for a longer history should be considered.

If someone does propose a simple numerical score, you will be able to test how well that score does by checking the data to see how well it predicts "time_to-be_read". (My own guess about a score is to use a scale that goes up (toward red) as the number of unread emails currently in the inbox goes up - but that's just a guess.)

-------

When people have a good qualitative grasp of problem they can often convert this to numbers by using fuzzy logic. For example, suppose you have confidence in statements such as:

If a person had many unread messages in their inbox and this has been true for a long time then they will not read my email very quickly.

If it is near lunch time and a person has some unread messages in their inbox then a person will not read my email very quickly.

If a person has a few unread messages in their inbox and this has been true for a long time and they have received many new messages during that time then the person is likely to read my email quickly.

If you have data, there are systematic (but somewhat subjective) methods of converting qualitative expressions like "many unread messages" and "very quickly" to numerical ratings. I don't know whether you'd find that too elaborate for your purpose.

I was also thinking on terms of fuzzy logic but was kinda confused bout how to proceed. Here are the rule base for the logic -

Conditions for not GTSE(Good Time to send Email) -
1) If a person has many unread messages in his inbox with he only in “To” and this has been true for a long time.
2) If it is near lunch time and a person has a few unread messages in his inbox.
3) If a person has many unread messages, with him as the only recipient of the mail
4) If a person has many unread messages with him as one of the many recipients of the mail (relatively less busy compared to the previous condition)
5) If a person has many unread messages in his inbox and the size of all messages is less than certain minimum for a long time.

Conditions for GTSE –
1) If a person has few unread messages and has been receiving many emails and he is the only one in “To” (since he is reading and replying now so )
2) If a person has many unread messages and has been receiving many emails in which he is in “CC”

Stephen Tashi
Your application is more sophisticated than the "toy" examples shown in introductions to fuzzy logic. We'll have to exert ourselves!

The first step to applying fuzzy logic would be to identify the different fuzzy sets involved. Opposite conditions in ordinary language should be represented as the same set. For example, to represent the ideas of "many unread messages in his inbox" and "few unread messages in his inbox", we can define a set called Murib. A person who x has few messages in his inbox has a small degree of membership in Murib., a number near 0. A person y who has many messages in his inbox has a large degree of membership in Murib, a number near 1.0. You don't have to specify the degree of membership in the rules. That is worked out later. You just say things like "if x is in Murib" or "if x is very much in Murib" or "if x is very little in Murib".

With that in mind, it would be best not to phrase the rules as yes-or-no conditions for being a good time to send email. It would be best to define a set Gtse and write the rules as implications like:

If x is not much in Murib and .... then t_now is very much in Gtse.
if x is very much in Murib and ... then t_now is not much in Gtse.

There are some interesting complications in your situation.

In fuzzy set theory, the set operations of union and intersection between fuzzy sets naturally have a fuzzy interpretation. One interpretation of the intersection of $A \cap B$ is that the degree of membership of x in $A \cap B$ is the minimum of { the degree of membership of x in $A$, the degree of membership of x in $B$ }. However in your case the types of messages ( e.g. CC vs To) in the inbox allow precise specification of certain intersections and unions of sets in the ordinary sense of the word. I wonder if all the special uses you make of statements about ordinary set operations be translated usefully in fuzzy sets.

Your situation also has statements about the history of fuzzy variables - for example, "his inbox has contained many messages for a long time". To force it into the typical single fuzzy set, we could so an element is a vector showing a history of numbers of unread messages. We could define MuribLt to be the set "long history of many unread messages". Then "his inbox has contained many messages for a long time" would be interpreted as his vector v having a large degree of membership in MuribLt.

There may be better way to to this. Fuzzy Logic has been around long enough for people to invent a time series analysis for it. I'm not familiar with those methods if they exist.

It is getting too complicated now but i think it will be. Here is what i got after 2-3 days of thinking.

Membership Degrees –

Very little, Little, Much, Very much

Fuzzy Sets –

GTSE – {good time to send email; not a good time to send email}
Murib – {many unread messages in inbox; few unread messages in inbox}
Mat - {alone in To; along with many others in To}
Mac - {alone in CC; along with many others in CC}
Ms - {less size of mail; more size of mail}
MuribLt – {too long time since unread, very less time since unread}
ReMs – {too long to reply a message, very less time taken to reply to a message}

The Rules -

Very Much in GTSE –
• If a person X is very much in Murib and very little in Mat and very little / little in Mac and very little in Ms
• If a person X is much in Murib and very little in Mat and much/little/very little in Mac and very little in Ms and very little in MuribLt
• If a person X is little in Murib and little/very little in Mat and much/little/very little in Mac and very little in Ms and very little in MuribLt and very little in ReMs
• If a person X is very little in Murib and very much/much/little/very little in Mat and very much/much/little/very little in Mac and little/very little in Ms and little/very little in MuribLt and little/very little in ReMs

Much in GTSE –
• If a person X is very much in Murib and little in Mat and much/very much in Mac and little in Ms and very little in MuribLt
• If a person X is much in Murib and little in Mat and very much in Mac and little in Ms and little in MuribLt and little/very little in ReMs
• If a person X is little in Murib and much/very much in Mat and very much in Mac and little/much in Ms and little/much in MuribLt and little/much in ReMs
• If a person X is very little in Murib and much in Ms and much/very much in MuribLt and much/very much in ReMs

Little in GTSE –
• If a person X is very much in Murib and much in Mat and much in Ms and little in MuribLt and little/very little in ReMs
• If a person X is much in Murib and much/very much in Mat and much/very much in Ms and much in MuribLt and much in ReMs
• If a person X is little in Murib and very much in Ms and very much in MuribLt and very much in ReMs
• If a person X is very little in Murib and very much in Ms

Very Little in GTSE –
• If a person X is very much in Murib and very much in Mat and very much in Ms and very much in MuribLt and much in MuribLt and much/very much in ReMs
• If a person X is much in Murib and very much in MuribLt and very much in ReMs

Bacle2
Does that mean you will be spamming us in a more sophisticated way now?

Stephen Tashi
It is getting too complicated now

Your problem is more complicated than the typical textbook example. It won't be solvable by pencil and paper. It will involve fitting finding good parameters to fit a multi-parameter function to data. So it will at at least involve writing code to compute this function so you can vary the parameters and inspect the answer. You might be able to do that much with a spread sheet.

How complicated it gets beyond that depends on how seriously you pursue finding optimum parameters. You could "eyeball it" or do something more systematic. The function defined by the fuzzy rules is generally non-differentiable, so searching for good parameters often amounts to trial and error. There are computer methods for doing trial-and-error in an organized fashion such as simulated annealing.

(There are probably fuzzy logic software packages that do problems like this. I've never used such a package.)

Creating the multi-parameter function:

It's necessary to define a function that maps an objective fact (such as 5 unread messages in the inbox) to a degree of membership in each of the fuzzy sets that describe that fact. Sets such as "little in Munrib" and "much in Munrib" are not treated as mutually exclusive fuzzy sets. The same number of messages can cause the situation to have a degree of membership in "little in Munrib" and "much in Munrib". It's probably clearer to to think of "little in Munrib" as "small Munrib" and "much in Munrib" as "large Munrib" - (and I probably should have explained that better in my previous post!) Your rules are OK as written Just don't be confused that we are going to assign a degree of membership in sets whose names appear to denote a degrees of membership.

The most common function I see in books is the "trapezoidal rule". For example for "little in Munrib", it would be a function of the number of messages n and 4 parameters. The function is:

f(n,a,b,c,d) = 0 if n < a
f(n,a,b,c,d) = the linear function between (a,0) and (b,1) if a <= n < b
f(n,a,b,c,d) = 1 if b <= n < c
f(n,a,b,c,d) = the linear function between (c,1) and (d,0) if c <= n < d
f(n,a,b,c,d) = 0 if n >= d

For "very little in Munrib", you would use a different set of parameters. You can dispense with the left part of the trapezoid since "very little in Munrib" is the lower extreme of Munrib ratings. You can have a function whose graph is a horizontal line segment beginning at (0,1) and transitions to a downward sloping linear function.

Fiddling with the parameters a,b,c,d is part of the fitting the function defined by the fuzzy rules to data, so you won't want to "hard code" a,b,c,d if you write a program. Each different set may have a different a,b,c,d. Usually fuzzy sets that signify "adjacent" ratings like "very little Munrib" and "little in Munrib" have trapezoids that overlap, so some values of n can produce a non-zero degree of belonging to both sets. Usually non-adjacent ratings like "very little" and "very much" have non-overlapping trapezoids - at least in textbook examples.

The "if ...." part of a rule contains statements about the situation being in sets and these statements are joined by the logical connectives "or" and "and". These connectives will be interpreted as defining the union and intersection of fuzzy sets. Although "Fuzzy Set Theory" sounds like it refers to a particular method of doing calculations with fuzzy sets, fuzzy set enthusiasts have proposed alternative ways of doing calculations for almost every set operation. The "traditional" function used to evaluate the degree of membership in the union of two fuzzy sets is to take the maximum of the two individual degrees of memberships. The traditional way to evaluate the degree of membership in an intersection is to take the minimum of the two individual degrees.

Still to be done is to evaluate the "then" part of the rules and evaluate the net result of applying all the rules. I'd better review before trying to describe it

Membership terms -
Huge = 75 - 100 %
Large = 50 - 75 %
Small = 25 - 50 %
Tiny = 0 - 25 %

The function –

Murib calculation -
perUn = (no of unread / total no of received msgs)*100 = 66%
if 75<perUn<100 -> Membership in Murib = Huge
if 50<perUn <75 -> Membership in Murib = Large
if 25<perUn <50 -> Membership in Murib = Small
if 0<perUn<25 -> Membership in Murib = Tiny

Mat Calculation -
perTo = (no of unread mails as To as alone / total no of unread msgs)*100 + ((no of unread mails as To with others / total no of unread msgs)*100 / 2) = 60 %
if 75<perTo<100 -> Membership in Mat = Huge
if 50<perTo<75 -> Membership in Mat = Large
if 25<perTo<50 -> Membership in Mat = Small
if 0<perTo<25 -> Membership in Mat = Tiny

Mac Calculation -
perCc = (no of unread mails as Cc as alone / total no of unread msgs)*100 + ((no of unread mails as Cc with others / total no of unread msgs)*100 / 2) = 17.5 %
if 75<perCc<100 -> Membership in Mac = Huge
if 50<perCc<75 -> Membership in Mac = Large
if 25<perCc<50 -> Membership in Mac = Small
if 0<perCc<25 -> Membership in Mac = Tiny

Ms Calculation -
Simply pass the size to the function busyness
If 500<size -> Membership in Ms = Huge
If 100kb<size<500kb -> Membership in Ms = large
If 50kb<size<100kb -> Membership in Ms = Small
If size<50kb -> Membership in Ms = Tiny

MuribLt Calculation -
Simply pass the time passed to the function busyness
If 2 days < readtime -> Membership in MuribLt = Huge
If 1 day < readtime < 2 days -> Membership in MuribLt = large
If 30 mins <readtime<24 hours -> Membership in MuribLt = Small
If readtime<30 mins -> Membership in MuribLt = Tiny

ReMs Calculation -
Simply pass the time take to reply to the function busyness
If 2 days < replytime -> Membership in MuribLt = Huge
If 1 day < replytime < 2 days -> Membership in MuribLt = large
If 30 mins < replytime <24 hours -> Membership in MuribLt = Small
If replytime < 30 mins -> Membership in MuribLt = Tiny

Then after calculating the membership of every set i will pass that percentage to the busyness function as a parameter and calculate the final busyness according to the rules defined above.

Stephen Tashi
That approach might work, but it's not the fuzzy way.

The fuzzy way wouldn't make a sharp distinction between qualitative degrees of membership like tiny,small,large,huge. It would let the same perUn produce some degree of membership in more than one of those conditions. In my earliest posts, I didn't make a clear distinction between the qualitative degrrees of membership vs the quantitative degree of membership.

Let's take the example of Murib. The fuzzy way would be to have 4 sets, murib_tiny, murb_small, murib_large, murib_huge. A given value of perUn could establish a non-zero degree of membership in more than one of these sets.

For example, we might have:

function murb_large_membership(perUN)
if ( perUN < 60) return(0)
if ( perUN > 80) return(0)
if ( perUN < 74) return ( (74-perUn)/(74-60) )
if ( perUN < 76) return(1)
/* Here we reach the case where 76 <= perUn <= 80*/
return( 1 - (80-perUn)/(80 - 76) )

function murib_huge_membership(perUN)
if (perUN < 75) return(0)
if (perUN > 85 return(1)
/* Here we reach the case where 75 <= perUn <=85 */
return( (85-perUn)/(85-75) )

This allows a given value of perUn, such as perUn=78 to produce a degree of membership in both murb_large and murib_huge.

We still have to discuss the output of the rules. In the fuzzy interpretation of logic, two apparently contradictory if.... conditions can apply simultaneously. For example if you have rules:
if ( murib_large and .... )then ....
if ( murib_hunge and ...) then ....
both rules can be "triggered" by a given set of conditions.

The output of a fuzzy rule is an geometric figure rather than a single number. We'll have to discuss that also!

I want to calculate a score which would give information about how busy a person is on a particular day by his email activity (i.e sent/received, replied etc)

I can get the following information of my inbox -

• Number of unread mails in inbox.
• Total number of mails received on that day.
• Number of mails received as "To" among unread mails (these mails would be important and would be replied so more busy).
• Number of mails received as "Cc" among unread mails (these mails mostly would be less important and won't be replied so less busy).
• Number of mails received from sender "no-reply" among unread mails (these mails would never be replied).
• Size of the mails (if the text is too much then the recipient does not read).
• Attachment or not.

How can i use these and come up with a formula which would give the information about how busy the person is ?

None of those would help. They're all inputs. To see how busy someone is, you have to measure outputs. How many emails did they answer? How many phone calls made? How many problems resolved? etc. If someone sends me a spam email, that doesn't make me any more or less busy.

Stephen Tashi
To continue the discussion of fuzzy rules, they require that you define functions that quantify the membership of a situation in the sets: very little in GTSE, little in GTSE, much in GTSE, very much in GTSE. You must establish an arbitrary rating scale for GTSE, which is consistent with your idea of a color scale.

For example, if we say GTSE will be rated on a scale of 1 to 10 then you need to define 4 functions that convert a numerical rating (like r = 8) into a degree of membership in each of those sets. The form of the functions can be similar to the one's you used for the levels of other sets, like munrib_large_membership.

To compute the output of a fuzzy rule that says "if A then the situation is much in GTSE', you evaluate the fuzzy degree of membership produced by the statement A. For example, suppose the rule is:

• If (a person X is very much in Murib and very little in Mat and very little in Mac and very little
in Ms) then the person is very much in GTSE.

Evaluation of the if-part:

The "and" connectives are treated as operations that take the minimum of two degrees of membership. For the if-part, the computation has the form:

d = minimum( munrib_huge_membership(perUn),mat_tiny_membership(perTo),mac_tiny_membership(perCC,), ms_tiny_memberhip(size))

If you have several rules where the then-part is the same qualitative set (such as GTSE_very_much) then you evaluate each rule and take the largest value of their if-parts. This is equivalent to saying

if A then GTSE_very_much
if B then GTSE_very_much

is equivalent to

if (A or B) then GTSE_very_much

The fuzzy interpretation of the "or" connective is to take the maximum of the degrees of membership.

Evaluation of the then-part:

Using the value 'd', we look at the graph of the function GTSE_very_much_membership(r). (r is plotted on the horizontal axis, degree of membership on the vertical). The horizontal line defined by GTSE_very_much_membership = d bounds an area that is both underneath that line and under the graph of the function. Considering that area to be a uniform 2-dimensional plate, the plate has a center of mass. Applying some more mathematics, we can compute the center of mass of the plate. It will be some point ( rp, dp). We consider the plate to have 1 unit of mass per unit of area, so its area is its weight.

The output of the rule (or rules having a common then-part) is given by the coordinates of the center of mass of the plate and its weight.

------

Combiining the output of all the rules.

Because of the way fuzzy logic operates, rules applying to all qualitative categories of GTSE produce outputs. For example, a "if A then GTSE_much" and "if Q then GTSE_little" could both produce outputs.

Note that we can represent the 4 membership functions, GTSE_very_little_membership(r), GTSE_little_membership(r), GTSE_much_membership(r), GTSE_very_much_membership(r), on the same graph. The rating r is the horizontal axis and the degree of membership (between 0 and 1) is the vertical axis.

On this combined graph, we look at the center's of mass produced by the various rules, the rules for categories of GTSE have produced 4 plates. We compute the center of mass of all the plates considered as one system. (Just as you would work the problem in physics - we can discuss this if needed). If the center of mass of the combined system is (r,g) the final conclusion is that r is the GTSE rating and you can translate that to a color scale.

(A rule whose if-part produces a zero, results in a plate with zero mass, so its output has no effect on the final calculation of the combined center of mass. In this sense, there can be fuzzy
rules that "don't apply" to a situation.)

This score would be used for showing the busyness of a person as a visualization in the web. So that a potential mail sender sees this visualization and finds out when is the recipient normally free. Then he sends him the mail so that he can be sure that the recipient has highest probability to read the mail since his inbox is free

I'd find the average number of unread emails as correlated with the hours of the day, then report that number. So if Suzie's mailbox is most empty at 4pm, it would make sense to send an email between 3 and 4 pm. I think that all those other variables will simply introduce noise and obscure the result.

A slight clarification needed here concerning your previous post. I get that a particular value of perUN should create membership in more than one sets. Hence i defined the different overlapping sets as follows so that it overlaps adjacent sets-

Huge = 75 - 100 %
Large = 50 - 85 %
Small = 25 - 60 %
Tiny = 0 - 35 %

Then i define the membership functions as follows -

function murib_huge_membership(perUN)
if perUN < 75 return(0)
if perUN > 85 return(1)
if 75 < perUN < 85 return( 1 - (85-perUN) / (85-75))
function murib_large_membership(perUN)
if perUN < 50 return(0)
if perUN > 85 return(0)
if 60 < perUN < 75 return(1)
if 50 < perUN < 60 return( 1 - (60-perUN) / (60-50))
if 75 < perUN < 85 return( (85-perUN) / (85-75))
function murib_small_membership(perUN)
if perUN < 25 return(0)
if perUN > 60 return(0)
if 35 < perUN < 50 return(1)
if 25 < perUN < 35 return(1- (35-perUN) / (35-25))
if 50 < perUN < 60 return((60-perUN) / (60-50))
function murib_tiny_membership(perUN)
if perUN < 25 return(1)
if perUN > 35 return(0)
if 25 < perUN < 35 return(1 - (35-perUN) / (35-25))

Now here if we take for example the value of perUN = 78. This should create membership in both huge and large. The membership is as follows -
huge - ( 1 - (85-perUN) / (85-75)) = 0.3
large - ( (85-perUN) / (85-75)) = 0.7

By looking at the intervals defined above it is clear that 78 should have more membership in large and less in huge. So is this correct ?

I am a little confused by seeing your calculation. I know this entirely depends on the intervals defined. Following your previous post i think that you have considered the interval large - {60 - 80} and huge - {75-100}
So now if i calculate membership for perUN = 78 by following your previous post i get the following -
huge - ((85-perUn)/(85-75)) = 0.7
large - ( 1 - (80-perUn)/(80-76)) = 0.5

Is this correct as seeing the intervals large - {60 - 80} and huge - {75-100} i think that perUN = 78 should have less membership in huge and more in large.

Am i missing something here? Or are you thinking this on some different lines?

mfb
Mentor
What about a completely different concept?
Send all mails to a single address (unless they have to go to specific persons - those mails do not need a distribution system anyway), let all possible recipients fetch mail from the central inbox when they have time.

Stephen Tashi
I am a little confused by seeing your calculation.

Sorry, my examples have errors vis-a-vis my intentions. I have segments of the graphs sloping the wrong way. I want a trapezoid shaped graph. See if this is better:

function murb_large_membership(perUN)
if ( perUN < 60) return(0)
if ( perUN > 80) return(0)
if ( perUN < 74) return ( (perUn-60)/(74-60) )
if ( perUN < 76) return(1)
/* Here we reach the case where 76 <= perUn <= 80*/
return( 1 - (perUn-76)/(80 - 76) )

function murib_huge_membership(perUN)
if (perUN < 75) return(0)
if (perUN > 85 return(1)
/* Here we reach the case where 75 <= perUn <=85 */
return( (perUn-75)/(85-75) )

function murib_huge_membership(perUN)
if perUN < 75 return(0)
if perUN > 85 return(1)
if 75 < perUN < 85 return( 1 - (85-perUN) / (85-75))

function murib_large_membership(perUN)
if perUN < 50 return(0)
if perUN > 85 return(0)
if 60 < perUN < 75 return(1)
if 50 < perUN < 60 return( 1 - (60-perUN) / (60-50))
if 75 < perUN < 85 return( (85-perUN) / (85-75))
You should write the code so an exactly equality (like perUn = 85) will fall into one of the cases. Otherwise, your method looks OK.

I know this entirely depends on the intervals defined. Following your previous post i think that you have considered the interval large - {60 - 80} and huge - {75-100}

I did. The membership funciton doesn't entirely depend on the endpoints of the intervals. There is no particular rule about how to divide an interval into regions where the graph of the membership function is 1 and where it has slopes. So you can't tell just from the interval endpoints whether a given value is more a member of one interval than another.