|
Albert Einstein once said “Everything should be made as simple as possible, but no simpler”. These simple words coming out of a genius’s mind carry a lot of meaning and depth in them. The last two decades saw an exponential rise in different branches of engineering and sciences; and with these developments came in a crowd of very advanced yet very complicated technologies. Are these complexities intended?
The answer is very simple NO; the very word advanced is
almost always inherited by complexity. No one would want to design and
manufacture something very complex, but the more advanced a technology
is, the more complex it gets. Even the works done by the man who said
those words are far too complex for a common man; and actually that is
exactly what he meant. Every one tries to make things as simple as
possible, but no simpler than that, they just can’t and the simplest
product design possible can become very complex in some regards.
With increasing complexity, there is always a danger of system being
destabilized, reduction in overall performance, higher cost, higher
maintenance, etc. The way to keep control over complexity is to have a
measure of it, so that management and manufactures know what exactly to
do and how to change their operational strategy. In this essay I am
presenting a detailed overview of complexity, its different meanings
and interpretations in various industries and a host of measures that
were developed to measure and evaluate complexity. There are also a few
methods of minimizing complexity presented along with case studies
illustrating the means in which these measures were applied to real
time manufacturing and designing processes.
Complexity:
“What is complexity?” could be one of the most complex questions to
be answered. The very definition of complexity from dictionary would
suggest the following:
Consisting of interconnected or interwoven parts
Composed of two or more units
Offers great difficulty in understanding, solving, or explaining
The interlacing of parts so as to make it nearly impossible to follow or grasp them separately
Extreme complication and often disorder; complication and entanglement that make solution or understanding improbable
The first two meanings are not too related to our present context so
I will ignore them, but the rest suggest the exact meaning of what
complexity is. As we can see, if I do not understand something properly
or am not capable enough to understand it, ‘that’ thing is complex to
me. Does this mean it is really complex? The answer again is very
simple, NO and that is the very reason why complexity is so hard to
define. Complexity of anything is dependent on many factors and one
very important factor is human understanding. A subject complex to me
could be a piece of cake for some one else and this very behavior of
complexity makes it very hard to measure and evaluate it.
An important and interesting question that may arise in reader’s mind
is, “Does the very same meaning of complexity stand in industry
standards too?” The answer could be both a YES and a NO. It does stand
the same thing in some cases, but in rest, the definition of complexity
is completely modified. A best example would be industries involved in
computer sciences and engineering. There complexity of a code does not
really mean it is hard to understand, it rather means that it takes a
lot of time for computer to calculate and give the results. In most of
the mechanical and electronic designs, complexity would mean systems
with multiple interacting parts, the behavior of which cannot be
related with respect to individual parts. That is their collective
behavior is completely different and /or unpredictable from their
individual behavior. Again this unpredictability can be related to just
the static structure of these components or dynamic nature, thus the
differentiation between static complexity and dynamic complexity. Now a
very good question to answer is “What exactly are these static and
dynamic complexities?”
Static Complexity: Given a particular system (could be any system
like manufacturing plant with different manual and automated equipment
or just a small network with multiple servers/ clients ), there is
always some complexity involved with the static structure of these
components, could be just their physical shapes/ sizes or their
alignment with other objects or with environment. This complexity which
is made up as a function of various parameters like physical shapes,
structures, connectivity, variety and strengths of components is called
static complexity.
Dynamic complexity: Dynamic complexity is more related towards the
behavior of these components as a unit. As mentioned earlier, the
pattern of behavior for a group of components is almost always
different than the pattern for individual components; this behavior
measured over a period of time is a major parameter in dynamic
complexity.
A very important form of complexity that is normally taken as constant
or zero while evaluating static or dynamic complexities is complexity
arising because of control; that is, given a particular system, there
could be many ways in which it can controlled and each one of these
methods can result in a different static / dynamic complexity measure,
thus to really evaluate a system, we should also consider this
parameter and measure a control complexity too. But for most practical
purposes, it is assumed that there is only one way to control, thus
ignoring control complexity.
Measuring and evaluating dynamic complexity is highly dependent on the
industry and its specific design, thus forming generic measures for
dynamic complexity is not only complicated but also inapplicable in
vast majority of other designs. Thus research is more focused towards
static complexity and its measures. Though there are papers which
concentrate only on dynamic complexity, they are very much oriented
towards a specific industry and its related fields. Does this mean that
static complexity is similar for all industries and designs? No, but a
particular measure calculated for static complexity could be easily
expanded to other designs too, which is not the same for dynamic
complexity. In this paper, I will give measurements of both static and
dynamic complexities with respect to manufacturing environment.
Before we go any further into measurement of complexity, it is a good
idea to understand why and how complexity arises in systems? There is a
general belief that complexity arises due to many random factors. It
could be true in some sense, but that only indicates a very bad design.
For systems which are well designed, manufactured and maintained,
randomness is not a major factor; it is rather the fact that the system
cannot be easily described which causes more complexity. According to
Axelrod and Cohen describe systems as comprising of agents and
artifacts. The artifacts are just physical (or virtual) objects that
comprise the system where as the agents who have attributes like
location, memory, ability to interact with other agents, ability to
manipulate and change functions, control these objects. The agents may
not have to be people alone; they can be computer programs, groups,
political entities etc that may affect the system directly or
indirectly.
Another important and very interesting concept of complexity comes from
Wolfram, in which he states that complexity in a system comes from
randomness produced because of three sources.
The first source is the environment and its intervention, either directly or indirectly, on the system.
The second source is the initial conditions that the system was in,
before being used. These initial conditions could be random thus adding
more weight to the complexity.
The third and most important one is the internal or intrinsic
complexity of the system. That is the complexity of the system when
there is no external influence or affect.
With all these different views of complexity, we are now ready to go
ahead and describe what complexity in design is? But before that, let
use see what exactly design means.
Design and Why is it done?
In this section, let us see what exactly design means and as in every
case, let us start with the exact dictionary definition of design.
To conceive or fashion in the mind; invent
To formulate a plan for; devise
To plan out in systematic, usually graphic form
To create or contrive for a particular purpose or effect
To have as a goal or purpose; intend
To create or execute in an artistic or highly skilled manner
These, may be with little twists here and there, are the exact
definitions of ‘Design’ that you see in dictionaries and they almost
suggest what precisely designing means in industry standards.
Basically designing involves “making things better and more useful to
customers (or people)”. Almost every single thing that we use is (/was)
designed at some point of time; things that we take for granted were
once designed and engineered. Design is an integral part of us and our
society and is united in almost everything and anything we do and we
use.
Designing any thing starts with an idea, any idea good or bad. The main
job of designers is to reform this idea so that it is understandable
for the people who need to work on it and manufacture it, sort of a
blue print. Whether it is a multi billion dollar dam or a small fashion
hair pin, the process of creating them is all the same and involves
almost the same basic general steps. Before we discuss these steps, it
is important for us to understand why designing is done on the first
place?
Designing is a very important and basic step in any product. To deliver
a product, there are many steps involved. There are scientists who
invent new technologies, engineers who use these technologies to
develop various components, manufactures that use these components in
manufacturing different products and finally marketers who take the
prime role behind delivering the product. But who is going to
coordinate their efforts to produce a desirable and successful product,
no one else but the designers. They are the people who understand what
the customer want and deliver a mechanism to make it happen.
Designing is not just what we read in magazines which depict it as
mostly involved with fashion industry. No that is not at all the case
it involves a lot of insight into the way customer thinks and wants his
product. As I mentioned earlier, everything that we use was designed at
some point of time. There are some very important things that every
design is supposed to follow, a brief list of which is as follows:
User requirements: The very first and most important aspect a
designer has to consider is user. In this world where the number of
competitors for a product is more than the product itself, there are
very few designs which are being accepted into user community. The main
reason behind their success being complete satisfaction of customers.
The very first step of any design process is to know “what exactly
customers want?”
Creativity: Next comes creativity. When the designer knows what the
customer wants, he has to create some thing new; he just can’t give the
same old stuff which just satisfies the needs. If I am buying a camera,
being a picky customer I wouldn’t buy any camera that can take a snap
of me, NO, I want so many other things which may be I will not even
dream of using, but still I want them in my camera. That is how
customers think and that is what exactly designers provide. Innovation
has to be there in a product without which there is no value to it.
Designers explore all the different combinations in which a product can
be designed and seek new methods in doing so. The stranger it is the
better. Now that there are so many simulation tools and other devices
that provide so much insight into the product even before it is made,
this work is simplified a lot.
Business process: the other very important consideration a designer
has to go through is the business process both from company perspective
and user perspective. The over all price of the product may depend on
the design and considering this is a very important thing. The best
examples are the products from Microsoft, take for example PowerPoint,
though costing only 50-100 dollars, its over all revenue may be grater
than some very big software companies whose products cost millions of
dollars. Why? The design was so done that there are millions of
satisfied customers to PowerPoint or excel who can afford it easily
than to products that cost millions of dollars.
Manufacturing overview: it is also very important for a designer to
be thoroughly aware of what exactly his company is capable of and at
what capacity. I can design a magnificent product in a technology that
my company is not even aware of, there is no use to it. A designer
should be completely knowledgeable in the manufacturing processes and
principles of his company so that what ever he does is not counter to
the existing mechanism, but only increase its productivity by using it
in a better way.
Now that we considered the basic aspects of design, let us now look
at the design process. Being a designer is not such a simple job, you
will have to consider so many discrete and varied things, a small list
of which was provided above. There is a lot of trial and error
involved. Till you get the right one, there could be thousand rejected
designs. Though most of the design process is done by designers, there
is a lot of contribution from most of the other departments involved in
getting that product out like manufacturing people, engineers, business
analysts, managers etc. The following are the basic but general steps I
mentioned earlier that any designer follows:
Understanding and evaluating Requirements: The very first step
involved in design process is to understand and evaluate the user
requirements. This involves defining the objectives, setting deadlines,
targets and parameters. The design team is involved right from the
beginning to the end as they have to understand the business process
both from the company’s point of view and the customer’s point of view.
The idea being creating an ideal project which will satisfy both the
business processes and optimize them. A very important question to
answer at this level is why are we creating / modifying this product?
Once this question is properly answered, the rest of the process
becomes simpler and logical.
Research: Research is one of the most important aspects of the whole
process. This is an ever going process, especially in the case of a
longer project. Research typically includes a variety of areas like
Technology, Economy, User Satisfaction, Competitor products, trends,
risks etc. Every one among them will affect the product and its design.
A simple example would be the conversion from analog to digital. May be
a decade or two ago, there were some systems which were still
concentrating on analog devices. Now they are hardly seen. When such a
drastic change is happening (a decade would not be drastic for us, but
for large scale manufacturing plants to change their whole technology
from analog to digital would cost millions of dollars even though it is
spread over multiple years), it would be highly beneficial to a company
to be well informed before hand rather than changing at the spur of a
moment. Research is more concentrated on the customer / user than any
thing else. What ever user wants has to be done and it would be much
more preferable to know the user choices before hand doing our own
research, rather than getting a dissatisfied comment from him.
Planning: planning is another significant part of the whole process.
As I mentioned earlier, it is always good for the designers to know the
internal business processes of the company before hand rather than
knowing them later on and trying to modify the design. Planning takes
care of this step. With participation from wide variety of areas all
across the board, it becomes simpler for the designer to know and
understand different views and angles about a manufacturing process so
that the overall design is acceptable and enjoyable by everyone.
Communication: In a business process, there are always instances when
the customer thinks of some thing, the designer understand something
else and the manufacturing guys create something completely different.
Why does this happen? Lack of communication. Whose mistake is this?
Nobody’s. It is very important for a designer and his team to keep in
constant touch with both the customers and the manufacturing guys at
the same time. Designers are the only bridge between customers and
manufacturers and they should be completely aware of the business
process from both the sides. It is client’s responsibility that he
conveys the proper requirements to the designers so that they can
re-convey them to their manufacturing guys, a small leak here and there
can result in disaster. But does the client do this always? NO. So it
becomes an additional burden on the designer to keep in constant touch
with the customer and keep him posted of what is going on with the
product, so that if there is some discrepancy, then the message is
obtained instantly, same is the case with manufacturing people.
Implementation: the last step is implementation, mostly done by the
manufacturing people but involves a little contribution from design
team too. First of all, they may have to monitor the whole process and
may be even test it thoroughly. Being the only people with complete
knowledge of client’s business requirements, they are also responsible
for quality.
This is how a generic design process goes, let me stress the word
generic again. Depending on industry, this process may change here and
there, but the changes would be nominal. Now let us consider the
different contexts of complexity in different industries and their
detailed analysis, the major difference between the following topic and
the one presented earlier being that the following one is description
of complexity from design perspective.
Different Contexts of complexity in different industries:
I already mentioned while explaining the definition of complexity that
its basic meaning may change from industry to industry. In this section
let me highlight some key industries and illustrate the meaning of
complexity with respect to that particular industry. In the very same
process let us also try to combine the design process into the context
so that we can start concentrating more on complexity in design more
than complexity in general. Let us start with the software industry
where the definition of complexity is very fundamental but very useful.
Complexity in Design for Software industries:
What exactly does complexity in software design mean? IEEE standard 729
gives the following definition for complexity in software, “The degree
of complication of a system or system component, determined by such
factors as the number and intricacy of interfaces, the number and
intricacy of conditional branches, the degree of nesting, the types of
data structures, and other system characteristics." Though very
extensive, this definition still doesn’t cover all the aspects of
compelxity in software. There are many things to be considered while
stating complexity in software a few of which are the operating system,
programming language , database, interace being used etc and etc. Now a
popular question could be, “Does all this matter, a complexity has to
be related to the way you desing an algorithm more than the way you
program it?”. Actually it does. There is a popular notion of measuring
complexity in software industry where in they compare a particular
language (for example) with another one and decide what is more
complex. Though theoretically perfect, practically this is totally
wrong. How can one compare an alogrithm written in Java to the same
algorithm written in C, their applications and usages are completely
different. Similarly you cannot compare a program using Oracle as its
database to a program using Microsoft Access. Now can we measure
complexity taking all these into consideration? Not really. For
measurement purposes again everything falls back to algorithm level.
What ever be the programming basis you are using, underneath it there
is only a single algorithm being used. Thus in this context measurment
of complexity has to be done with a lot of risk. Later in the essay I
am going to suggest some popular methods of complexity measuremnts used
in software industry.
In general, complexity in software comprises mainly of the following components (apart from the algorithm):
Component Reuse (so called Object Oriented Programming): This is a
very important component of complexity measurement these days. Given a
particular algorithm, if you can reuse a piece of code again and again,
thus avoiding redundancy, the complexity would decrease by a lot. Hence
this factor is a very important component of software complexity.
Control Flow: This takes into consideration the whole control structure of the program.
Data Structures: The number of data structures being used and their size (in bits and bytes)
Size: the over all length of the code (also including the commented
lines and documentation as even they are considered in compilation
process)
From the above description, we can conclude that software
complexity depends a lot on the algorithm being used, but many other
factors contribute a lot too. Thus a good designer would first of all
consider the algorithm and once the algorithm is decided, he / she
would spend more time looking into various other considerations, trying
to decrease the length of code, number of hits to the database, number
of requests from the server etc.
Complexity in Manufacturing: Let me clarify what I mean by
Manufacturing before I go any further, it includes almost every single
sector of consumer product industry starting from auto industry to
small electronic components. Why am I including them of all into a
single concept? Because the way they function is almost similar with
the difference in size. Thus in this section, I will try to distinguish
them when ever necessary, but other wise they are all the same.
Majority of these industries involve many moving parts and each one of
these parts are again designed and manufactured, either in the same
company of in a different one. Thus there is complexity involved in
designing each one of them, and then comes the complexity of assembling
them into one single system, normally carried out by various automated
and / or manual methods. Consider for example an auto industry. With
thousand of components going into the assembly line, the whole process
becomes highly complex; similar is a case with electronic devices where
in minute parts has to placed and soldered on a PCB with utmost
precision. Normally complexity of a manufacturing process is dependent
on many parameters, a brief list of which is as follows:
Similarity in processing requirements: the complexity of
manufacturing process is highly dependent on the processing
requirements and their similarity. Any process would be much simpler
when it has similar methods being used across various modules. Thus
with variance in processing requirements, the complexity increases.
Complexity also increases due to changing consumer demand, which
directly affects the whole setup.
Yield: Manufacturing yield is another important factor that
determines the complexity. There is always a constant effort to
increase the yield but without proper planning and automation, this
could result in huge complexities.
Miniaturization: With the latest trend of miniaturization, all the
components are being made as small as possible thus increasing their
overall complexity. We can easily say that a laptop or as a matter of
fact a palm top is much more complex than a desktop. A similar trend is
being observed in many of the electronic sectors and thus enhancing the
complexity of design.
Energy Efficiency: More applicable in automobile than anywhere else,
this parameter is affecting the complexity a lot. With modern vehicles
(hybrid electrical and gasoline based engines), the energy efficiency
is being increased a lot, but along with it, the complexity is also
increasing at a similar rate.
Why do we need Complexity Measures?
Till now I discussed the basic definitions and detailed meanings of
complexity and design. Now let me consider on measurement of
complexity. The very first question to be answered in this regard is,
Why do we need complexity Measures for?
The answer for this question cannot be given in all technical fashion;
we need some philosophy for this. As can be seen from the trends in the
past two decades, the population is rising at a huge rate and along
with it the technology is improving at an exponential rate. We are
living in the period where Moore’s law is still being maintained and
the devices that we use daily are being made more and more
sophisticated and user friendly. But what if some one wants to
understand the concepts behind any of these devices, though the modern
communication is fast and very knowledgeable, it is vast too. Most of
the information provided is random, not relevant, redundant and some
time inaccurate. This provides more confusion than clarity. As Simon
says in his paper Creativity, Innovation, and Quality,
“Today, complexity is a word that is much in fashion. We have learned
very well that many of the systems that we are trying to deal with in
our contemporary science and engineering are very complex indeed. They
are so complex that it is not obvious that the powerful tricks and
procedures that served us for four centuries or more in the development
of modern science and engineering will enable us to understand and deal
with them. We are learning that we need a science of complex systems,
and we are beginning to construct it”
, it is becoming more and more painful for common men to understand
or evaluate systems because of their complexity. This complexity is
increasing day by day rather than taking a downward step. Not only in
manufacturing processes but also in other industries like software,
electronics, even social, political, religious, medical, biological etc
are also vastly affected. The only way out of this confusion is to do
proper designing so as to minimize the complexity involved, (note the
work minimize. It is impossible to eliminate complexity). Are these the
only reasons of measuring complexity? No way. None of the
industrialists would ever invest in research for complexity measures
for the above mentioned reasons. There is a huge economic advantage by
doing proper complexity measurement and then taking proper steps to
minimize it. I will mention a small list of these benefits here, and
then explain them in detail as we go on to subsequent sections.
List of advantages for measuring, evaluating and finally minimizing complexity from financial point of view:
The operational strategy could be improved a lot.
Processing speed and thus information transfer is much faster and smoother.
System performance is better.
Increased autonomy.
More customer satisfaction and thus higher profit.
Easier to maintain, modify or redesign.
Statistics involved in Complexity measurement:
Before we can go ahead and derive some formulae for complexity
measures, it is a good idea to brush up some basic concepts of
information theory and other related statistical engineering subjects.
So this section is dedicated for a brief overview of some of these
important concepts.
Ensemble: An ensemble X is a random variable x with a set of possible
outcomes, Vx = {v1,v2,..vi, … vI), having probabilities {p1,p2,…pi,
..pI} with P(x=vi)=pi, pi >0 and
Conditional Probability:
Product rule:
Sum rule:
Bayes’ Theorem:
Stationary Process: A random process where the various statistical
qualities or properties do not vary with time is called a stationary
random process. That is for a stationary process, the parameters like
Mean, Variance, Standard Deviation etc are constant across time.
(Example White Noise)
Ergodic Process: Random process in which the time series produced
are the same in statistical properties. That is a set of random
processes are considered as time shifts of an original stationary
process.
Entropy: A very popular term in Information Theory, entropy means the
lowest amount of bit rate needed for representing a particular symbol.
The exact value of Entropy is
. It is also called as uncertainty of x.
With this definition of Entropy and following the probability rules
defined earlier, joint and conditional entropies can be defined as
follows:
Joint Entropy:
Conditional Entropy:
This information should be sufficient for us to go ahead and derive
our formulae; if any thing is needed I will provide it at that instant.
Different methods of Complexity Measures, their Evaluation and Analysis:
As indicated above, different industries use the term ‘Complexity’ in
different aspects, thus there are varied meanings and definitions of
it. With so many differences involved in just defining complexity, we
can imagine how difficult it would be to measure and find methods to
reduce complexity for all these manufacturing units. Taking into
consideration this vastness, normally research is done only in those
fields where there is some sort of existing mathematical background,
using which new complexity measures and evaluations can be done. Ones
these are formed, then the same measures could be used for relating
complexity of any related industry. A popular area where there is a lot
of mathematical background existing is algorithmic complexity, mostly
for software related industries but applied in general to a vast area
of other industries too. For beginners, let me start with describing a
few methods in software industry and we shall proceed to manufacturing
plants later on.
Fan-In Fan-out complexity:
One of the most basic complexity formulae to be derived is Fan-In
Fan-Out complexity formed by Sallie Henry and Dennis kafura. Let us
define the following parameters,
L = length of the code in lines
Fanin = the number of functions that call a particular function
Fanout= how many functions are called by a given function is called
fanout. Then the complexity of the code by this method is given as
Complexity = L* (Fanin*Fanout)2
In overall essence what exactly this formula does is, it counts the
number of data counts from a particular unit of code and number of data
counts into that unit or into a data structure to measure the
complexity. Not so useful in real time applications with millions of
lines of code and very complex algorithms.
Software Science:
This method was started by Maurice H. Halstead. Again this is a very
simple and quite useless sort of algorithm to calculate complexity of
program code. The formula for complexity that Halstead proposed was as
follows:
N=n1logn1 + n2logn2
Where N is the implementation length of the code, n1 is the number
of unique distinct operators appearing in the implementation, n2 is the
number of unique distinct operands appearing in the implementation.
Now he defines the program volume as V =N log(n1 + n2)
Where log is logarithm to the base of 2.
Then he suggests that more the volume of the program code, more complex
it is. As I said the above two measures were quite useless for modern
programs involving very complicated algorithms.
McCabe’s Cyclomatic Complexity:
To measure the amount of decision logic that is loops like for loop,
while loop etc or breaks like if, case etc, for a simple software
module, we can use McCabe’s Cyclomatic Complexity.
An example formula that suggests the implementation of this principle is as follows:
CC(G) = NE – NN +1
Where CC is cyclomatic complexity, NE is the number of edges in a given
graph G, NN is the number of nodes in a given graph G and G is the
graph.
As we have seen much about complexity and its measures in software
industry, let us also try to evaluate some measures in manufacturing
industry. With the vastness of this field, there was a lot of research
done in measuring, evaluation and minimizing complexity. There are some
very basic but highly applicable formulae in which complexity could be
measure and there are some derivations which involve high level of
mathematics and statistics. Let me consider a case in which the measure
is real simple and then go to higher ones. The following is a
complexity measure that could be used for small systems with very less
intermingling.
If I have a simple system with the following information about it,
the overall number of functions that the product provide is f
the number of parts used in the product are Np
the number of types of parts involved in the product are Nt
the total number of interfaces involved in connecting these various parts is Ni
Then complexity C of the system could be found by
C = 1/f * (NpNtNi)1/3
As we can see from the above formula, it is quite simple but highly
useful for a rough measurement of complexity. Now let us see some real
complexity measures found in literary that consider modern day
manufacturing standards. The following is a complexity measurement
scheme proposed by Abhijit V. Deshmukh, Joseph J. Talavage and Moshe M.
Barash. The paper was dedicated towards deriving complexity measures
for static complexity. With out mentioning the whole derivation
process, it is kind of incomplete to just mention the formula so I am
trying to explain a small descriptive part of the whole process, not
dealing much with the mathematical part. For a detailed derivation,
please refer to the paper mentioned in references.
Static Complexity and its Measurement:
The static complexity as defined earlier is mostly concentrated on
the static structure of the whole system, that is the variety of
sub-systems, the strengths of interactions etc. There is a lot of chain
wise dependencies in this concept like the manufacturing system being
dependent on the part flow, in turn part flow being dependent on the
type of parts being produced and the type of material handling devices
etc. Before deriving any complexity measure, a predefined set of
constraints is specified so as to minimize an erroneous measurement. In
this case the following characteristics of static complexity were
defined by the authors:
Factors resulting in Static Complexity:
When there is more than one part type being produced in a single production run, it results in static complexity.
When
ever there is a necessity for each part type to do multiple operations,
that is a similar, tool being used for producing products from raw
materials.
Each operation, for a given part type, having multiple machine or processor options.
When there is no precedence constraints defined for set of operations
that is operations are done more randomly than in a predefined order.
Thus every static complexity measure should always be able to
capture effect of above mentioned factors and various combinations of
them. More over any complexity measure should also follows the
following conditions:
The value of static complexity should always increase with
increase in number of machine parts, part types, machines and the
number of operations required to process one part mix.
When the sequence flexibility for the parts in the production batch
increase, the corresponding static complexity should also increase.
When multiple parts are sharing same resources, static complexity should always increase.
The complexity should remain constant when the original part mix is split into groups (either two or more.)
With these factors and constraints defined, a derivation for the
measure of static complexity was done and evaluated. For a detailed
description of derivation and evaluation, please refer to “Complexity
in Manufacturing Systems, Part1: Analysis of Static Complexity” by
Abhijit V. Deshmukh, Joseph J. Talavage and Moshe M. Barash.
But in short the overall equation of static complexity can be written as
(Derived from [] , a brief overview of this derivation is presented in the next section, Dynamic Complexity)
Where M is the number of subsystems, and N is the number of mutually
exclusive states of the system with probabilities pij. As can be seen,
the overall equation is merely a joint entropy calculation of these two
combinations. It can be also mentioned in a much broader sense as
Which takes into consideration, Systems, subsystem, part types and processing times.
Thus with the derived model, author rather surprisingly summarizes that
with increase in static complexity, the overall system performance
increases.
Derivation and Evaluation of Dynamic Complexity:
In their paper “Measuring complexity as an aid to developing
operational strategy”, authors G. Frizelle and E. Woodcock define and
derive formulae for measuring both dynamic and static complexities.
Taking into consideration the complexity measures in algorithm design,
they derived the formulae for manufacturing process. As the whole
concept is based upon Information theory and Network theory, it would
be a good idea for the reader to go through those concepts before
following their derivation. In the following section, I will state the
formula and give a small illustration of its application in industrial
process, a brief overview of derivation is also considered but with the
assumption that the reader is an expert in the above mentioned fields,
no effort was made to define some of the properties used as they are
out of reach for the present topic.
If we can consider the manufacturing process as a system with some
inputs and an output, and if we can consider the number of items
present at any point of time as the states of the system, then the
whole system can be viewed in the form of a queue. If the process is
considered stationary for simplicity purposes, then the average of
inputs should be equal to the output. Let us imagine that the maximum
capacity of the system is and the current usage is (where <
), then because of the ergodic property ( definition of ergodic
process is repeated here for convenience: Random process in which the
time series produced are the same in statistical properties. That is a
set of random processes are considered as time shifts of an original
stationary process. ), the probability that the process is completely
occupied is / . Now if we can get all these equations into a GD
(Geometric Distribution), and evaluate the results for maximum entropy,
then we get the maximum entropy for the process when the probability of
i items being present at an instant of time is
(Equation 1)
Now anyone aware of network theory and probability theory, can
recognize the above equation as the formula for simple queue with
Poisson arrivals and with an arrival rate of and an exponentially
distributed service rate of .. With this probability the entropy of
the system could be derived to be
(Equation 2)
(The derivation of the above equation is a
simple substitution of the above mentioned probabilities into the
entropy equation defined earlier.)
The logarithms are taken for base two for all the generic purposes
(that is the states are considered to be either off or on at any point
of time and no transitions are allowed. This is similar to the most
information theory derivations where the bits are considered to be
either 0s or 1s.) the above two equations carry a lot of weight and
meaning with them and I will cover them later on, but first of all let
us try to complete the derivation process without breaking the flow.
Now if we can consider the above mentioned entropy as the upper limit,
we can split into two parts, one for the tolerated states and one for
non-tolerated states. Now if we can also split the programmable parts
from the non-programmable parts (considered to be Bernoulli type
processes), then we can derive the following equations,
Where is the overall entropy of the system is, is the entropy of
the tolerated states and is the entropy for non-tolerated states.
If we can consider P as the probability of the system under consideration, then
We can replace with the following equation
and Where
Pq are the probabilities of queues for varying length,
pm are the probabilities of having a queue of one or zero,
pb are the probabilities of Bernoulli states
Thus getting the final equation for entropy as
(equation 3). Refer paper [] for more detailed overview of derivation process.
The above formula represents the dynamic probability of the whole
system. Now the afore mentioned formula for static probability can be
derived from equation 3, by substituting P=0, pb =0, pq=0 and take a
limit of infinity on time. This gives the equation for static
complexity as
.
Affects of Complexity Measures on Production activities:
Now that we explained some measures for complexity, let us also try
to describe their affects on production environment and operational
strategies. Let us start with equation 1 and equation 2 and try to find
out what exactly they signify.
The equations are mentioned here for user’s convenience,
(Equation 1)
(Equation 2)
Though not really exactly a complexity measure, the above two equation
signify a lot to us. The very fact that equation 1, which is an exact
representation of a Poisson based queue, which is used a lot in network
theory for representing Markov Processes, means a lot. The whole
production system can be now seen as a Poisson queue or as a Markov
Process with finite arrival rates and service rates. Now considering
the upper limit of complexity, defined in equation 2, we can find out
that as approaches , that is as the request rate is coming closer to
service rate, the complexity of the overall process increases. This is
a very good explanation of higher complexities in busier environments.
Thus it forms a very good basis for knowing what service rate is
optimum for controlling complexity and thus finding a good operational
strategy.
Just considering the upper limits of entropy gave us so much
information about the complexity of the overall system, so we can now
imagine how much more information can be obtained from going into
intricacies of the above equation. A simple example would be to
consider both the static and dynamic complexities individually or as a
combination for evaluating the operational strategy. If we consider the
tolerated states and non tolerated states, it can be seen that by
increasing the control over the system (that is by increasing the value
of P which represents the probability of the overall system), the value
of entropy thus the value of complexity decrease. But this does not
impact the non-programmable states of the system; that is, instead of
trying to remove the complexity, we are just taking it to a state where
we are in control of the system. Indirectly speaking it is something
like having a complex system, but we exactly know what it is going to
do at what point of time.
To minimize the complexity, we can take a different approach where in
we are going to directly working on the non-tolerable states too. Both
programmable and non-programmable states can be controlled using proper
tools so that the overall system complexity is reduced.
The above discussion was only in the field of manufacturing, now if we
consider the software industry too, complexity is directly related to
the performance, stability, reliability, maintainability and other
abilities of the system. The higher the complexity, the greater is the
chance of finding bugs in both performance and functionality. The only
big problem with software industry is that there is no proper mechanism
for finding complexity of a code. The methods which I mentioned could
be used, but they are not really so through. If I was a software
manager, I wouldn’t really worry about the complexity measures given by
some of these tools, no one would.
Now that we have seen some major ways in which complexity could be used
in deciding operational strategy, let us also consider methods in which
complexity could be reduced in manufacturing process so as to obtain
better results.
Methods of controlling complexity:
In the above discussion, I mentioned some means by which complexity
could be controlled or minimized. Let me state some more means in a
more detailed tone. In sections covering introduction and definitions
of complexity, I mentioned again and again about the causes of
complexity and the means in which complexity sneaks into the system.
Even though the technology we use for manufacturing process is the
biggest cause, there are many minute things which if we control and do
in a proper fashion; a large part of complexity could be eliminated.
There is also some research done in this regard by many researchers to
find the means by which project complexity could be minimized thus
leading towards a faster performance and greater quality. The following
are some of the key points taken from these research papers:
Formalization: Though directly unrelated to the complexity of a
project, formalizing a project always helps in getting a better
product. The more formalized a product is, the less is the probability
of small mistakes.
Improved Communication: Communication between team members from
beginning to the end of the product is one of the most important
concepts of minimizing design and manufacturing complexities. By
improving communication and interaction, there is not only a chance of
improving the design on the first place (as more heads are involved)
but also the misconception and misrepresentations of the design process
are totally eliminated, thus minimizing or completely removing the
probability of complexity due to human understanding.
Leadership Style: there is always a requirement for a strong leader
to lead the group and communicate its developments to both the higher
management and also the customers. A strong leadership always changes
the course of product design and delivery. In their paper “Project
complexity and Efforts to Reduce product Development cycle time”,
authors Thomas B. Clift and Mark B. Vandenbosh, suggest two
propositions about strong leadership. (i) “The shorter the cycle time,
the greater the requirement for an authoritarian leadership style” and
(ii) “The more complex the project, the greater the requirement for a
participative leadership style”
Customer Involvement: one of the main causes of increase in
complexity is irregular communication with customer. After all
customers are the final users of the product and it is also their
responsibility to mention what exactly they expect from a product. If
it is a general product applicable to wide section of community, then
it is the responsibility of the design team to do research and find out
the customer requirements and covey them to the manufacturing team.
The above are some non-technical, management oriented means of reducing
complexity, are there any technical design oriented methods? There
definitely are, some of which are discussed in the earlier sections.
The process is simple, take a complexity measure applicable to your
industry and try to minimize it using various means. A more research
oriented approach is given in some of the literary papers attached in
the references section.
After considering the means of minimizing complexity, it would be a
great idea to consider a couple of case studies where complexity
measures were used to change design process. As explained earlier, I am
going to concentrate more on manufacturing fields rather than software
or other industries as that is where most of the research on complexity
and its applications are seen.
Case Studies:
Almost every single paper about complexity measures lists about three
case studies where in the complexity of a system was reduced by the
application of their measure and changing the operational strategy
accordingly. In the following few lines, I will try to enlist case
studies from varied areas so that a much broader outlook is obtained.
Case Study 1:
Let me first consider a very interesting case study described in
“Measuring complexity as an aid to developing operational strategy” by
G. Frizelle and E. Woodcock, a brief description of their measurement
process was given in “Dynamic complexity” section. They applied their
measure on a machine shop consisting of 35 processes, 59 machines and
an overall part number of 350 (kind of a small to medium scaled
industry, which is the usual case).
In their measurements of complexity, they found out that the overall
static complexity was around 96.4 epp, where epp is a unit they use for
measuring complexity. ‘epp’ stands for equivalent product process. The
dynamic complexity is around 160 epp, with programmable part
contributing 78.4epp. The interesting part to note is that dynamic
complexity is very high compared to static complexity, which suggests a
major flaw in the design and implementation process.
When they evaluated the complexities coming from various sources, they
found out that the programmable states like volatile mix, batching etc
contributed a lot to this spike in the complexity, thus creating a
bottleneck. There were also issues found with queue stability. Thus
fixing these, the dynamic complexity was minimized by a great deal and
the process was improved a lot.
There are two more very interesting trials mentioned in the same paper, which the user may find useful to go through.
Case Study 2:
Another very though provoking study of design is given in
“Harnessing Complexity in Design” by Timothy T. Maxwell and M. M.
Tanik. Though they don’t deal with complexity measures as such, they
use many means by which the design process could be modified so as to
produce a better design with lesser complexity. As I mentioned some of
these measures in the discussion earlier, I thought it would be more
interesting to illustrate their application in reality, thus the study
of this case.
In this paper, they applied their principles in designing a Fuel cell
powered sport utility vehicle (SUV), a project done in Texas Tech
University (TTU). In most of the case study, a detailed description of
design process like team effort, organizing and formalizing the team,
constant communication, understanding of basic objectives,
requirements, constraints, etc were discussed. After these basics were
covered and put in place, a detailed design perspective was presented,
with various systems, sub-systems, their hierarchical nature and
interactions. These interactions and hierarchies, if properly designed
and developed, would minimize the complexity by a lot. That is what was
exactly done thus harnessing the complexity. Though very simple and
fundamental, this discussion provides a deep insight into how
complexity could be harnessed without involvement of high level
mathematics and I strongly suggest the reader to go through the whole
discussion.
Conclusion:
In the above discussion, I presented what the exact definitions of
complexity and design are along with a detailed description of their
inner meanings applied to various industries. Along with that, there
were a host of complexity measures and evaluations presented applicable
to a wide variety of industrial applications. Using these schemes to
measure complexity and thus obtaining a means of modifying operational
strategy is a very useful but tricky process. The user should go
through multiple ways of measuring complexity and exactly evaluate the
process that best fits his / her industry. Along with measuring
complexity, it is also very useful to go through some organizational
changes which not only improve the design and development process, but
also boost the morale of manufactures and also customers thus leading
towards a more successful and profitable product.
Future Research:
As can be seen from the above discussion, complexity measures are a
very important tool in deciding the strategy of operation and evaluate
the fitness of a design / development process. But there are very few
fields in which a perfect working complexity measure is found. It would
be highly useful for industrialists to sponsor a wide variety of
research activities in various fields of manufacturing and designing to
find the inlaid complexities and measure them. In this section I will
try to list of few of those fields where in complexity measures could
be researched and formed.
Generalization: The research found till now, is done specific to a
particular industrial standard. It is always useful to have some
measure that can be freely applied to wide varieties of fields. Thus
generalizing the existing measures to multiple areas would be a great
thing to accomplish.
Complexity involved in Supply Chain: The measures till now are mostly
applied to various parts involved in the design and manufacturing
mechanism, but no one considers the parts that are obtained from third
party vendors as a different set of entities. A simple example would be
auto industry where one of the most important parts of the whole design
process is supply chain management. I believe that there should be
complexity measures for these processes too and they should be
integrated to complexity measure of the over all mechanism.
Complexity for Software: there is a ton of research going on in the
field of software engineering to define and evaluate the complexity of
programs. I think generalization is also strongly needed in this field.
A particular tool used for measuring complexity of a code written in
one language is not applicable to other language, or gives a complexity
erroneous result. This should be eliminated.
References:
[1] Axelrod, Robert and Michael Cohen, 1999, Harnessing Complexity, The Free Press, New York.
[2] Simon, A. H., 1999, The Sciences of the Artificial, Third Edition, The MIT Press, Cambridge, Massachusetts.
[3] Plesk, P. E., 1997, Creativity, Innovation, and Quality, ASQ Quality Press, Milwaukee, Wisconsin.
Simon, A. H., 2000.
[4] Warfield, J. N., 1994, A Science of Generic Design: Managing
Complexity Through Systems Design, Iowa State University Press, Ames,
Iowa.
[5] Timothy T. Maxwell, M. M. Tanik, “Harnessing Complexity in Design”. 2002 Society for Design and Process Science
[6] Jeff Tian, Marvin V. Zelkowitz, “Complexity Measure Evaluation and
Selection” IEEE Transactions on Softwar Engineering. 1995.
[7] Michael Goldwasser, Jean-Claude Latombe, Rajeev Motwani,
“Complexity Measures for Assembly Sequences”. IEEE International
conference on Robotics and Automation. 1996
[8] Thomas B. Clift, Mark B. Vandenbosh, “Project Complexity and Efforts to Reduce Product Development cycle Time”
[9] Morgan Swink, Dongsong Zeng, “NPD Complexity and Technology Novelty
as Antecedents of Design- manufacturing Integration: Effects of Product
Design quality”
[10] Mike Hobday, “ Product complexity, innovation and industrial organization”
[11] Abhijit V. Deshmukh, Joseph J Talavage, Moshe M. Barash,
“Complexity in manufacturing systems Part1: Analysis of Static
complexity”
[12] G. Frizelle, E.Woodcock, “Measuring complexity as an aid to developing operational Strategy”
|