System Simulation By 陳琨太 Email: [email protected] 分機: 4727 Office Hours: 四 1:00~5:00 Web page: http://www.iem.mit.edu.tw/~kuentai/ Textbook: W. David Kelton, Randall P. Sadowski , Deborah A. Sadowski, “Simulation With Arena”, Second Edition, McGRAW-HILL. Singapore 2002 參考教材: Harrell . Tumay 著; 簡聰海 鄒靖寧 編譯, “糸統模擬 Simulation made easy”,高立圖書 87 年 初版,ISBN:957-584-594-3 Grade: 作業及平時 40%,期末報告 25%,期末考 35% Introduction Computer Simulation: The techniques for using computers to imitate, or simulate, the operations of various kinds of real-world facilities or processes. Components: a) System: A collection of entities that act and interact together toward the accomplishment of some logical end. b) Model: The mathematical or logical description about how the system works. c) Simulation: We use a computer to evaluate a model numerically, and data are gathered in order to estimate the characteristics of the model. Applications: [For Example] Designing and analyzing manufacturing systems. Evaluating hardware and software requirements for a computer. Evaluating a new military weapons system or tactic. Determining ordering policies for an inventory system. Designing communications systems and message protocols for them. Designing and operating transportation systems such as freeways, airports, subways and ports. Evaluation designs for service organizations such as hospitals, post offices, or fast-food restaurants. Analyzing financial or economic systems. Objectives: Describing the behavior of the system Developing theories or hypotheses for the system Predicting future system behavior Designing new or improved systems Answering what-if questions 2 System: System Actual System A model of the system Mfg system Physical Bank Model Hospital Miniature models etc. Wind tunnels Flight simulator etc. Mathematical Model Simulation Numerical estimation Analytical Solutions Queueing networks Differential Eqs Markov Chains Theoretical solution (optimum) Model: Static vs. Dynamic Models Deterministic vs. Stochastic Models Continuous vs. Discrete Models Discrete Event Simulation: The modeling of a system as it evolves over time by a representation in which the state variables change instantaneously at separate points in time. Simulation Clock: time-advance mechanisms < next – event Fixed time increment System state: a set of state variables to describe the system at a particular time Event list: a list of future events Initialization Routine: a subprogram to initialize the system Timing Routine: Determine the next event from event list. Advance simulation clock. Event Routines: A set of subprograms that update the system state. Statistical Counters: A collection of variables used for storing statistical information about the system performance. Event generation routines: A set of subprograms to randomly generate future events from the prescribed probability distributions Report Generator 3 4 System Modeling 1. Define your objectives Evaluation, prediction, design, ? Improvement, determine operation bottleneck, optimization? Sensitivity analysis or comparing two system setups. 2. Determine Issues of Interest a) Hardware Design Issues Numbers and types of machines Number, type, and physical arrangement of MHS Location and size of inventory buffers and storages Effect of a new piece of equipment on an existing line b) Operational Issues Manpower Requirements Effect of different product mix Different scheduling policies Preventive maintenance and repairments 3. Required DATA (Information) Examples: Cycle Time Queue time Work-In-process (WIP) Utilization – machines, server, etc. ____ ____ ____ ____ minimize minimize minimize maximize 4. Collect Information Documentation Interviews Observation and Measurement Participation 5. Define the scope of the Simulation Model Complexity Realism “KISS” principle 5 6. Keep it small and simple Simplification Reduction Partitioning Omission Aggregration Substitution Impact of the simplification 7. Source of input data Observance and Measurement Historical data Summary statistics – survey or experience Guesses – experience, theoretical results, or assumption Similar systems 8. If no data is available New system or new design No way to gather the data Collect meaningful data set requires too much time, cost, effort Cures: 1. 2. 3. 4. Operator or designer’s estimates Vendor claim Theoretical consideration Assumptions 1. Mean Value only - exponeutial distribution High variability Memoryless property - Poisson distribution - Constant - Trangular Distribution - Uniform distribution 2. Range only (largest and smallest values) - Uniform distribution - Normal distribution - Triangular distribution 3. Range and Most likely value - Triangular - Gamma - Beta [0.1] - Weibull - Normal 6 Data available from a reliable source 1. Empirical distribution Use the observed data only to generate test input 2. Theoretical distribution Organize your data a. Histogram (frequency) b. Mean, median, most likely value c. Variance, largest and smallest number d. Classify your data e. Select theoretical distribution Continuous distribution Discrete distribution f. parameter estimation Goodness–of-fit test Kolmogorov-Smirnor Maximum-likelihood estimators Frequency comparisons Probability plot Modeling using SIMAN 1. Model – describe the system and its components 2. Experiment – how want to run the simulation (run length, initial condition, etc.) System Entities Attributes Processes System Computer Entity Programs Attributes CPU time I/Ф Hardware Memory Hard Drive capacity Speed Bank Customers Type (service) Account Amount Hospital Patients Ailment Process: The sequence of operations or activities through which the entities move. 7 Block Diagrams : a flow graph depicting the process through which the entities in the system move. 10 basic block types: OPERATION HOLD HOLD QUEUE BRANCH PICKQ TRANSFER SELECT MATCH STATION 8 Over 40 distinct process modeling functions Block function name Block operands – constants, variables, attributes, random variables, expression and conditions Block sequence number Block labels Block comments Set of changeable values, such as Block modifiers TNOW, Array can be used for grouping Entity flow between block variables into an array of vales Sample Problem Single workstation queueing problem One workstation Eight-hour shift during weekday and shut down over the weekend No arrivals for off-shift or weekend hours Study period – week Objectives (for example) Average weekly production rate Machine utilization Average time a workpiece spends in the system Maximum time that a workpiece spends waiting to begin being processed Average number of workpieces waiting to begin being processed Description of the processes 1. 2. 3. 4. 5. 6. A workpiece enters the system Wait in line for the machine to become idle Take possession of the machine Keep the machine for the time required to set up and machine the workpiece Release the machine for the next waiting entity, if any Increase the count of completed workpieces and depart the system 9 1. A workpiece enters the system (ARRIVAL) Block: CREATE, Batch Size, Offset Interval, Max Batches SYNTAX: CREATE, Batch size, offset: Interval, MaxBatches; Ex. 1 CREATE EXP (30) CREATE, 1, 0: EXP (30), Z ^ ^ Batch size Offset Interval Max batches Ex. 2 CREATE, NORM (10, 2) EXP (30), 100 CREATE, 1, NORM (10,2): EXP (30), 100 2. Wait in line for the machine to become idle. 3. Take possession of the machine (QUEUE & HOLD) BLOCK: QUEUE, QID, Capacity Balklabel SEIZE, Pr ResName, QTY SYNTAX: QUEUE, QueueID, Capacity, Balklabel: SEIZE, Pr : ResName, Qty: 10 Queue #1 EX 1. QUEUE, 1, QUEUE, 1 , -; capacity QUEUE, Buffer, Length QUEUE, Buffer, Length Queue Capacity is a variable called "Length" QueueName = "Buffer" QUEUE, NoSpace, QUEUE, NoSpace, Queue Name "NoSpace" , Quit; No Capacity Quit the system if someone is using the machine Ex 2. QUEUE, Buffer, 10 Retry SEIZE Machine, 1 Worker, 2 4. Keep the machine for required processing time (DELAY) BLOCK: SYNTAX: DELAY: DELAY Duration, Stor ID Duration, Stor ID: 11 Ex. DELAY variable variable DELAY: setup + Process delay setup time + process time Setup + Process D E L A Y :N O R M ( 1 DELAY: NORM (10, 4) 2 DELAY s e r v i c e t i m e i s a n o r m a lD i s t . m e a n = 1 0 V a r i a n c e = 4 NORM (10, 4), 2 D u r i n g t h e o p e r a t i o n t h e p a r ts t a y s i n F a c i l i t y # 2 5. Release the machine for next waiting workpiece, if any. (RELEASE) BLOCK: RELEASE ResName, Qty SYNTAX: RELEASE: ResName, Qty Ex. RELEASE Doctor, 1 RELEASE: Doctor, 1 : Nurse, 2 Nurse, 2 6. Increase the count of completed workpiece and depart the system (COUNT) COUNT Counter ID, Increment Syntax: Count: Counter ID, Increment 12 Ex. COUNT JobDone COUNT: JobDone, 1; Counter name increase by 1 Variable COUNT: 7, Batchsize; COUNT JobDone increase counter #7 by the BatchSize SETUP EXPERIMENT ELEMENTS: 1. PROJECT, Title, Analyst, Date Ex. PROJECT, Example 1, JOHN, 08/31/94 2. Limiting the Number of Entities DISCRETE, Entities Ex. DISCRETE, 100; 3. Describe the Queues: QUEUES: Number, Name, Ranking Name at least one Ex. FIFO LIFO LVFC (Attribute ID) HVF (Attribute ID) QUEUES: Buffer; 13 4. Describe the Resources: RESOURCES: Number, Name, Capacity; Ex. RESOURCES: Machine, 1; 5. Define the Counters COUNTERS: Number, Name, Limit, InitOpt, OutFile; Ex. COUTNTER: JobsDone: Rejects, 20, No, “c:\rejects.dat”; 6. Control replications: REPLICATE: NumReps, BeginTime, Length, InitSys, InitStats, WarmUp; Ex. REPLICATE: 10, 0, 480, yes, yes, no; The final Element File (*.exp): BEGIN; PROJECT, Example 1, John, 08/31/01; DISCRETE, 200; QUEUES: Buffer; RESOURCES: Manchine, 1; COUNTERS: JobDone; REPLICATRE: 10, 0, 480; END; 14 Another Example with Some Tweaks: Two Job Types and a second Workstation Reject 10 % Rework 10% Arrival s Machine Inspection Shipping 80% Queue #1 • Queue #2 Two Job Types (1 and 2) The inter-arrival time is exponentially distributed ~ expo(9) 30% of arrivals are Type 1 jobs – Priority =1 70% of arrivals are Type 2 jobs – Priority =2 • Two Workstations: (Machine and Inspection) Machine: Type 1 jobs have first priority Processing Times: (Normal Distribution) 15 Machine Center Processing Times follows Normal Distribution: Mean Type 1 Type 2 5.0 min 4.0 min Standard Deviation 2.0 min 1.0 min Inspection Center Processing time follows Triangular Distribution Serve based on Priority Minimum possible inspecting time: 5 (min) Most likely inspecting time: 8 (min) Maximum possible inspecting time: 10 min 80% are good products Shipping 10% are scraps Rejection 10% need rework machine with priority=3 Rework Parts Rework Parts have the lowest priority (3), same for both type 1 and type 2 Processing Times at Machine Center follow Normal dist. Mean Type 1 Type 2 3.0 min 2.0 min Standard Deviation 1.0 min 1.0 min Simulation Requirements Simulation time 480 min. Count job finished for each type Calculate average time a part spent in the system Describe the processes 1. Create an Arrival ~ expo(9). 2. Assign JobType=1 or 2 (30% / 70%); Assign Status =1 (ie. Regular part, not rework); Assign Priority = JobType. 3. Waiting according to Priority for the machine to be idle. 17 4. Take possession of the machine. 5. Keep the machine for the time required to set-up and machining the job. 6. Release the machine for the next waiting job, if any 7. Waiting according to Priority for the inspector to be idle. 8. Take possession of the inspector. 9. Keep the inspector for the time required to inspect the part. 10. Release the inspector for the next waiting job, if any. 11. Branch with the following outcomes: 80% good parts (go to step 12) 10% rejected parts (go to step 13) 10% rework parts (go to step 14) 12. Count completed jobs by JobType and depart from the system. 13. Count the rejected parts and depart from the system. 14. Assign Status = 2 (i.e. Rework Part) Assign Priority = 3 and Go To Step 3. Attributes Characteristic attributes, that are attached to and move with each Special-purpose attributes: Pre-defined meaning with SIMAN entity e.g. M: Entity Current Station NS: Sequence # IS: Step # General-purpose attributes: defined by users e.g. A(I) Syntax: ATTRIBUTES: AttNo., AttName(Index), InitValue; E.g. ATTRIBUTES: JobType, 1: Priority, 1: Status, 0; Variables The set of changeable values characterizing the state or the components of the system. Special-purpose variables: pre-defined by SIMAN (e.g. TNOW). General-purpose variables: defined by users (e.g. V(I)). Syntax : VARIABLES: VarNo, VarName(Index), InitValue; E.g. VARIABLES: 1, Reorder Point: 2-11,StockLevel(10); VARIABLES: Matrix(-3..6, 10); VARIABLES: Mean(2, 2), 5,4,3,2; VARIABLES: std(2, 2), 2, 1, 1, 1; 18 Assign Values to Variables or Attributes: ASSIGN Block: VarName =value Syntax: ASSIGN: Variable = Value: repeats; Ex. ASSIGN: JobType = Discrete(.3, 1, 1.0, 2): Status = 1: Priority = JobType; Sample from a User-Defined Probability Distribution Syntax: DISCRETE: (CumP1, Value1, CumP2, Value2, …); Ex. DISCRETE(0.3, 1, 1.0, 2); F(X) f(X) 1.0 0.7 0.3 0.3 1 2 X 1 2 19 X Branch the flow of Entities in the System In Step 11, 80% good parts (go to Shipping) 10% rejected parts (go to rejection) 10% rework parts (go to machine center) Block: BRANCH, MaxTake WITH, Prob. IF, Cond. ELSE E ALWAY S Syntax: BRANCH, MaxTake: WITH prob., Lable: IF, Cond., Label: ELSE, Label ALWAYS, label; Sample Branches In Our Example Problem BRANCH, 1 WITH, 0.8 Shipping WITH, 0.1 Reject WITH, 0.1 Machinin g 20 To Duplicate the entities BRANCH, 2 ALWAYS IF, TNOW < 10 Repeat Warm Up Count the Job Finished by JobType COUNTERS: 1, Type1 JobDone: 2, Type2 JobDone: 3, Rejects; (Step 12) Shipping COUNT: JobType: DISPOSE; (Step 13) Reject COUNT: Rejects: DISPOSE; 21 § Collecting Statistics on Queues, Resources, and Time in System Data Type: 1. Observational data – Flow Time, Cycle Time 2. Time – dependent data - # of parts waiting in queue # of busy machines 1. Recording time- Dependent Data : The DSTAT Element (in *.EXP file) SYNTAX: DSTATS: Number, Expression, Name, Outfile: Repeat; Commonly used Time – Dependent Data NQ(QueueID) - # of entities in QueueID. (SIMAN Reserved Variable) NR(ResourceID) - # of busy resource units (SIMAN Reserved Variable) MR(ResourceID) – Resource capacity (SIMAN Reserved Variable) NSTO(StorageID) - # of entities in StorageID (SIMAN Reserved Variable) 2. Recording Observational Data: The TALLY Block. (in *.MOD file) TALLY : TallyID, Value; Example: CREATE : EXPO(8) : MARK (TimeIn); DELAY : TRIA(5,8,10) TALLY : INTERVAL(TimeIn); CREATE : EXPO(8); ASSIGN : TimeIn = TNOW; DELAY : TRIA(5,8,10); TALLY : INTERVAL(TimeIn); Example: TALLY : GroupSize, BatchSize; TALLY : TBDeparts, BETWEEN; TALLY : PartType, INT(Time); * Define the Tally Records : The TALLIES Elements (In *.EXP file) TALLIES : TallyNo, TallyID, OutFile : Repeat; 22 Ex. TALLIES : 3. TimeInSystem : TBDeparts, “c:\TBDEPART.DAT” Recording Machine Utilizations: For each Machine (Resource): DSTATS: NR(ResourceID); In example 3.2, assume that we would like to record the utilization of the inspector for each of the two job types. We need to use different “storages” for different PartType when we process the parts. * DEFINE THE STORAGE RECORDS : The STORAGES Elements (In *.EXP file) STORAGES : StorNo, StorName; Repeats; * Putting parts in different storages according to their PartTypes (In *.MOD file) DELAY : Duration, StorID Example (Example 3.2) For the Inspector section: (In *.MOD file) QUEUE : SEIZE : DELAY : InspectQ; Inspector; TRIA(5,8,10), JobType; RELEASE : Branch, Inspector; 1: with, 0.8, Shipping : with, 0.1, Rejection : with, 0.1, Rework; . . . 23 (In *.EXP file) PROJECT, … ATTRIBUTES : … Define Storages ∶ STORAGES : 1, InspType1 : 2, InspType2 : ∶ DSTATS : Collect Statistic ∶ ∶ NSTO(InspType1), Inspect Type 1 Util.: NSTO(InspType2), Inspect Type 2 Util.; No. of entities in Storage § Multiple Identical Resources (Example 4) ABC restaurant opens 5:00pm 9:00pm Customers arrives in parties with following probabilities 2 (persons) 40% 3 (persons) 30% 4 (persons) 20% 5 (persons) 10% The interarrival time is exponential distribution with a mean of 1.6 minutes. Customers arrive after 9:00PM will be rejected, but the restaurant opens until all customers left the system. 50 Tables, each can seat two people. Waiting Line capacity 5 parties. Cooking Time TRIA(15,18,20) Eating Time NORMAL(20,2) Cashier Service Time NORMAL(2.0, 0.5) Want to know (for the four-hour operating period) 1. No. of Customers Served, 2. No. of busy tables, 3. No. of waiting customers, 4. No. of parties that leaves without eating, 5. Utilization of the cashier. 24 BLOCK DIAGRAM EXAMPLE 4 CREATE QUEUE, CashierQ EXPONETIAL(1.6), Door SEIZE Cashier BRANCH, 1 IF, TNOW<=240 ELSE OPEN CLOSE DELAY ASSIGN Closed NORMAL(1.5,.5) Door = 0 RELEASE Cashier Open ASSIGN PartySize = DISCRETE (.4, 2, .7, 3, .9, 4, 1, 5) COUNT Served Parties QUEUE, Table, 5 Leave SEIZE Table, (PartySize+1)/2 Leave COUNT Lost Parties DELAY TRANGULAR(14,19,24) +NORMAL(24,5) RELEASE Table, (PartySize+1)/2 25 EXAMPLE 3.5 Patients arrive at an emergency room EXPO (0.3 hr) Patients are assigned a rating : (CATEGORY) 1. OPEN WOUNDS 6% 2. CLOSED INGURIES 8% 3. MULTIPLE TRAUMA 18% 4. VISCERAL COMPLAINTS 32% 5. CHRONIC COMPLAINTS 36% CATEGORY 1 patient are most severe; Send to bed OTHERS: Fill out registration form and medical records, then send to bed ER has 3 beds, one registration nurse, and two doctors. Treatment Time TRIA(min, mode, max) min mode max 1 .8 1.2 1.6 2 .7 0.95 1.1 3 0.4 0.6 .75 4 0.2 0.45 .6 5 0.1 0.35 0.45 Simulate the system over a 30-day period Record statistics: 1. Utilization of the resources and 2. Time the patients spend in the system (by category) 26 EXAMPLE 3.5 BLOCK DIAGRAM CREATE TimeIn Tobed QUEUE, BedQ EXPONETIAL(.3) SEIZE Bed ASSIGN Category = DISCRETE (.06,1,.14,2,.32,3,.65,4, 1,5) SEIZE BRANCH, 1 If, Category.EQ.1 ToBed ELSE QUEUE, DoctorQ Doctor Records DELAY Records QUEUE, NurseQ TRIA(Minimum(Category) ,Mode(Category), Maximum(Category)) SEIZE Nurse RELEASE Doctor Bed DELAY UNIFORM(.1, .2) TALLY Category, INT(TimeIn) RELEASE Nurse COUNT Lost Parties 27 § MODEL VERIFICATION AND VALIDATION VERIFICATION: VALIDATION: Make the program right and run. Make the results meaningful VERIFICATION: Always be suspicious. Accept Outside Doubters Walkthrough your programs Test your programs 1. Increase arrival rate / reduce service rate 2. Reduce the buffer size 3. Modify the job mix 4. Increase the rate of occurrence of infrequent events 5. Reduce the arrival rate / increase service rate TRACE your program: (The TRACE Element) Syntax: TRACE, BegTime, EndTime, Condition, Expression, …; Ex. TRACE, , , , NQ(Buffer), NR(Machine); TRACE, 0, 10, NQ(Buffer)>5, NQ(Buffer); Interactive Debugger: The first element in the experiment file: BEGIN, Listing, Debugger; YES/NO YES/NO If the Debugger option is on, you will see the following prompt: 0,0 > which consists of current simulation time TNOW, followed by a symbol (>). Type in END or QUIT to terminate the debugger mode. DEBUGGER’S COMMANDS SYNTAX: 28 COMMAND [ 1 qualifier] [ keyword], …, [operand], … Ex. SET BREAK 12 SET BREAK Drill ----- label SHOW NQ(DrillQueue) + NQ(LatheQueue) SHOW DueDate, Priority SHOW NR(*) SET BREAK 1..10 GO and STEP (Two Buttons are in RUN Panel of ARENA) GO – Resume the simulation Ex. GO UNTIL 30 GO UNTIL TNOW+30 STEP – GO TO next block Ex. STEP 3 SET and CANCEL Commands Ex. SET BREAK 10, 12,..15 CANCEL BREAK 12..15 SET WATCH – Print out every time the variable changes value. Ex. SET WATCH NQ(DrillQueue) SET WATCH A(1) SET WATCH / NOSTOP NQ(Buffer) CANCEL WATCH * SET INTERCEPT - To set a interception on a specific entity Ex. SET INTERCEPT 7 CANCEL INTERCEPT 7 SET TRACE BLOCKS - To set trace points on specified blocks Ex. SET TRACE BLOCKS Inspector, Adjust CANCEL TRANCE BLOCK * SET TRACE CONDITION - Restrict the generation of the trace messages Ex. SET TRACE CONDITION NQ(Buffer) > 10 29 SET TRACE EXPRESSION – Display the expression in trace messages. Ex. SET TRACE EXPRESSION NQ(Drill) + NQ(Lathe) SHOW and VIEW Commands SHOW - Display the value of an expression or an attribute Ex. SHOW JOBTYPE SHOW NQ(Drill) + NQ(Lathe) SHOW NC(JobsDone) SHOW NQ(5..8) SHOW a(*) VIEW - Display system status Ex. VIEW SOURCE VIEW SOURCE 1..20 VIEW SUMMARY VIEW DSTATS VIEW TALLIES VIEW COUNTERS VIEW ENTITY VIEW QUEUE VIEW QUEUE VIEW TRACE BLOCKS VIEW CALENDAR VIEW BREAK NEXT command Ex. NEXT Rework SAVE and RESTORE commands SAVE - Save current system state to a snapshot file. RESTORE – Restore current system state from a snapshot file. 30 COMMON ERRORS Data Errors -- Arrival rates -- Service rates Initialization Errors -- Initialize System -- Initialize statistics -- Initialize individual variable or counter Errors in Units of Measurement -- Day, hour, minute -- Service and arrival rates Flow Control Errors -- BRANCH and NEXT MODIFIER -- SEQUENCES Blockages and Deadlocks -- SEIZE and Release Sequence Arithmetic Errors -- Overwriting Variables or attributes Data Recording Errors Modeling Errors – See Also VALIDATING THE MODEL 31 VALIDATING THE MODEL Does the model adequately represent the real system? (Conceptual valid) Are the model generated behavioral data characteristic of real systems behavioral data? (Operational valid) Does the end user of the simulation model have confidence in the model results? (Believability) DEFINE Validity RATIONALISM – Something obviously valid EMPIRICISM – empirically tested and validated POSITIVE ECONOMICS – It works Reasonable Behavior Sensitivity or continuity Consistency – change random number seed and Degeneracy – model deterioration Absurd condition – use animation TESTING MODEL STRUCTURE and Data Face validity – interview, ask around Parameters and Relationships – input distributions Structural and Boundary Condition – Level of detail Sensitivity Analysis – Robustness TESTING MODEL BEHAVIOR Behavior Comparison Chi – Square test Kolmogorov – Sminnov test Regression Analysis Spectral Analysis Theil’s Inequality test Turing test Hotelling’s Two Sample T2 test Symptom Generation Re-create the difficulties in real system Reproduce the results for historical data Behavior Anomaly Behavior Prediction 32 33 SELECTING INPUT PROBABILITY DISTRIBUTION Collecting Data on Input random variable Type of System Manufacturing Computer Communication Defense - related Service Source of Randomness Processing Time, machine operating time before breakdown, machine repair times, transportation time, ect. Inter-arrival time of jobs, job types, processing requirements for jobs Inter-arrival times of message, message types, message length Arrival times and payloads of missiles or airplanes, outcome of an engagement, miss distance for munition. Inter-arrival time of customers, service types, service times, vacation or break period Determining the characteristics of the data 1. Data values themselves are used in simulation 2. Empirical distribution function 3. Data fit or can be approximated by a theoretical distribution form. Distribution Types (Hypothesizing families of distribution) Parameters Goodness – of – fit. 34
© Copyright 2026 Paperzz