Aðgerðagreining Assembly Line Balancing 10.04.2011 Efnisyrlit 1 Title 2 2 executive summary 2 2.1 2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Findings, conclusion and recommendations 3 4 Methods 4 4.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.2 Technology 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 references 7 6 Appendix 7 6.1 Mathematical models . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.2 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1 Aðgerðagreining(IÐN401G) Reikniverkefni 2 Assembly Line Balancing Axel Viðarsson Ágúst Þorri Tryggvason Davíð Freyr Hlynsson 10.04.2011 Aðgerðagreining Assembly Line Balancing 10.04.2011 1 Title 2 executive summary This paper investigates a Simple assembly line balancing problem (SALBP). The rst subcategories of SALBP is tybe 1 and its objective function is to minimize the number of workstations, but in this paper we will concentrate on type 2 and its objective function is to minimize the desired cycle time. 2.1 An Introduction assembly line is a manufacturing process in which two or more separate tasks are tted together in a sequential manner to form a new product, and nally resulting in the nished product. The tasks are generally interchangeable, so an optimal schedule for in which order they should be processed is needed to create the nished product as soon as possible, in Operations Management this is referred to as assembly line balancing problem (ALBP)[1]. Henry Ford and Ransom E. Olds are credited with the invention of the assembly line, although (as is the case with many inventions) the assembly line's development included many inventors. It combined the idea of interchangeable parts (another gradual technological development that is often mistakenly attributed to one individual or another). After 5 years of empirical development, Ford's rst moving assembly line (employing conveyor belts) began mass production on or around April 1, 1913. The concept was rst applied to subassemblies, and shortly after to the entire chassis. Although it is inaccurate to say that Ford personally invented the assembly line, his sponsorship of its development and use was central to its explosive success in the 20th century. In large factories, which are based on many dierent workstations with dierent production time, Such as the Ford factory is, there are often optimization problems to be resolved. One of the most common Things That factories want is to nish its product in Shorter amount of time or rear They range workstations. Those kind of problems are called assembly line Balancing Problem (ALBP). In an Assembly Line Balancing Problem (ALBP) a set of tasks have to be assigned to an ordered sequence of workstations in such a way that precedence constraints are maintained and a given eciency measure is optimized, such as, for example, the number of workstations or the workstation time (i.e. the cycle time). In the simplest case, referred to in the literature as SALBP: Simple Assembly Line Balancing Problem, a serial line processes a single model of one product. Basically, the problem is restricted by technological precedence relations and the cycle time constrains.[2] A classication proposed by Baybars (1986) divides all balancing problems into two classes: a rst class of problems known as simple, SALBP , whose members are clearly stated in the aforementioned work, and a second class of problems known as generals, GALBP, which is constituted of all other problems not belonging to the SALBP class. The SALBP class is constituted of assembly problems where only two kinds of task assignment constraints are taken into 2 Aðgerðagreining Assembly Line Balancing 10.04.2011 account in relation to the stations (1) Cumulative constraints associated to the available time of work in the stations. (2) Precedence constraints created by the requirement of some tasks to be performed after other tasks have been nished. Any other problem taking into account any additional considerations like incompatibilities between tasks, dierent line shapes, space constraints or parallel stations, between many others, are included in the GALBP class.[3] To nd an optimal solution for this kind of problems you will need to use either exact methods or heuristics methods. Generally heuristics are more ecient and in this letter we will use that method. 3 Findings, conclusion and recommendations We did take closer look on four data les and found their cycle time with two seprate programs, Matlab and Gusek. Whith their help we could nd LE(e.Line eciency), SI(e.Smoothness index) and LT(e.Total time on the assembly lines), those numbers are kept in the Appendix. It was not simulare to drive the data in Matlab or Gusek, Matlab did nd solution fast but the SI was greater, which tell us that Gusek showed lot better solution (more balanced). Gusek did end up whit eighter very good solution or infesible solution, it had to run for a couple of hours sometimes to get some values. When we had few tasks it did take few seconds for Gusek but only part of a second for Matlab. Both programs came up whith simular solution when the problems weren´t to hard. Heuristic method, Longest time task and GNS showed not much dierence but if they did then GNS had little better solution. 3 Aðgerðagreining Assembly Line Balancing 10.04.2011 350 300 Right value GUSEK MATLAB (long) MATLAB (followers) Cycle time 250 200 150 100 50 0 B(m=7) B(m=14) K(m=7) K(m=6) T(m=12) T(m=17) Mynd 1: Matlab plot from selected data les, b is for buxey, k is for kilbridge, t is for tonge, m for number of workstations. Matlab does nd an solution a lot quicker than Gusek but its value is often not good enough, while Gusek takes its time to nd solution that is good enough. When the problems become bigger and harder you will often have to give some time limit for how long the programs can operate. On the bar graph above are taken couple of our data set (see data). For example, rst you see Buxey whit 7 workstations optimized whit dierent programs compared to the real value. After closer look you can see that Gusek is approaching better than Matlab. That is maybe reverse to some bars here above but that is because of the time limit we gave the programs and how they operate. 4 Methods 4.1 Theory We want to design an assembly line consisting of consisting of n m work stations for a product tasks. Each workstation preforms a number of tasks, wj , on an item before passing it on to the next workstation in the assembly line. Each task has an indivisible operation time , ti , wich is assumed to be integral. Each product spends the same amount of time at each workstation, called C. The workload of workstation j is wj = ∑ ti , (1) i∈Wj and its idle time or slack time is sj = C − wj , (2) 4 cycle time , Aðgerðagreining Assembly Line Balancing 10.04.2011 and the sum of all idle times is called balance delay time, Due to technical restrictions there are S= precedence constraints ∑m j=1 sj . on the tasks, partially specify the sequence for the assembly line production e.g. one can't screw a bolt before drilling a hole. An immediate precedence matrix, P, is a binary matrix of dimension nxn, where P(i,j)=1 if task j is an immediate successor to task i, 0 otherwise. An immediate followers matrix ,F, is simply the transpose of P. An example of ALBP is given in Fig.1 with n = 9. The task index is given within the circle; its operation time is given on the upper right hand side of the circle; the arrows show the direction of the precedence constraints for the tasks. For example it shows that task 1 and 4 can start immediately; task 2 can start after task 1 has been completed; task 6 can start when both tasks 1 and 5 have been completed, etc. Its immediate precedence and followers matrices are P = 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 F = and Simple assembly line balancing problem(SALBP) 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 (1) describes a mass-production of a homogeneous product with a known production process; paced line, i.e.,it is assumed that the time to move items between stations is negligible; xed cycle time; deterministic operation times; only assignment restrictions are precedence constraints; serial line layout with m stations; all workstations are uniform, i.e., equally equipped regarding workers and machinery; and lastly line eciency is to be maximized,[8].SALBP has several subcategories. The rst is of type 1 (SALBP-1) and its objective function is to minimixe the number of workstations, m . This may have to do with the cycle time being related to the workers shifts duration. Other subcategory is of type 2(SALBP-2) and its objective function is to minimize the cycle time, C , in other words minimize the amount of work on the busiest workstation, i.e. the assembly line's bott1 leneck, thereby maximizing the production rate, C , og the assembly line. In a job shop scheduling context this is equivalent to minimizing the makespan on identical parallel machines. Another subcategory SALBP-E combines these two objective functions, i.e., minimize cycle time and number of stations in order to maximize the line's eciency. Lince balance refers to nding a feasible solution to ALBP in such a manner that each task is assigned to exactly one workstation and fullling its precedence constraints and each station's workload does not exceed the cycle time. A simple station- oriented algorithm is given in Fig.3. Of course there are many slightly dierent heuristic rules that can be applied, or assign the algorithm in a taskoriented manner, but as described in [8] station-oriented algorithms are more ecient than had it been task-oriented. There are several performance measures associated with ALBP [7,9,6], their 5 . Aðgerðagreining n m M P Assembly Line Balancing number of tasks on the assembly line number of workstations in the assembly line maximum number of workstations immediate precedence matrix of dimension P (i, j) = 1 F if task j if task j n × n, is an immediate successor of task immediate followers matrix of dimension F (i, j) = 1 C ti Wj wj sj S 10.04.2011 i, 0 otherwise. n × n, is an immediate follower of task i, 0 otherwise. cycle time of the assembly line i operation time of task j -th workstation ∑ j -th workstation, wj = i∈Wj ti the slacktime for the j -th workstation, sj = C − wj ∑m balance delay time, S = ∑ j=1 sj the set of tasks assigned to the the workload of the m j=1 LE line eciency, LE = SI smoothness index, LT total time on the line, wj C·m √ SI = ∑m j=1 (C − wj )2 LT = C · (m − 1) + wm Mynd 2: Notation used in this paper main measures being: Line eciency ,LE, that shows the utilization of the line as a ration between the total workload and by the cycle time multiplied by of number of utilized machines, ∑m LE = Smoothness index j=1 wj C ∗m .(4) ,SI, describes the relative smoothness for a given assembly, it is derived from the slack times, v u∑ um 2 SI = t sj .(5) j=1 the smaller the SI the smoother the line is, and SI=0 indicating a perfect balance. Finally the total time on the assembly line , LT , tells how long time it takes the product to be completed, LT = C ∗ (m − 1) + wm . 4.2 Technology Heuristic evaluation is a discount usability engineering method for quick, cheap, and easy evaluation of a user interface design. Heuristic evaluation is the most popular of the usability inspection methods. Heuristic evaluation is done as a systematic inspection of a user interface design for usability. 6 The goal of Aðgerðagreining Assembly Line Balancing 10.04.2011 1 for j := 1 to M do (assign tasks on workstation) 2 Identify available tasks, A, whose predecessors have been assigned a workstation ≤ j . 3 Determine from available tasks, At = {i | ∀i ∈ A : ti ≤ sj } 4 Choose a task i ∈ At by some heuristic. 5 if At = ∅ then break 6 if all tasks are assigned then return ALBP sequence using m := j workstations 9 od Mynd 3: Simple station-oriented algorithm for nding a solution to ALBP. heuristic evaluation is to nd the usability problems in the design so that they can be attended to as part of an iterative design process. Heuristic evaluation involves having a small set of evaluators examine the interface and judge its compliance with recognized usability principles (the "heuristics").[4] 5 references 1. Baybars, I.:A survey of exact algorithms for the simple assembly line balancing problem. Management Science(1986) 2.Betancourt, L.: ASALBP: the Alternative Subgraphs Assembly Line Balancing Problem. Formalization and Resolution Procedures(2007) 3.Bautista, J; Pereira, J.: A dynamic programming based heuristic for the assembly line balancing problem (2009) http://www.useit.com/papers/heuristic/ [4] 6 Appendix Reiknirit/stærðfræðilíkan fyrir glpk. 1 2 3 4 5 6 7 8 9 10 11 12 # #Reikniverkefni 2 # /*set af akvardanabreytum*/ set workstations; set tasks; /*pharameters*/ param P{i in tasks,w in tasks}; param t{i in tasks}; 7 Aðgerðagreining 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Assembly Line Balancing 10.04.2011 /*Akvordunarbreyta */ var x{i in tasks,j in workstations}, binary; var Ct ≥0, integer; /*Minimize cicle time*/ minimize z:Ct; /* Skorur */ s.t. pre{i in tasks,w in tasks : P[i,w] = 1}: sum{j in workstations} j*x[w,j] ≤ sum{j in workstations} j*x[i,j]; s.t. workst{i in tasks} : sum{j in workstations} x[i,j] =1; s.t. bla{j in workstations}: sum{i in tasks} t[i]*x[i,j]≤Ct; solve; display z; data; set tasks:= 1 2 3 4 5 6 7 8 9; set workstations:= 1 2 3 4 5 6; param t := 1 6 2 6 3 4 4 4 5 5 6 4 7 5 8 2 9 9; param 1 0 2 1 3 0 4 0 5 0 6 1 7 0 8 0 9 0 P : 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 4 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 5 6 7 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 8 9 := 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; end; 8 Aðgerðagreining Assembly Line Balancing 10.04.2011 We used GLPK to calculate the minimum cycle time for example 1. example included six workstations and 9 Tasks. The In the program reikn2.mod which can be seen in the appendix, we begin to dene workstations and tasks, then set the matrix P as parameter, it contains information for tasks. Decisions variables were only x [i, j] and Ct (cycle time). The X [i, j] is actually a variable that describes what tasks are carried out in worsktations.Then were the constraints set up as they were in the mathematical model. data le, containing the information that were given. We created The program sequence each task down to a workstation and nds the cycle time. For this sample the z (cycle time) = 9 6.1 Mathematical models According to the optimization objective considered, four versions of SALBP are distinguished (Scholl (1999)): SALBP-1: minimizes the number of workstations m given a cycle time ct. SALBP-2: aims at minimizing the cycle time ct given the number of workstations m. SALBP-E: seeks to maximize the line eciency E, where E=tsum/(mct) and tsum is the summation of all task processing times. SALBP-F: is a feasibility problem that tries to establish whether a feasible task assignment exists for a given cycle time ct and a number of workstations m. [2] The cycle time is the variable to be optimized, i.e., objective function(i) furthermore, as the number of workstations is a given parameter, since all workstations existence variables yj are equal to 1. This is for SALBP-2. minimizez = tc(i) m ∑ xi j = 1(ii) j=1 n ∑ m ∑ j=1 i = 1ti xi j ≤ ct∀j(iii) jxp j ≤ m ∑ jxi j, ∈ P Dt (iv) j=1 9 Aðgerðagreining 6.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 1 2 3 4 5 Assembly Line Balancing 10.04.2011 Applications function [C_longest,C_maxf] = salbp2(n,t,P,F,m,Cmin) mstar_v_longtt = []; mstar_v_maxf = []; seq_v_longtt = {}; seq_v_maxf = {}; C_v_longtt = []; C_vigur_maxf = []; tilv_longtt = 0; tilv_maxf = 0; tilv_alls = 0; for i = Cmin:sum(t); [seq1,mstar1] = salbp_Longesttt(n,t,P,i); [seq2,mstar2] = salbp_maxf(n,t,P,F,i); seq_v_longtt = {seq_v_longtt seq1}; seq_v_maxf = {seq_v_maxf seq2}; if (mstar1 == m) && (tilv_longtt == 0) C_longest = i; C_v_longtt = [C_v_longtt i]; tilv_longtt = 1; end if (mstar2 == m) && (tilv_maxf == 0) C_maxf = i; C_cigur_maxf = [C_vigur_maxf i]; tilv_maxf = 1; end if (tilv_maxf == 1) && (tilv_longtt == 1) && (tilv_alls == 0) break end if tilv_longtt == 0 C_v_longtt = [C_v_longtt i]; end if tilv_maxf == 0 mstar_v_longtt = [mstar_v_longtt mstar1]; end end function [seq,mstar] = salbp_Longesttt(n,t,P,C) M=n; % upper bound on number of workstations needed nr_unassigned=n; % Intially all tasks are unassigned 10 Aðgerðagreining 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 1 2 3 4 5 6 Assembly Line Balancing 10.04.2011 unassigned=1:n; s=C*ones(M,1); % Initially the slack on all workstations is C seq = []; for j=1:M % Assign tasks on workstation while 1 % Identify available tasks, A, whose predecessors have been assigned A=[]; for i=unassigned if P(i,unassigned)==zeros(1,nr_unassigned), A=[A i]; end end % Determine from available tasks, Afit = {i | for all i in A : t(i)≤s(j) Afit=[]; for i=A if t(i)≤s(j), Afit=[Afit i]; end end % if Afit is empty then break if isempty(Afit), break % from the while-loop and procede to next machine j+1 end % Choose a task i in Afit by some heuristic; at least two distinctly % different heuristics (hint: read the introduction) %i = heuristic(Afit,...); % YOUR TASK i = Longesttt(Afit, t) seq = [seq i j]; s(j)=s(j)-t(i); % update the slack unassigned=setdiff(unassigned,i); nr_unassigned=nr_unassigned-1; end % if all tasks are assigned then return ALBP sequence using m:= j % workstations if isempty(unassigned) mstar = j; break; % from the for-loop end end end function [seq,mstar] = salbp_maxf(n,t,P,F,C) M=n; % upper bound on number of workstations needed nr_unassigned=n; % Intially all tasks are unassigned unassigned=1:n; 11 Aðgerðagreining 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 1 2 3 4 5 6 7 8 Assembly Line Balancing 10.04.2011 s=C*ones(M,1); % Initially the slack on all workstations is C seq = []; for j=1:M % Assign tasks on workstation while 1 % Identify available tasks, A, whose predecessors have been assigned A=[]; for i=unassigned if P(i,unassigned)==zeros(1,nr_unassigned), A=[A i]; end end % Determine from available tasks, Afit = {i | for all i in A : t(i)≤s(j) Afit=[]; for i=A if t(i)≤s(j), Afit=[Afit i]; end end % if Afit is empty then break if isempty(Afit), break % from the while-loop and procede to next machine j+1 end % Choose a task i in Afit by some heuristic; at least two distinctly % different heuristics (hint: read the introduction) %i = heuristic(Afit,...); % YOUR TASK i = maxfollowers(Afit, nr_unassigned, F) seq = [seq i j]; s(j)=s(j)-t(i); % update the slack unassigned=setdiff(unassigned,i); nr_unassigned=nr_unassigned-1; end % if all tasks are assigned then return ALBP sequence using m:= j % workstations if isempty(unassigned) mstar = j; break; % from the for-loop end end end function i = maxf(Afit, nr_unassigned, F) fjoldi_e = []; h = 1; for k = Afit fjoldi_e(h) = length(find(F(k,1:nr_unassigned))); h = h+1; end 12 Aðgerðagreining 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 6 7 8 Assembly Line Balancing [margir,nr_margir] = max(fjoldi_e); if margir == 0 lokastakid = Afit(1); else lokastakid = Afit(nr_margir); end i = lokastakid; end function i = Longesttt(Afit,t) T = []; for k = Afit T = [T t(k)]; end Stort = find(max(T)); i = Afit(Stort); end 13 10.04.2011