AN ABSTRACT OF THE THESIS OF Einar Thor Bjarnason for the degree of Master of Science in Industrial and Manufacturing Engineering presented on June 26, 1992. Title : A Decision Support System for Integrating Fishing and Fish Processing Signature redacted for privacy. Abstract approved: Sabah Randhawa Production planning in fish processing is heavily dependent on the raw material Because of the uncertainties associated with the quantity of catch and its supply. composition, planning for production is a difficult task. Until recently the fish processing plants in Iceland also had to accept the entire loads of fishing fleet vessels whenever the vessels had opportunity to land their catch. This uncertainty and randomness in the raw material supply requires frequent decisions on production plans for product mix, assignment of labour to machines and facilities, and the raw material inventory to be carried from one period to the next. This research develops a decision support system (dss) for integrating fishing and fish processing. The two primary components of dss are a simulation model and a linear programming model. The simulation model analyzes the trawler operations, including generating the catch, controlling the length of a fishing trip, and the order in which trawlers land their catch so as to provide a steady raw material supply. The linear programming model uses the output from the simulation model to determine labour requirements, work-in-process inventory levels and amount of products produced so as to optimize production costs. The research shows that heuristic and deterministic models can be integrated to form a decision support system that can aid in effective decision making. A Decision Support System for Integrating Fishing and Fish Processing by Einar Thor Bjarnason A THESIS submitted to Oregon State University in partial fulfillment of the requirements for the degree of Master of Science Completed June 26, 1992 Commencement June 1993 APPROVED: Signature redacted for privacy. Professor of Industrial and Manufacturing Engineering in charge of Major Signature redacted for privacy. Head of department of Industrial and Manufacturing Engineering Signature redacted for privacy. 6 Dean of Graduate ool KS Date Thesis is presented Typed by Einar Thor Bjamason for June 26. 1992 Einar Thor Bjamason ACKNOWLEDGMENT I would like to express my appreciation to my advisor, Sabah Randhawa, who has been a continuous source of support and encouragement during my study at the Oregon State University, especially during the work of this research. I would also like to thank Pall Jensson and Ingolfur Arnarson for their help, ideas and enriching discussion during the pace of the research. I thank Eldon Olsen for helpful comments on the thesis, as well as my friends, and fellow graduate students for their support and encouragement. Finally and but not least, my wife Munn Lira receives my sincere thanks for motivation and encouragement which helped bringing this milestone to reality. Also to my son Tryggvi Por for being there. TABLE OF CONTENTS Chapter 1 INTRODUCTION 1 1.1 Introduction 1 1.2 Research objectives 3 1.3 Organization of thesis 4 Chapter 2 2.1 BACKGROUND The fishing industry in Iceland 5 5 2.1.1 History 5 2.1.2 7 2.1.3 Quota regulations Fishing grounds 2.1.4 Fishing operation 8 Fleet operation 8 Plant operation 11 2.2 Literature review 7 12 2.2.1 General 12 2.2.2 12 2.2.3 Trawler operation Plant operation 2.2.4 Integrated fishing and fish processing 15 Chapter 3 METHODOLOGY 14 16 3.1 Approach 16 3.2 Simulation model Model description 17 3.2.1 17 System initialization 18 Catch Generator 18 Catch Generator 18 Catch combination 22 Trawler operation LandPermit Go_Land 23 Time value Quality Plant operation 24 3.3.1 3.3.2 3.4 Chapter 4 4.1 4.1.1 4.1.2 4.2 4.2.1 4.2.2 4.3 23 26 27 Inventory control 27 Production rate 28 Plant time value Report generation 3.3 22 Linear programming model for product mix General Mathematical formulation 28 29 30 30 30 Indices 30 Decision variables 31 Coefficients 31 The model 32 Implementation RESULTS 35 36 Model validation Data input for simulation model Data input for linear programming model 36 Results 40 40 Initial decision rule (Rule A) Modification of decision rule Comparison of decision rules 36 37 43 45 4.3.1 Raw material 45 4.3.2 Product mix 50 4.3.3 Profit 52 4.3.4 Inventory 53 4.4 Evaluation of results 55 Chapter 5 CONCLUSIONS 58 REFERENCES 61 APPENDIX A 63 Appendix A-1: Flowcharts 63 Appendix A-2: Program listing 65 Appendix A-3: Example output reports 92 APPENDIX B Appendix B-1: The MPL program for one run of Rule C APPENDIX C Appendix C-1: System output reports 96 96 98 98 LIST OF FIGURES Figure Page 3.1 Schematic overview of approach 17 3.2 Flow of simulation model and its primary components 19 3.3 Seasonal fluctuations in catch rate 21 3.4 Relative quality of fresh fish as function of time 27 4.1 Comparison of expected catch rate and workforce level 38 4.2a Landed raw material in spring by fish species 46 4.2h Landed raw material in summer by fish species 46 4.3a Average weekly landing and inventory in spring for Rule A 48 4.3b Average weekly landing and inventory in spring for Rule B 48 4.3c Average weekly landing and inventory in spring for Rule C 48 4.4a Average weekly landing and inventory in summer for Rule A 49 4.4b Average weekly landing and inventory in summer for Rule B 49 4.4c Average weekly landing and inventory in summer for Rule C 49 4.5a Product mix in spring for Rule A 50 4.5b Product mix in spring for Rule B 50 4.5c Product mix in spring for Rule C 50 4.6a Product mix in summer for Rule A 51 4.6b Product mix in summer for Rule B 51 4.6c Product mix in summer for Rule C 51 4.7 Comparison of different profit measures during spring for Rules A, B, and C. 4.8 52 Comparison of different profit measures during summer for Rules A, B, and C. 53 4.9 Absolute deviation of inventory during spring for Rules A, B, and C 4.10 54 Absolute deviation of inventory during summer for Rules A, B, and C 55 LIST OF TABLES Page Table 4.1 Capacity and quota of trawlers 4.2 Cost of raw material, sales price of product, raw material, 36 and labour requirements 37 4.3 Work pattern during the week and hourly wages 39 4.4 Inventory holding cost of raw material during weekdays and weekends 39 4.5 Example of the summarized LP model output (Rule C) 41 4.6 Results from Rule A showing raw material, products, labour and revenues 4.7 42 Deviation in inventory between simualtion model and LP model for Rule A 43 4.8 Definition of decision rules A, B, and C 44 4.9 Summarized results showing raw material, products, labour hours, and revenues for Rules A, B, and C 4.10 44 Deviation in inventory between simulation model and LP model for Rules A, B, and C 45 LIST OF APPENDICES TABLES Table Page C.1 Summarized LP output for Rule A in spring, iteration 1 C.2 Summarized LP output for Rule A in summer, iteration 1 102 C.3 Summarized LP output for Rule C in spring, iteration 2 107 C.4 Summarized LP output for Rule C in summer, iteration 2 111 98 A Decision Support System for Integrating Fishing and Fish Processing Chapter 1 INTRODUCTION 1.1 Introduction Most of the cities and towns in Iceland lie at the coast all around the island. It is therefore no wonder that the prime industry in Iceland is fisheries, i.e. fishing and fish processing. This industry provides more than 70% of the national income (export value). The tradition of going out on sea is strong and through the ages the seamen have brought all the fish they were lucky enough to catch, both because of weather and catch probability. The processing plants had therefore to serve the vessels by accepting their loads whenever the vessels had opportunity to land it. Production planning was difficult and new plans had to be made every morning when decisions had to be taken on product mix, assignment of labour to machines and facilities, labour hours and if and then how much of the raw material should be stored for the next working day. Now that the vessels have become bigger and more efficient in catching, and telecommunication between vessels and plants have improved, their owners and the processing plants see the economical importance of coordinated scheduling of vessels landing and plant operations. Plant operations consist mainly of processing different fish species into various products. The most common process is filleting, i.e. the fish is filleted, then trimmed according to buyers' requirements, packed, and then quick frozen individually. A fishing trip of a trawler takes typically 5 to 14 days, depending upon catch rate, weather forecast and fish species caught. The duration of the trip also depends upon 2 whether the trawler is sailing to an international auction market. There is though a maximum number of days the trawler stays on sea due to the aging of the raw material which is stored in boxes covered with ice flakes. After the fish has been stored in ice for a certain time the quality of the raw material decreases and the processing yield in the plant goes down and less valuable products are produced. The duration of a fishing trip involves the sailing to the fishing grounds, sailing between fishing grounds if the captain expects better catch elsewhere, and then the sailing to the home base. There are several factors that make the coordinated scheduling of the fishing operation and the plant operation difficult. Some of these are: The quantity and composition of the raw material because of the uncertain and unpredictable catch rate. Weather can be so bad that catch might be difficult or even impossible. This especially applies as the trawler approaches its due date on sea. Workforce considerations and compensation both for the workforce in the processing plants and the seamen on the trawlers. Allocation of resources, both workforce and raw material. Special product orders from customers that have to be satisfied. If the trawler has the raw material onboard that is needed for the special order or is catching it, the plant may have to call the trawler in earlier than originally scheduled. Limitations on working days, such as weekends and holidays, need to be considered since the plants do not operate during this time. Thus, raw material on-hand will have lower quality when the next processing opportunity comes. Engine, machine or equipment breakdown on the trawler or in a processing plant. 3 1.2 Research objectives The only study carried out so far uses a simple linear programming (LP) model to coordinate the fishing operation and the production planning at the processing plants (Jensson, 1990). This model has certain limitation: -it assumes the expected catch to be a fixed value; also are revenues dependent on the amount of raw material and not on the product produced. -it does not consider the cost of lost opportunity if a trawler is called to land earlier; the fact that the value and quality of the raw material decreases as time passes. The objective of this research project is to develop a decision support system to help coordinate the operation of fishing and the processing so the trawlers of the company can be scheduled accordingly. This problem is approached by building on previous studies and by incorporating some of the shortcomings of the models. These are the two basic components of the model developed in this research: A "catch generator" that estimates the expected catch of a trawler by including some of the uncertainty associated with catching the fish. A production mix model that uses the output from the catch generator to determine labour requirements, work-in-process inventory levels and amount of products produced so as to optimize production costs. The catch generator is a simulation model whereas the optimization module uses linear programming. The results from these models are used to develop and refine heuristics for scheduling of trawlers. 4 1.3 Organization of thesis The organization of this thesis is as follows: Chapter 2 provides an introduction to the fishing and fish processing problem, and surveys the published literature in this area. Chapter 3 describes the decision support system developed in this research. Chapter 4 provides the implementation details, and presents an application of the methodology to operation of a major fish processing company in Iceland. Chapter 5 summarizes this research work. 5 Chapter 2 BACKGROUND 2.1 The fishing industry in Iceland 2.1.1 History Iceland was first settled by Irish paps in the 8th century. A hundred years later the Vikings settled there with their horses, cattle and sheep. The island soon became inhabited, mainly at the coast and in adjacent valleys. The settlers soon found out about the fishing grounds just outside the coast and gradually seafood became an important food source along with agricultural products. The vast majority of the inhabitants who were farmers, flocked to the coast for a couple of months when good weather and good catch could be expected. Soon this became seasonal and since some places suited better than others with some kind of natural harbour, villages and towns slowly developed. These early settlers fought the rough sea and all kind of weather on small open boats just to be able to feed their families. These dangerous fishing trips demanded great leadership among the seamen. The crew looked to a seaman that was clever and wise enough to find the best fishing ground, who could find the best and safest way to land the boat and also who could be trusted and obeyed when necessary. As time passed, the role of the captain became more structured and successful captains were also given respect and authority ashore. At the turn of this century the first fish processing plants were founded in Iceland. The processing in these facilities was based on the fish brought ashore by fishing boats. However, operation of fishing boats was associated with catch uncertainty due to weather and captains' decisions on when to bring boats ashore. As fishing equipment and 6 technology improved and the plants became modernized, weather became less of a factor, and it became harder for plant operation to accept this unstable and unpredictable supply of raw material that was mostly caused by the strong minded captains that landed the catch when it fitted them. Not only did this varying raw material supply affect the production rate but it also resulted in substantial variations in workforce level since fish processing is very labour intensive. This resulted in unstable employment levels and for small communities, fluctuations like this had major economic consequences. Generally the plants were not able to do anything about this pattern until quota regulations were implemented for the fishing fleets. Although the processing plants generally owned the fishing vessel, only a few plants were able to negotiate with the captains on fish supplies, and that only on a short-term basis. The quota regulation set a one time total quota for fishing vessel. The Icelandic Government and the Marine Research Institute only governed the total catch which affected each individual vessel. The regulation was first introduced in 1984 but did not have considerable impact until 1987 when the total quota decreased as a result of marine research. In 1989 the quota regulation was enforced with full power when among other things, restrictive regulations on transferable quotas were implied. These actions as well as reduced catch, forced the plants to schedule their resources not only to control their production and to optimize their profit, but also to survive increasing competition and economic recession following the quota decrease. The result was increased cooperation between the fishing operations and fish processing at onshore plants. Today most of the trawlers in Iceland are still owned by processing plants or the trawler owners own a processing plant. The number of individual trawler owners has been increasing, though they are then contracted to some processing plant or sell on domestic or international fresh fish auction markets. 7 2.1.2 Quota regulations Because of the importance of fisheries for Iceland, the protection of this natural resource has been a great issue. In order to gain more control over this valuable resource and because of diminishing catch, Iceland became the first nation in the world to declare a 200 mile jurisdiction around the island in 1976. Although foreign fishing vessels were not allowed to catch within this jurisdiction, the yearly catch kept diminishing. In the early 1980's, the Icelandic Government introduced quota regulation on certain fish species. The quota was controlled by the total yearly catch where each fishing vessel had its share based on its catch history over the past couple of years. Through the decade the quota regulation has been developing. Today, each fishing vessel has its individual quota which is transferable between vessels to some extent. Therefore, the total quota a fish processing plant has is contributed by the fishing vessel it owns or controls. 2.1.3 Fishing grounds Fishing is a very stochastic process. It is impossible for the captain to tell at the beginning of a fishing trip the amount he will catch during the fishing trip or the composition of the catch. The captains experience seasonal difference in catch rates, difference between fishing grounds and also there is high variation in catch rates between years. Some of these variations can be explained by different conditions in the ocean, for example, water temperature and food conditions for the fish, but other factors may remain unexplained. Not only are the fishing fleets affected by variation in fishing but the fish processing plants also have to schedule their production. The fish itself undergoes seasonal biological changes that affect the processing yield and the type of products that can be produced. 8 2.1.4 Fishing operation A typical company in Iceland involved in the fishing industry generally controls several operations. First and foremost they operate a fish processing plant where the fish is processed. Typically in a processing plant, there are several different processing centers, as for example, conventional processing that consists of filleting and freezing, sailfish processing, dried fish processing and fishmeal plant. This is where different raw material is processed. Most plants also operate their own boats and trawlers. If this is not the case, the plants try to contract private owned boats or trawlers to supply them with raw material or they buy from auction markets. The average company in Iceland operates several boats and trawlers to meet their raw material requirements. Because of the quota assigned to each fishing vessel, a company has limited raw material resources, but in some cases a company can increase their raw material supply through purchase at auction markets. Fleet operation A fishing trip of a trawler takes 5 to 14 days, depending upon catch rate, weather forecast and fish species caught. The duration of the trip also depends upon whether the trawler is sailing to an international auction market after its trip or not. However, there is an upper limit on the number of days a trawler can stay on sea due to the aging of the raw material. After the fish has been stored in ice for a certain time the quality of the raw material decreases and the processing yield in the plant goes down. Also the plant can expect lower value for the product processed from lower quality raw material. The duration of a trawler trip involves sailing from the home base to the fishing grounds, sailing between fishing grounds if the captain expects better catch elsewhere, and then the sailing back to the home base. 9 The fleet manager is responsible for the coordination of the fishing fleet and the plant operations. At the beginning of each season, the fleet manager typically allocates the quota available to the company to each of the trawlers and schedules their fishing trips, sailing to international auction market, and maintenance and other activities that affect the operation of the trawler. The schedule is further disaggregated by estimating the catch in each trip based on historical data (most often last year's) and the manager's experience. The main task in scheduling, and perhaps the most difficult one, is daily operation and coordination. Some of the most critical factors that affect the schedule and the fleet manager's decisions are: The quantity and composition of the raw material. Here the expected catch rate is the most uncertain and unpredictable factor. During a trip the catch rate is not constant. It can vary from 0 MT (metric tons) to 60 MT during a 24-hour period. The captain is able to predict the catch in the next haul with some degree of certainty based on previous hauls, fish finder equipment and current catch figures from surrounding trawlers. If there is a high possibility that the next hauls will be large, it is tempting to let the trawler stay for another 12 hours or a day. In the winter time the weather can effect the decision since there is no need for the trawler to stay out on sea if the forecast is so bad that catching might be difficult or even impossible. This especially applies to trawlers as they approach their due date on the sea. The seamen get their share of the catch revenues as wages. Calling the trawler ashore sooner or later than scheduled can cause demoralization of the crew if the reasons are not well justified. Keeping a trawler longer on the sea will eventually disappoint some crew members as they may be physically tired and their plans with their families may be disrupted. If the trip is shortened, crew members may also get frustrated, especially if the catch has been low. 10 A balance between trawlers has to be kept both in terms of quota as well as trip length. For example, having one trawler to shorten its trips more often than the others, or one trawler having more potential to get higher revenues because of more valuable quota or more frequent sailing to auction markets need to be avoided. Sailing to an international auction market with catch has to be scheduled five to seven months ahead of time because permission from the appropriate authorities has to be obtained for the trip. Special arrangements like fishing for longer duration and trying to catch fish species that may give high revenues on market are made. A decision on allocating catch between processing plant and auction markets has to be made. Sometimes it may be preferable to sell excess raw material rather than risking quality problems. Weekends and holidays need to be considered since the plants do not operate during these days, and raw material on-hand during this time results in lower quality product. Therefore an attempt is made to minimize raw material on Friday evenings. Smooth or steady fish supply during the week therefore favours the plant. This also implies that there is no sense to call trawlers ashore during or just before the weekend. The plant may get an order from a customer for a special product. If the trawler has the raw material onboard that is needed for the product or is catching it, the plant might want to call the trawler in sooner than scheduled. Engine, machine, or equipment breakdowns on the trawler or in a processing plant may affect fishing and production schedules. Because of the complexity and stochastic nature of these factors, long term plans have to be often revised. In fact, even the weekly plan may have to be revised several 11 times, as events occur during the week. An ideal schedule should be based on the following two factors: A trawler comes in for landing, either because full load has been caught or the freshness/quality of the fish caught is endangered. The processing plant gets the preferred fish species at the right time. Too late a supply results in idleness of the plant while too early landings can mean reduced quality of final products or less revenues because a "faster" product mix has to be selected. Plant operation The processing plant typically is an assembly line operation with conveyor belts carrying the fish between processing stages. Incoming raw material is kept in cold storage. Before being stored, the raw material is inspected and classified by species, size and age (time since caught). Processing involves heading, filleting, trimming and packaging. Finally the packed product is frozen in quick-freezers and moved into freezer storage. The production manager typically makes decisions on how to utilize the incoming raw material and to schedule the production. Decisions include: quantity to produce, overtime to work each day and the quantity of raw material to store for the following days. These decisions may be complicated due to the varying number of workers available, feedback from the market in form of price changes, and of production restrictions on certain products. The biggest challenge is the incoming raw material, i.e., quantity, species and quality. In all cases the production manager tries to maximize the production profitability, looking for the most valuable products that can be produced within the constraints set by machines, labour and quantity of raw material. 12 Literature review 2.2.1 General The fishing industry is often divided into three components: fish stocks and harvesting, fish processing, and fish marketing. The first component typically deals with population models and harvesting policies but also covers fishing fleet operation including vessel mix and vessel scheduling. Fish processing covers range of operations that converts fish as raw material into product bought by wholesalers or consumers. Marketing deals with the many diverse markets and the different products that are available in fisheries. Since the focus of this research is single vessel operations and fish processing, the background discussion concentrates on these areas. 2.2.2 Trawler operation There is a large amount of literature available in this area, particular for fish stocks and harvesting; much less is available on vessel operations and fish processing. Sigvaldason et al. (1969) describe a simulation model of a wet (fresh) fish trawler, with the main purpose of studying the supply of raw material to freezing plants in Iceland, and comparing vessels of different sizes. Digernes (1982) attempted to evaluate fishing vessel design and its effect on operation and efficiency. The author introduced the concept of "time value" when captains are taking decisions about cruising speed and choosing fishing grounds and the effect of these decisions on fuel consumption and performance of the vessel. Arnarson (1984) studied the feasibility of operating a trawler versus operating a longliner. Arnarson (1984) carried Digernes's (1982) concept of time value further by adding to it the effect of different designs of the trawler body and propellers. The study used catch figures from several years for each vessel type and for trawlers; both daily and 13 hourly catch rates as well as the seasonal fluctuation in catch rate were analyzed. Arnarson's (1986) modeling of a decision support system for trawler skippers included the time value concept. Gunn et al. (1991) studied tactical planning for a Canadian company with integrated fishing and fish processing. The characteristic of the model included a fleet of trawlers, number of processing plants, quasi-property rights of the company to fish in the sea and market requirements. The objective was to coordinate harvesting and marketing strategies that will allow the company to maximize potential revenues. A linear programming (LP) model was formulated to accomplish this objective. The trawler operations were based on historical monthly catch figures for known fishing grounds. Given the size and characteristic parameters of the trawler fleet, the trawlers were assigned to fishing grounds during specified time periods to land their catch at certain processing plant. The LP output gave the products and their respective volumes that should be marketed, and the quantity of fish caught in each period to satisfy market requirements. Andrason (1990) and Teitsson (1990) developed models for production management and processing onboard factory trawlers in Iceland. Arnarson and Jensson (1991) used these models as prototypes to develop a simulation model that analyzed the operation of a factory trawler. The simulation model had a LP model embedded in it to make decisions on product mix for each haul's catch. The objective was to test the model as a decision support system for the captain of the trawler that makes decisions on the product mix, whether to move to another fishing ground or to go ashore and land the catch, and analyze the impact of different fisheries management schemes on individual firms. The simulation model used the log-normal distribution to generate catch. The log-normal distribution and its parameters used in the model were based on results by Arnarson (1984) and Teitsson (1990). Arnarson and Jensson (1991) expanded the definition of the time value as developed earlier by Digernes (1982), including the effect of remaining quota and 14 the remaining fishing season. When a vessel has much quota left but a short time to catch it, the captain is under pressure to catch as much as possible per time unit so as to fully utilize the vessel's quota. This affects decisions on cruising speeds (higher fuel consumption and cost)and the time on sea, particularly in bad weather. On the other hand, when the remaining quota is small but there is a lot of time at hand, the time value is low and the captain is not under any pressure to make critical decisions in short time periods. 2.2.3 Plant operation Generally plant processing has received more attention than single trawler operation. Applications of mathematical models that optimize plant operation in different industries have been extensively reported in literature. Some of these models can be applied in the fishing industry with small modifications. Models specific to fishing industry include: Mikalsen and Vassdal (1979) developed a multiperiod LP model to solve an aggregate production planning problem for a Norwegian fishing company. The model specifically focused on planning the operation of the company with regard to stable workforce level, and with regard to the use of frozen raw material to smooth the raw material supply during the different periods. Jensson (1988) used a product mix LP to plan the daily production over a five-day period. The model is developed as an aid to the production manager who has to make decisions concerning product mix, assignment of labour to machines and facilities, overtime, and raw material inventory. 15 2.2.4 Integrated fishing and fish processing Only in recent years has there been an interest in integrating the optimization and planning of fishing and fish processing. As mentioned above, Gunn et al (1991) studied integration of fishing fleet and processing plant. However there is no work in reported literature that includes the stochastic nature of catch rates or that focuses to solve the daily trawler scheduling problem. Jensson (1990) proposed a mixed integer program to solve the coordinated scheduling problem of trawler landings and plant operation over a 14-day period. This model assigned trawlers to landing days and determined raw material used for production and inventory stored on a daily basis. The model did not include product mix and ignored the uncertainty associated with catch. Fishing and fish processing are two separate but integral components of the system. Analyzing each component separately may lead to suboptimization of the total system. What is required is a tool to analyze both components together with the objective of improving system productivity and efficiency. 16 Chapter 3 METHODOLOGY 3.1 Approach The objective of this research was to develop a methodology to improve the operation of fishing and fish processing by coordinating these two operations. As described earlier, the operation of trawlers is dynamic and stochastic in nature. To model these characteristics, a simulation model was developed to simulate the trawler operations. The functions of the simulation model were to decide on the timing of a trawler to go fishing, to generate the quantity of catch during the fishing trip, and to decide on when a trawler lands the catch. The decisions made by the simulation model, are based on decision rules which are embedded in the model. Given a set of resources for a specified time period, the plant operation is essentially a static process for that period. To model the plant operation, a multiperiod linear programming (LP) model is formulated. Since the quantity of raw material and the schedule of the trawler is known (determined by the simulation model), the LP model determines the allocation of raw material and labour, mix of products, and the inventory of raw material. Based on these outcome measures, the performance of the schedule can be evaluated. Figure 3.1 shows the conceptual methodology and the integration of the simulation and the LP model. The simulation model, which operates the trawlers, generates catch for each trawler and schedules their landing days. The landed catch is then used as input into the linear programming model which maximizes the revenues from the trawler operation 17 and the plant operation. Based on the outcome, a schedule for the trawler operation is developed and can be used to improve the decision rules used for trawler scheduling in the simulation model. Simulation model LP model Output Generates catch for trawlers, controls length of trip, landing day and which trawler is to land its catch. Product mix model which determines labour requirements, work-in-process inventory, amount of products produced so as to optimize production costs. Trawler schedule formulated according to output from the two previous models Feedback on decision rule 14 Figure 3.1: Schematic overview of modeling approach. 3.2 Simulation model 3.2.1 Model description The model simulates the operation of a fleet of n trawlers over t days planning horizon. The objective of the simulation model is to provide the manager of a fish processing plant with initial schedule on the trawlers landings and the amount of raw material each trawler will land. The model simulates the catch of each trawler on every day, makes decision on when and what trawler comes in to land its catch, and keeps record on all the activity and data that relate to the trawler operation, as for example, 18 number of trips in the planning period, days on sea, catch on current trip and the year-todate catch. The simulation model consists of five primary components (Figure 3.2): System initialization In this first part of the simulation model all variables and parameters are initialized. Depending on their function, the variables take some specified value or are set to zero. Critical variables for the simulation model initialized at this stage include: quota of each trawler, production rate for each fish species, initial inventory, and production rate and the minimum and maximum days a trawler can spend on sea during one trip. Catch Generator After initializing variables and parameters, the Catch Generator is called to generate the catch. The Generator assigns the generated catch to each trawler for each day the model runs. The Generator also assigns the mix of fish species in a day's catch by calling the appropriate function (Catch_Combination). Typically a trawler catches four main fish species. Other fish species are of less importance both in quantity and value. The Catch Generator The probability distribution for hourly catches was estimated based on sampling statistics from reports of some Icelandic trawlers, which are required to keep records on fishing operations and send them to Icelandic fisheries authorities. The data records include information on every haul including fishing date, start of haul, trawling time, fishing grounds, depth, and quantity of catch in kilograms by species. 19 START System initialation 1. Initialization of specific parameters, 2. Set necessary variables equal to zero, Catch Generator 1. Monthly average catch rates, 2. Catch Generator, 3. Catch Combination Function: Parameters, like individual quota, trawler capacity, beginning inventory and production rate are Other variables are set equal to zero. Input: Average monthly catch rate. Function: Days catch obtained by multiplying generated catch rate per hour by average fishing hours per day. Catch combination generated from days catch. Output: Days catch and combintion for each trawler. 3. Time Value, Function: Controls the daily operation of the trawlers. If trawler is fishing and has got permit to land, check whether the trawler is required to land. Assign flag to trawler. If trawler is landing, check whether it can go fishing or has to wait. 4. Quality check, Output: Flag(0,1), whether to fish or land. Trawler operation 1. Landing Permit, 2. Land Requirement (Go_Land), Fleet and plant operation 1. Inventory Control, 2. Production Rate, 3. Time Value, Function: Coordinate trawler and plant operation. When trawler stays fishing, update trip length and trip catch. When trawler lands, update inventory and production rate. When trawler is ashore, check when to go fishing because of plant time value. Output: Status (0,1) whether trawler is fishing or not. Report generation 1. Daily activity report, 2. Trip summary report, 3. Schedule for planning period, 4. Inventory status, Function: Creates and prints daily actvity report for each trawler, trip sununary report for each trawler, operational schedule over the planning period for all the trawlers and daily inventory report on the raw material at the processing plant. Output: Performance reports. END Figure 3.2: Flow of simulation model and its primary components. 20 The statistical work is described by Arnarson (1984) and Teitsson (1990). The LogNormal distribution was found to be a convenient model of catches per hour. Sigvaldason et al. (1969) also used the Log-Normal distribution for catches per day, and Arnarson (1984) showed that catch rates per hour or catch rates per day can be described by the Log- Normal distribution. Further Arnarson (1984) analyzed the average trawling time per day on sea and seasonal fluctuation in the catch rate . As bases for his statistical analyzes, Arnarson (1984) used trawler records over a five year period from 1975 to 1979. The daily catch is the sum of catches from several hauls. Teitsson (1990), and Arnarson and Jensson (1991) observed a high degree of autocoffelation in the catches from haul to haul and modeled the hourly catch series as a first order autoregressive process, described by the following relationship: Catch(t) = A * Catch(t-1) + Residual(t) (3.1) The least squares estimate for the coefficient A is the correlation coefficient which was estimated to be 0.26 (Teitsson (1990), and Arnarson and Jensson (1991)). This would also be the maximum likelihood estimate if the residuals were normally distributed. The residuals provide the random fluctuations in the process above. Arnarson and Jensson (1991) did not find higher order coefficients to be significantly different from zero. By using the relationship between the Log-Normal and the Normal distributions (see for example Derman et al. 1973), the Catch Generator models fluctuating catch using (3.1) and : Residual(t) = Exp( Mean(t) + StDev(t) * Normal (0,1)) (3.2) where Normal (0,1) is a realization of the standardized normal distribution with mean equal zero and standard deviation equal to 1. 21 Mean(t) is the mean value of the normal distribution, which will give the desired mean value of the Log-Normal distributed catches, (see Derman et al. 1973, pg. 411). The mean value of catch rates changes on a monthly basis according to seasonal catch fluctuation described by Amarson (1984). These seasonal fluctuations are shown in Figure 3.3. is the standard deviation of the normal distribution. StDev(t) 1400 1200 1000 Ao 600 400 200 Jan Feb Mar Apr Mai Jun Jul Aug Sep Oct Nov Dec Figure 3.3: Seasonl fluctuations in catch rate (kg/hour). Teitsson (1990) and Arnarson and Jensson (1991) simulated processing trawlers where the catch is processed as soon as it comes onboard. The high autocovariance in catch rate from haul to haul makes it very difficult to plan the production onboard and smooth out the randomness. The trawling time for each haul is dependent on the catch rate. Therefore, it was found appropriate to use the average of three catch rate generations as the hourly catch rate and multiply it with the observed mean of trawling hours per day on sea (Amarson 1984). 22 The Catch Combination The statistical analyzes of Arnarson (1984) and Teitsson (1990) were based on the catch rate for one species or for all species. Published data on the catch combination of a haul is not available. When a trawler goes out fishing, often the captain has orders from the fleet manager on primary catch species. For example a catch may consist of 90% of one species and the rest being other species, or 90% of the catch may be two major species. It is therefore hard to predict the catch combination unless the main fish species the trawler wants to catch have been decided upon. Based on this operation, it was decided that a trawler would only catch two fish species, cod and pollock. When one of these two species is caught, it is likely that equal amount of the other species is also caught. In the simulation model the catch combination is generated randomly so that the percentage of cod in a day's catch is between 25% and 75%. The remainder of a day's catch is pollock. The numbers used in the simulation model are based on operations at a typical company operating trawlers and is of course different from what other companies would experience. 3. Trawler operation The next part of the model controls the operation of a trawler. At the beginning of the planning period each trawler is sent out fishing. For each day of operation, the simulation model checks on the status of each trawler, whether it is landing its catch or fishing. If a trawler is fishing and is not eligible to land or if it is eligible to land but is not required to, it keeps on fishing. If the trawler meets any of the criteria set by the decision rules (explained below), it lands its catch. Depending on the status of a trawler, the system assigns a day's catch to the trawler and updates its records. To handle multiple facets of the operation, several functions have been designed to model different tasks. The 23 function LandPermit decides whether the trawler can land or not. The function Go_Land makes the decision on whether a trawler is required to land its catch or keep on fishing. The function TimeValue calculates the time value for each of the trawlers and the function Quality calculates the quality of the trip's catch. The function Go_Status ties the results from all the functions together and controls the operation of both the trawlers and the processing plant. LandPermit The first criteria in the decision rule is used to decide whether a trawler can land its catch or not. A trawler has to spend a minimum of five days on sea before it can land its catch but no more than 15 days. If the trawler fulfills this requirement and it is not a weekend, the trawler gets permit to land its catch. If a trawler is exceeding its holding capacity in a trip or reaching its quota, a landing permit is granted irrespective of the day of the week. Go Land When trawler gets a landing permit (i.e., eligible to land) and there is no other trawler landing, the function Go_Land is called to find out whether the trawler is required to land its catch. By comparing all the trawlers that have landing permit, the function finds the trawler with maximum number of days spent on sea, the trawler with maximum catch and the trawler with lowest quality raw material. The decision rule embedded in the function is as follows: (see Decision Rule logic page 64). -If the maximum number of days at sea is less than eight and there is a shortage of raw material at the plant, the trawler with highest trip catch is assigned to land its catch. If there is enough raw material on hand at the processing plant, the trawlers keep on fishing for one more day. 24 If the maximum number of days at sea is between eight and twelve and the plant inventory is low, the trawler with the lowest quality raw material onboard is required to land its catch (see section on "quality" below). When the maximum number of days spent on sea exceeds twelve, the number of days for the trawler with lowest quality and the trawler with maximum number of days on sea is compared. If the difference is less than two days, the trawler with lower quality raw material is assigned to land its catch given that the processing plant is in need of raw material. Otherwise the trawler with most days on sea is assigned to land its catch. -In case the processing plant does not need raw material, the function checks whether there is a chance that a trawler will reach the maximum allowable number of days during the next weekend. If this will be the case, the trawler is assigned to land before the weekend. -The function also checks if there is more than one trawler that might compete for the same landing date, and takes appropriate steps by assigning trawlers to land their catch earlier to avoid landing conflicts. The function Go_Land returns information on whether a trawler is required to land its catch or not. This information is obtained for every trawler on a particular day. In case a trawler is required to land, the harbour becomes occupied on the specified day, and the remaining trawlers do not get access for landing. TimeValue The concept of time value as applied to decision making in fisheries, was proposed to aid in short term decisions about cruising speed when sailing to fishing ground or to harbour. Intuitively, if no use can be made for the next hour, because of the weather 25 being too bad for fishing or reported catch rates being very low, then time has no or low value, and the captain should choose economic cruising speed. The opposite case could justify maximal speed. Arnarson and Jensson (1991) extended the use of the time value for long term decisions. Consider planning a fishing trip of several days or weeks, and comparing two alternatives that differ in length of trips as well as net revenues. The time value helps to evaluate the time from the finish of the shorter trip until the longer tip is finished. The authors suggest that "long term" time value makes the two alternatives comparable. This will depend on the quota the trawler has left for the planning period and the remaining time of the planning period, as well as on expected catch rates for the time interval considered. They further use an expected opportunity cost of future time (time value) to describe how a captain of a processing trawler trades processing speed with product prices. In this research the long term time value is used to describe the fleet manager's decision on timing of a new fishing trip after landing the catch. The ratio of the quota for the scheduling period for a trawler and the length of the scheduling period gives the average catch per time unit that the trawler has to catch if the trawler wants to catch the entire quota "just in time". By comparing this ratio to the ratio of the remaining quota and the remaining time of the scheduling period each time the trawler is in harbour landing its catch, the fleet manager sees whether the trawler is short of quota or if he has enough quota for the remaining time of the season. As an illustrative example, consider a trawler that has 3000 MT quota and the scheduling period of 300 days. The base time value for the trawler is then 3000/30-u = 10. If it is now assumed that 160 days of the scheduling period have elapsed and that the trawler has caught 2000 MT a new time value is calculated, (3000- 2000)4(300-160) = 7.14, and compared to the base time value. In this case the fleet manager sees that the trawler has less amount of quota per day left and will therefore take action by letting trawler stay in harbour until the time value is within an acceptable range 26 again. If, on the other hand the time value is equal to or higher than the base time value, the fleet manager will let the trawler keep on fishing. This definition of the time value ignores the seasonal fluctuation in estimating the ratio and also the probability of the most likely catch for the remaining season. Its use here is mainly to indicate to the fleet manager the status of the trawler. If the current time value is lower than the base time value, and the company wishes to keep the employment level steady throughout the period, there is no rush in sending the trawler out for fishing. On the other hand, if the time value is higher, the trawler has to keep on fishing in order to catch all the quota before the end of the period. Qil@bItz As in other branches of the food industry, freshness and quality of the raw material are very important and directly affect the value of the products produced. Drop in quality of fresh fish depends on many factors. Four major factors that affect quality (Hauss 1988) are: time, temperature, fish species, and seasonal condition of fish when caught. All these factors directly affect the bacterial growth rate in dead fish. Various curves have been published that show the drop of quality as function of these different factors (Hauss 1988). Because of the importance of quality of raw material, it is one of the main criteria used in the simulation model. Since no published data is available on the link between quality of raw material and the value of the raw material, a relative quality function was developed to help distinguish between the quality of catch of two trawlers. In developing this function seasonal condition of the fish is assumed to be constant. Also the quality function assumes that the trip catch of a trawler consists of only one species and that the raw material is kept at constant temperature. The quality of trip catch of trawler is then only a function of time (see Figure 3.4). 27 100 95 90 85 ti 80 75 1. . . . dn 70 65 60 55 50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Days Figure 3.4: Relative quality of fresh fish as function of time. 4. Plant operation In the simulation model, the operation of both trawlers and the processing plant is coordinated and controlled by the function Go_Status. Decisions on trawler operation are based on the status of the processing plant. A trawler lands its catch only when the processing plant is in need of raw material or a trawler is approaching its due date on sea. To control these operations, several functions were developed. These include: Inventory control When trawler lands its catch, the raw material is stored in a cold storage facility. At the time of landing the raw material inventory is updated accordingly. At the end of each day, the days usage of raw material is deducted from the inventory according to the daily production rate. There are limits on how much inventory the plant can carry on hand and as soon as the inventory reaches this limit, action is taken in delaying further supply of raw material until the inventory level is below the limit (see section on "Plant time value"). 28 production rate. There are limits on how much inventory the plant can carry on hand and as soon as the inventory reaches this limit, action is taken in delaying further supply of raw material until the inventory level is below the limit (see section on "Plant time value"). Production rate The amount of raw material used for production is based on the daily average production rate. This rate is based on production rate for each fish species and on seasonal variation of workforce level. When a trawler lands its catch, the weighted average production rate of the catch combination is calculated. This rate is then used to monitor inventory until the next trawler lands. There are three different inventory levels used to decide the production rate. These are based on the amount of inventory on hand and the expected amount of catch that the trawlers have reported, and reflect the quantity of the inventory in order to level the production accordingly. Plant time value As defined, the time value is used to help make strategic decisions for each of the trawlers. To control a fleet of trawlers, another interpretation of the time value is used. At the time when trawler is ashore, the processing plant has to evaluate the urgency of further raw material supply for the next one or two weeks. Based on this evaluation, the processing plants decide whether to send a trawler fishing or let it wait for another day. By estimating the on-hand inventory and the catch that the current fishing trawlers have reported, the processing plant can schedule its production ahead of time. If the total onhand inventory and reported catch passes some threshold criteria, the plant asks the trawler to wait another day ashore since further increase in inventory can result in aging of raw material, diminishing its quality and value of products. 29 5. Report generation The system generates four different type of reports. Daily activity : For each day, the activity of a trawler is reported: whether it is fishing or landing. When it is fishing, the days catch is reported as well as the catch combination. Summary report : For each trawler, a summary of the trip report is generated. The report contains information on the trip number, the day of the period when the trawler landed the catch, the trip length in days, the catch combination and the total catch. This report represents the basic input to the linear programming model. Operation schedule : The schedule gives an overview of the operation of all the trawlers over the entire planning period. From the schedule, the activity pattern of the trawlers' operations can be assessed. Inventory status : This report shows the daily inventory status of the raw material at the processing plant as estimated in the simulation model. 30 3.3 Linear programming model for product mix 3.3.1 General The decision making activity considered in the linear programming model is at a macro-level that focuses on the products to be produced and requirements of critical resources. The objective was to integrate the simulation component that generates the trawler schedule and the associated catch with the linear programming optimization module that analyzed system operation. Micro-level models have been developed (see Jensson, 1988) that take the macro-level linear programming output and develop product-mix decisions for each workstation. 3.3.2 Mathematical formulation Indices Indices used in the linear programming model are: = category of raw material i.e. fish species; = type of product processed, for example cod "Dinner Cut" or pollock "Iglo" determined by market requirements; = time period, for example daily production if the planning horizon is one month; = number of trawlers that land their catch at the processing plant; o = regular hours used for processing; = overtime hours used for processing; 31 Decision variables Xfpt = quantity (kg) of product p produced from fish species f in time period t; Yft = quantity (kg) of fish species f landed in time period t; Ltr = regular labour hours used in the processing plant in time period t; 1-10 = overtime labour hours used in the processing plant in time period t; Ift = amount (kg) of fish species f kept in inventory at the end of period t; Ht = number of employees hired during period t, Ft = number of employees laid off during period t, Coefficients CH = cost of hiring (Icelandic Krona, ISK/employee hired); CF = cost of laying off (ISIC/employee laid off); CLR = hourly cost (ISK/hr) of labour working regular 8 hours per day; CID = hourly cost (ISK/hr) of labour working overtime; S = selling price (ISK/kg) of product p produced from fish species f, Pf = price (ISK/kg) of fish species f, CIt = cost of holding inventory during period t, (ISK/period) Vit = harvesting cost of trawler i landing in period t, (ISIC/kg harvested) N fP = amount of fish species f (kg) needed to produce one kg of product p, (kg raw fP mat/kg products), MfP = labour hours needed to produce one kg of product p from fish species f, (hrs/kg) 0 = number of hours each labour force provides per period, 32 QLfp lower bounds on demand for product p made from fish species f, = QUfp = upper bounds on demand for product p made from fish species f, Rft = fish species f available in period t, Mathematical model The objective of the model is to maximize net revenues over time t. The cost items of the model are raw material, operational cost of trawlers, cost of labour, hiring and laying-off and the cost of holding inventory. Max { fp SfpXfpt- 'f"'ft - CLRLt, - CLoLto - CHHt - CFFt - CitIt - I VitYft} where: PfYft = cost of raw material. It is assumed that all raw material that is landed is bought by the processing facility, regardless of its use; = cost of regular labour hours. It is assumed that the processing plant has to pay at least a minimum number of hours per period even if the plant is idle; CLoLto = cost of overtime labour hours used for processing; CHHt = cost of hiring employees; CFFt = cost of firing employees; Chit = cost of holding inventory between periods; VitYft = cost of harvesting; 33 The objective function maximized is subject to the following constraints: Only available raw material can be used for processing: E Nfp Xfpt Yft ; for all f and t 43_1 This is to make certain that the amount of product p produced from fish species f in period t, NfpXfpt, is bound by the maximum amount of fish species f available in each period, i.e. the inventory of fish species f from the previous period ( ) plus the fish species f landed in period t ( Yft ). Labour requirements for all products: fp Mfp Xfpt L, for all t The sum of labour hours required to produce each product in period t, has to be less or equal to the total amount of labour hours available in the company during that period. Restricted available labour in period t: Lt,min Lt Lt,max , for all t, In each period t, the company has limited workforce resources, Lt,mtnand Lt,max, Workforce balance between periods: Lt = Lt_i + OFIt - OFt, , for all t, Workforce that is hired in period t is available in that period while worldorce that is laid off has to be given r period notice. Market demand for the products: QLfpt 5_ Xfpt QUfpt, for all f, p and t, 34 There are upper and lower bounds on demand (market restrictions) for product p made from fish species f in period t; It is assumed that the company only produces to meet demand, it will not produce to stock. Inventory balance: + Yft = + Nfp Xfpt , for all f and t, The inventory from the previous period plus the fish species f landed in period t, are available for production in period t. raw material not used for production is stored as inventory (V for use in the next period. Inventory freshness of raw material: I{ It,u t_d , for all t, ' Due to freshness requirements, the oldest inventory cannot be held longer than D days, the upper limit is the maximum amount that the plant can produce in D days. Inventory storage limits; to account for limited storage for inventory: t f Imax, for all f and t, Non-negativity constraints: Xfpt, Yft, Lt, Ht, Ft, kt, 0, for all f, p and t, The output from the LP model consists of the amount of each product type produced, amount of raw material inventory held for each species and labour hours used. Also, it shows the resources used for each time period. As explained in the next section, the LP output can be used to refine the trawler scheduling heuristic used in the simulation model. 35 3.4 Implementation The simulation model is programmed in Think C, version 5.0, for the Macintosh II si. Building the simulator in a general programming language was considered to be more flexible in modeling and report design than using a special purpose simulation language. The model consists of several functions and modules that are called by the main program as the program runs. The structure of the model is shown in a flow chart in Appendix A-1. It took on average one and a half minutes for a run of the simulation model. The linear programming model was formulated and generated in MPL, a modelling program language for UNDO, using a 386 PC compatible computer. The size of the model depends on the time horizon for which it is formulated. For a planning horizon of 10 weeks, two fish species and two products per species, the model had 704 variables and 356 constraints, and took on average 3 minutes per run on a 386, 20 MHz personal computer. 36 Chapter 4 RESULTS Model validation 4.1 The decision support methodology was validated using data from a major fishing company in Iceland. The data requirements for the model can be broken down into two components: data input for the simulation model and data input for the linear programming model. 4.1.1 Data input for simulation model The data used in the simulation model for simulating the trawler operation is shown in Table 4.1. The company operates four fresh fish trawlers. The capacity and the quota of only the high volume fish species are considered here. These are cod and pollock. Also, two primary products are produced from each species. Quantity data is expressed in the metric system, i.e. kilogram (kg) and metric tons (MT). Following the fishing practice at this company, it is assumed that a trawler has to spend at least five days on sea but no more than 15 days. The lower limit is based on trawler Table 4.1: Capacity and quota of trawlers. Trawler 1 Trawler 2 Trawler 3 Trawler 4 , Capacity (MT) Quota (MT) 195 190 3317 3250 2978 4154 200 250 37 economics, while the upper limit is due to aging of raw material. A measure of production rate reflecting the usage of raw material is used in the simulation model to deplete inventory in determining the trawler schedule. Different levels of production rates can be used with varying accuracy of simulation output. For example, in the base model, a fixed production rate is assumed, independent of time of year and on-hand inventory. It is assumed that the company wishes not to keep more inventory on hand than can be processed in one week. The inventory threshold criteria used for the time value of the processing plant is therefore set equal to 440 MT which is approximately one week's inventory. Furthermore, (1) auction markets are not considered as option for the company, (2) weather interruptions and delays due to equipment breakdown are ignored, and (3) it is assumed that regular working time in the processing plant is eight hours per day during weekdays. 4.1.2 Data input for linear programming model The amount of catch from the simulation model is one input to the LP model. The remaining input is summarized in Tables 4.2 through 4.4, and Figure 4.1. Table 4.2 shows the cost of raw material, the sales price of each of the products, as well as the raw material and labour requirements for each product. The unit for all costs and revenues are Icelandic Krona (shown as ISK). Table 4.2: Cost of raw material, sales price of product, and raw material and labour requirements. Raw Cost Material ISK/kg Sales price Product ISIC/kg Raw material Yield kg RM/kg Prod Labour kg RM/hr hr/kgprod Cod 58 Cod-1 Cod-2 302 231 40.0% 46.0% 2.5000 2.1739 32 55 0.0781 0.0395 Pollock 35 Pol-1 147 121 50.0% 56.0% 2.0000 45 55 0.0444 0.0325 Pol-2 1.7857 38 The table shows the yield of raw material processed and the quantity in kilogram of raw material needed to produce on kilogram of product. The labour requirement column shows the amount of raw material processed in one man-hour, and the hours of labour needed to produce one kilogram of product. The available labour hours during the year are shown in Figure 4.1. The available hours are based on historical data and reflect the scheduled labour profile the company wants to maintain for the year. For each week it is assumed that the company has to have some minimum number of workers on payroll but on any given day the company may add up to five more workers. It is further assumed that the workers will be willing to work four hours of overtime on weekdays and eight hours on Saturdays. In addition, there is no work on Sundays. Table 4.3 shows the work pattern as well as the cost of regular and overtime labour. 1400 1400 1200 1200 1000 1000 6. 7 800 800 600 SOO 400 400 200 200 tt 7 r.. "et 0 0 ;73 c71 0, V) in C.) r.. (1 cn V) V' Number of week = Regular 177M7701 Overtime Figure 4.1: Comparison of expected catch rate and workforce level. Catch Rate V' N. 0) 39 Table 4.3: Work pattern during the week and hourly wages. Regular hours Overtime hours Pattern Wages 8 hrs weekdays No work on weekends 650 ISK per hour 4 hrs weekdays 8 hrs Saturdays No work on Sundays 950 ISK per hour If the company has to hold raw material inventory, it incurs inventory holding cost. Table 4.4 summarizes the inventory holding cost, for each fish species. The high inventory costs over the weekend not only reflect holding cost, but also the loss in quality for holding raw material for days when it is not processed. Table 4.4: Inventory holding cost of raw material during weekdays and weekends. Cod Pollock Weekdays Weekends 1.00 ISK/kg 0.50 ISK/kg 58.00 ISK/kg 35.00 ISK/kg The LP model described in the previous chapter was formulated to be applied to a wide range of applications. Some of the components of the general formulation are not included in this validation effort. Specifically, these are: hiring and layoff costs associated with employees, and trawler operating cost in the objective function. Additionally, the constraint associated with inventory freshness (constraint number seven) is not included in the LP; however, the raw material quality has been included in the simulation model. 40 4.2 Results The objective of the research is to design a decision support system to aid in improving current decision strategies used by the operations management of a fishing company. The accuracy of the results and the suggestion made by the decision support system depends on the decision rules used in the simulation model. Thus, a basic focus of the analysis was to improve the decision capability of the system. 4.2.1 Initial decision rule (Rule A) In the first series of runs, the production rate of the processing plant, as used in the simulation model, was held constant throughout the year. The production rates used were 40 MT/day for cod and 50 MT/day for pollock. Based on the inventory status of the plant, the model decides whether it needs raw material or not. In case the plant is running out of raw material, i.e. has less than approximately one and a half days inventory on hand, a trawler is called in to land its catch. The trawler is chosen according to length of trip or the relative quality of the catch. It was decided to analyze the production system at two different periods of the year: the spring, covering the months of February through April; and summer, covering the months of May through August. Each period represents different characteristics; in the spring the expected catch rate varies greatly whereas in the summer it is high and relatively stable. The trip summary report generated by the simulation model (see Appendix A-3) contains the output needed for the linear programming model; it includes the catch a trawler had in a trip, the length of the trip and the landing day. Examples of the output, from the linear programming model are given in Tables C.1 and C.2 in Appendix C; a section of the output for one week period for Rule C is shown in Table 4.5. To make the model output easy to comprehend and use, this information was generated using spreadsheet program. Given 41 the daily raw material input from the simulation model and the product mix decision by the linear program, the amount of raw material and labour hours used each day, and the inventory held in stock are calculated by the spreadsheet program and presented in the upper part of the table. The lower part of the table calculates the revenues and costs of each category. Table 4.5: Example of the summarized LP model output (Rule C). Weekday SUN MON THU WED THU FRI SAT No. of day 29 30 31 32 33 34 35 Incoming RM Pollock Used RM Pollock Inventory(EOP) Produced Used labour Available hours Labour slack Cod 57000 61000 Cod 48431 Cod Pollock Cod-1 Cod-2 Pol-1 Poi-2 Hours Regular Overtime Regular Overtime 8569 61000 Icelandic Krona (000 ISK) Incoming RM Used RM Inventory(EOP) Produced Used labour Available hours Labour cost Cod Pollock Cod Pollock Cod Pollock Cod-1 Cod-2 Pol-1 Pol-2 Hours Regular Overtime Regular Overtime 22278 880 600 280 8569 28330 38000 58000 28169 9831 25805 39640 25225 9831 32670 2919 90670 11268 585 14165 880 600 280 880 600 280 64865 3932 25225 12903 19820 12613 880 600 280 880 600 280 560 560 SUN MON THU WED THU FRI SAT 29 30 31 32 33 34 35 570 903 1387 3306 2135 2809 497 992 16 882 5146 45 3403 32 1188 13 1897 2914 1854 880 600 280 390 267 880 600 280 390 267 560 135 2082 880 600 280 390 267 883 10 9 31 2204 2030 1634 880 600 280 390 267 880 600 280 390 266 560 533 42 To account for variation in results due to random numbers, each modeling scenario was iterated twice. Table 4.6 shows the results from both iterations for each period. The quantity of raw material in Table 4.6 is obtained from the simulation model, the product mix decision (quantity of products, labour requirements and revenues) are obtained from the LP model. Table 4.6: Results from Rule A showing raw material, products, labour and revenues. Products Raw Material Cod Pol Total Cod-1 Cod-2 Pol-1 Pol-2 Total Labour Revenue MT MT MT MT MT MT MT MT hrs ISK(000) Iteration 1 Spring Summer 1438 2099 1773 2535 3211 139 186 501 751 679 915 233 395 1552 2247 68411 4634 97736 63963 78921 Iteration 2 Spring Summer 1595 1923 2428 3518 4477 144 261 568 642 619 808 376 455 1707 2049 2166 73411 96459 65458 94897 Average Spring Summer 1517 1848 3365 141 2482 4556 224 535 697 649 2074 305 425 1630 2207 70911 97097 64710 86909 861 It can be seen in Table 4.6 that there is considerable variation in used labour hours and in revenues between the two iterations which reflects the amount of raw material received and processed. To see how well the simulated trawler operation fits the plant operation, the daily inventory of the simulation model is compared with that of the LP model by calculating the absolute deviation in inventory between the two models. The average absolute deviation is shown in Table 4.7 along with its standard deviation and maximum values. An example of the daily variation is shown graphically in Figures C.1 throuh C.4 in Appendix C. 43 Variation in the inventory deviation from run to run is not as obvious as for the labour and revenues observed in Table 4.6. The deviation is higher during spring than summer which complies with the characteristics of the two periods. Table 4.7: Deviation in inventory between simulation model and LP model for Rule A. I Iteration 1 Spring Summer Iteration 2 Spring Summer Average Spring Summer 4.2.2 Mean 1 St.Dev. I Max 34.57 23.27 30.20 20.53 112.81 29.59 25.75 31.27 26.60 115.94 107.16 32.08 24.51 30.74 23.57 114.37 89.12 71.07 Modification of decision rule Since the primary objective of analysis was to improve the accuracy of the decision made by the system, the decision rule in the simulation module was modified based on the initial runs. Two different scenarios were iterated. Rule B: The production rate of the processing plant used in the simulation model was varied to accommodate seasonal fluctuations with the base production rate being 27 MT/day for cod and 38 MT/day for pollock. This is in contrast to the constant production rate used in Rule A. More precisely, the production rate relates directly to an average monthly variation of the workforce level used in the LP model. Rule C: In addition to the varying seasonal production rate, the third decision rule includes consideration of the on-hand inventory in the processing plant and potential inventory that may be expected due to landing of trawlers. Depending on the amount of inventory on hand 44 and the potential inventory, the decision rule decides on one of four different levels of production rate that is appropriate for the available and expected amount of inventory. Table 4.8 summarizes the three decision rules. The results from using Rule B and C are summarized in Tables 4.9 and 4.10, along with those from Rule A. Table 4.8: Definition of decision rules A, B, and C. Rule Description Rule A Production rate fixed, independent of time and on-hand inventory. Rule B Production rate fixed but varies according to time of year. Rule C Production rate varies according to time of year and on-hand inventory Table 4.9: Siunmerized results showing raw material, products, labour hours, and revenues for Rules A, B, and C. Raw Material , Products Cod Pol Total 1517 Cod-1 Cod-2 535 697 Rule A Spring Summer 1848 2482 3365 141 2074 4556 224 Rule B Spring Summer 1624 2095 1917 3541 4780 162 531 560 2685 Rule C Spring Summer 1628 2217 2007 2449 3635 4665 173 550 566 374 353 Poi-2 Total Labour hrs Revenues 649 861 305 425 1630 2207 70911 97097 64710 86909 641 1078 355 297 1719 2258 74856 112975 61203 131007 789 1094 241 1752 2156 78120 111582 129748 Pol-1 122 71444 45 Table 4.10: Deviation in inventory between simulation model and LP model for Rules A, B, and C. Mean St.Dev. Max 47.02 Rule A Spring Summer 107.83 51.92 74.42 225.00 272.00 Rule B Spring Summer 32.08 24.51 30.74 23.57 116.00 107.00 Rule C Spring Summer 13.24 14.04 11.79 15.99 41.93 65.63 4.3 Comparison of decision rules 4.3.1 Raw material , Comparing the amount of raw material the trawlers land during the two observation periods under the three different decision rules shows that the landed catch is very similar (Table 4.11). During the 13 week spring period, the trawlers land approximately 3500 metric tons whereas they land approximately 4600 metric tons during the 17 week summer period. The trawlers under decision Rule A land less catch than trawlers under the other two rules. This variation is a combination of two factors: stochastic nature of the catch figures generated using random numbers, and fixed production rate of the processing plant under Rule A resulting in more inventory and therefore less need of raw material. Both Table 4.9 and Figure 4.2 show that the composition of the catch is almost the same for the different rules during the two periods. Approximately 45% of the total catch is cod; the rest is pollock. 46 I. B RIJN A Cod Rule C 0 Pelock Figure 4.2a: Landed raw material in spring by fish species. Fbi*A Rtdo B Cad a RuIC Pollock I Figure 4.2b: Landed raw material in summer by fish species. Although the amount of raw material landed for the three rules is almost the same, the weekly landing pattern is different for each rule. Figure 4.3 shows how the average weekly landing pattern during spring is different among the rules. In Rule A, trawlers land their catch on all days of the week but most of the catch is landed on Mondays, Wednesdays, and Thursdays. For Rule B the pattern is similar but now more catch is landed on Mondays and less on Thursdays. For Rule C the pattern is very different. Most of the weekly amount landed is on Monday's and Wednesday's; very little is landed on Tuesday's and Thursday's and none on Friday's. A similar landing pattern occurs during the summer period. Figure 4.4 shows the average weekly landing pattern for rules A, B, and C. As in spring, trawlers land their catch on all week days under Rule A. Considerable more catch is landed during the last days of week than under either rules B or C. Compared to Rule A, the landings in Rule B move towards the beginning of the week. More is landed on Monday's and Tuesday's and less on Thursday's. No landings occurs on Friday's. In Rule C the landing on Thursday's and Friday's shift further to the first days of week; most of the landings occur on Monday's, Tuesday's, and Wednesday's. 47 The weekly landing pattern has important inventory implications. Figures 4.3 and 4.4 also show the average weekly inventory resulting from the LP model. For rules A and B, inventory is held over the entire week in spring whereas there is no inventory kept over the weekend under Rule C. During summer, Rule A holds more inventory over the weekends than before but now Rule B holds no inventory over the weekend. The weekly inventory under Rule C is minimal. 48 140.00 120.00 100.00 80 00 60.00 -3f-" - 40.00 %** 20.00 4- Ij 0.00 Sun Tue Mon Wed Thu Fri Sat Fri Sat Figure 4.3a: Average weekly landing and inventory in spring for Rule A. 140.00 120.00 100.00 80.00 60.00 40.00 * 20.00 0.00 Sun Tue Wed Thu Figure 4.3b: Average weekly landing and inventory in spring for Rule B. 140.00 120.00 100.00 80.00 60.00 40.00 20.00 0.00 Sun Mon Tue Wed Inventory 111 Thu Landing Figure 4.3c: Average weekly landing and inventory in spring for Rule C. Fri Sat 49 140.00 120.00 100 00 16;:::re` 80.00 skii! SS 60.00 40.00 : 3.41.:,:t - 20.00 000 Sun Mat Tue Wed Thu Sat Figure 4.4a: Average weekly landing and inventory in summer for Rule A. 140.00 120.00 100.00 ; 80.00 44.4. J." . 60.00 40.00 2000. 0.00 Sun Mon Tue Wed Thu Sat Figure 4.4b: Average weekly landing and inventory in summer for Rule B. 140.00 120.00 100.00 80.00 60.00 40.00 20.00 ye. 0.00 Sun Mon Tue Wed IEl Inventory Thu Lancing Figure 4.4c: Average weekly landing and inventory in summer for Rule C. Fri Sat 50 Product mix. Table 4.10 also shows the breakdown of products produced. The total quantity of products during spring and summer using the different rules is similar. However, the distribution of products varies shown in Figure 4.5 and Figure 4.6. 18.69% 20.66% 39.81% Figure 4.5a: Spring, Rule A. Figure 4.5b: Spring, Rule B 13.73% Cod-1 28 Cod-2 Pot-1 45.02% Figure 4.5c: Spring, Rule C 0 Pol-2 Figure 4.5: Product mix in spring for Rules A, B, and C. 52 4.3.3 Profit Table 4.9 summarizes the average net revenues for each of the three decision rules. Given the amount of landed raw material, the product mix and labour hours, three different profit measures are calculated. The profit, measured in Icelandic Krona (ISK) is shown per kilogram of landed raw material, per kilogram of product produced, and per labour hour used for production. Figures 4.7 and 4.8 show the three different profit measures for the three different decision rules during the spring and summer period respectively. During spring Rule C gives the highest profit for all three measures followed closely by Rule A. Rule B has lower profit than both Rule A and Rule C. The profit for Rule A measured by any of the three measures is relative high because of less raw material landed and therefore fewer labour hours used. The summer months (Figure 4.8) show rules B and C with significantly higher profits than Rule A. 120.00 100.00 80.00 60.00 40.00 20.00 Rule C Rule B 0.00 Rule A Kg product Kg raw mat. Labour hour Figure 4.7: Comparison of different profit measures during spring for Rules A, B, and C. 53 120.00 100.00 Rule C Rule B Rule A Kg product Kg raw mat. Labour hour Figure 4.8: Comparison of different profit measures during summer for Rules A, B, and C. 4.3.4 Inventory Table 4.10 shows the absolute deviation in inventory between the simulation model and the linear programming model; these results are presented graphically in Figures 4.9 and 4.10. Figure 4.9 shows the deviation for spring months. The mean deviation is significantly lower for Rule C which also has the lowest standard deviation and the lowest maximum value observed in the period. Rule B performance is worse than Rule C but considerably better than Rule A. The high maximum value for Rule A indicates the high variation experienced in the inventory deviation due to a fixed production rate. 54 The same pattern is also true for the summer period as shown in Figure 4.10. The values for Rule A are even higher than in spring and the difference between Rule B and Rule C is still significant but not as great as in spring. As before the maximum value gives an indication about the variation of the deviation. As discussed earlier the weekly landing pattern affects the inventory levels. With almost no landings towards the end of the week, Rule C has an ideal inventory pattern. Rule A produces the worst results as a substantial proportion of catch landing occurs on Thursdays and Fridays. 250 200 150 100 50 Rule A - Rule C - Mean St.Dev. Rule B Max Figure 4.9: Absolute deviation of inventory during spring for Rules A, B, and C. 55 300 250 Rule A Rule B Rule C Figure 4.10: Absolute deviation of inventory during summer for Rules A, B, and C. 4.4 Evaluation of results Figure 4.3 and Figure 4.4 show how the average weekly landing of the catch shifted from landing on all the week days under Rule A towards fewer days and earlier in the week landings under Rules B and C. Under Rule C the landings favored two days more than any other days, Monday's and Wednesday's. This is because on Mondays the plant has little if any inventory on hand and needs raw material. On Wednesday the inventory level has become low enough for the plant to require raw material. Raw material landed on Wednesday's then serves the plant until the weekend with little or no inventory on hand over the weekend. The earlier the raw material is landed during the week, the better opportunity for the plant to plan production for the week. Landings late in the week often results in product mix selections that are of less value but can be processed faster. This becomes apparent from Figures 4.5 and 4.6. Because of the number of trawlers used, their maximum length of trip 56 and quality of catch, a second landing in a week is necessary. This smoothes the inventory and increases the freshness of the raw material which has a significant effect on the value of products. This is achieved under Rule C, but to avoid inventory holding over weekends and to prefer freshness, the inventory level is higher during the middle of the week than under the other two rules. Comparing the inventory management between periods for the three different decision rules is interesting. Under decision Rule A the inventory management gets worse from spring to summer while the opposite is true about decision Rule B. The explanation of this is the combined effect of varying seasonal catch rate and different production rate rules. Decision Rule A uses constant production rate for the processing plant. In the first part of spring the catch is low enough so that the plant can process the incoming raw material without building any inventory. Towards the end of spring the catch increases are substantially more than the production can process, resulting in inventory build up. Therefore, inventory management is even worse in summer than in spring. Under decision Rule B the opposite is true. The reason for improved inventory management in Rule B in summer compared to spring, is due to different catch rate behavior in these two periods and varying production rate. In spring the catch rate varies greatly, increasing rapidly from low rates in the beginning of the period to high rates towards the end of the period. The production rate in the simulation model, varies monthly but is constant during a month; it lags the catch rate and does not respond quickly enough to daily variations in catch rate. In summer the catch rate is relatively constant and variations in catch rate are lower having less impact on the inventory level than in spring. Changes in the inventory level between periods under Rule C are not as significant as for the other two. The mean deviation is almost the same whereas the standard deviation increases slightly in summer. The reason is because of the stochastic nature of the process. Also, bigger catch in summer results in higher variation in inventory level The deviation 57 under Rule C is significantly lower than the deviation under the other two rules. This superior performance by the model under Rule C is because the production rate varies daily and the model can therefore respond more instantly to varying catch rates. Considering the inventory management of Rule C it is not surprising that this rule also has the highest profit. In spring the profit for Rule A follows Rule C closely and outperforms Rule B. Because the raw material landings under Rule A are less than under Rule B and C, there is less labour time used and also there is better opportunity to produce more valuable product that takes more time. Figure 4.5 shows the product mix to support this where it can be seen that more of Pol-1 is produced under Rule A than under Rule B, with the amount of cod products being similar. For Rule C the portion of the higher valued product Pol-1 is higher. In summer, the product mix decision gives a better indication of how well the different decision rules are utilizing their resources to contribute to higher profits. In general, the structure of the decision rule affects the performance of the system. If more information on production and inventory, and fluctuations in catch, are included in the decision rule, the prediction of the model becomes more accurate. On the other hand including more information will increase both the complexity of the model and the data requirements. 58 Chapter 5 CONCLUSIONS The purpose of this research was to develop a methodology to aid management of a fishing company to coordinate fishing operations and fish processing. An integrated system consisting of a simulation model and a linear programming (LP) model were developed to handle this task. From the viewpoint of the processing plant, it is important that the flow of raw material is as steady and smooth as possible. There are of course some practical limitations, as for example, little processing during weekends in the processing plants. This forces the plant to minimize the raw material inventory it has to hold over weekends and schedule landing earlier in the week. Incoming raw material and inventory are therefore important indicators on how well the trawlers and the plant operations have been coordinated. The simulation model generates catch for the trawlers and controls the length of the fishing trip, and which and when a trawler lands its catch. The generated catch along with the landing day are then used as input into the LP model formulated to optimize the plant operation. The LP model is a typical product mix model which determines labour requirements, work-in-process inventory levels and amount of products produced so as to optimize production costs. The focus of the system was improved decision making. To this effect, three decision rules were modeled and analyzed. The decision rules reflect different level of information built into the simulation model. Decision rule A represents fixed production rate for each fish species throughout the year. In Rule B the production rate reflects seasonal variations on a monthly basis. In Rule C the production rate is a function of 59 time (month of year), the current inventory level and the prospective raw material supply. The system showed that the results were significantly more accurate and desirable under Rule C. The inventory on-hand was minimized, resulting in higher quality of raw material processed and resulting in products with more profits. Also, the landing pattern of trawlers was more desirable with most of the landing occurring early in the week, particularly on Mondays and Wednesday. In contrast, trawlers land their catch later in week for Rule B and C. When trawlers land their catch late in the week, the processing plant has less time to process the catch and there is increased probability that the plant has to hold inventory over the weekend. When there is inventory build up at the plant, the time value of the plant holds the trawlers in harbour until the inventory level is below the certain threshold value of the plant. This effect of the time value increases the number of days a trawler spends ashore and therefore lowers the efficiency of the trawlers and their total catch. For three different decision rules analyzed into the simulation model it was found that as more information is included in the model, the prediction of the system becomes more accurate. However, there is a tradeoff between increased information requirements and increased accuracy of the system. By increasing the information requirement, much more data than is usually maintained by fishing companies today has to be collected and analyzed. Evaluating this tradeoff point is difficult since it is hard to estimate the effect of the stochastic nature of the process. The deviation of the inventory levels between the simulation model and the LP model is a good measure of the system's predictability. Furthermore, the inventory level along with the quantity and quality of incoming raw material also give an indication on how well the system performs. 60 There are two significant contributions of this research: Integration of fishing and fish processing. These two components have to be analyzed as one system if sub-optimization is to be avoided. Also, including fish quality measures in making catch decisions is unique to this research; it significantly enhances the utility of this model. 2. Integration of optimization and heuristics modeling to aid decision making in the fishing industry. Each of these two modeling techniques have their own unique strengths and capabilities; the blending utilizes the strength of each technique. For optimization techniques to be useful, they need to accommodate stochastic variations in system parameters. Stochastic optimization techniques are of little pragmatic value because of model complexity and computational time. Using a heuristic technique such as simulation helps analyze the stochastic components of a system without increasing the complexity of the optimization techniques. This approach used here has wide implication for other application areas. 61 REFERENCES Andrason, Th. I., "Production Management onboard on Factory Trawlers". Final Thesis, Engineering Faculty, University of Iceland, 1990 (in Icelandic). Arnarson, I., "Economical Analysis of Fishing Vessels. A Comparison between Stern Trawlers and Longliners". M.Sc. Thesis, Norwegian College of Fisheries Science Tromso, Norway, 1984 (in Norwegian). Arnarson, I., "A Decision Support System for Fishing Skippers". Technical Report, 11-1 Trondheim, Norway, 1986 (in Norwegian). Arnarson, I., Jensson, P., "Simulation Model of Factory Trawler Operation". Unpublished working paper, Agriculture and Resource Economics, Oregon State University, 1991. Arnarson, I., Johnston, R.S., "Modelling groundfish supply. A Linear Programming approach with application to Newfoundland", Econometric Modelling of Groundfish Supply, edited by Shrank, W. and Roy, N. Kluwer Academic Publishers, 1991. Derman, C. et al., A Guide to Probability Theory and Application, Holt, Rinehart and Winston, New York, 1973. Digernes, T., "An Analytical Approach to Evaluating Fishing Vessel Design and Operation". Doctorial dissertation, Norwegian Technological College, Trondheim, Norway, 1984 (in Norwegian). Gunn, E.A. et al., "Planning harvesting and marketing activities for integrated fishing firms under an enterprise allocation scheme", European Journal of Operational Research, 55, 243-259 Elsevier Science Publisher B.V. North Holland, 1991. Hauss, H.H., Fresh fish - quality and quality changes, Food and Agriculture Organization of the United Nations, Danish International Development Agency, Rome, 1988. 62 Jensson, P., "Coordination of Fishing and Fish Processing". Unpublished paper, Engineering Faculty, University of Iceland, 1990. Jensson, P., "Daily production planning in fish processing firms". European Journal of Operational Research, 36, 410-415, Elsevier Science Publisher B.V. North Holland, 1988. Mikalsen, B. and T. Vassdal, "A short term production planning model in fish processing", in (Eds) Haley, K.B., Applied Operations Research in Fishing, Plenium Press, New York, NY, 1981. Sigvaldason, H. et al., "A Simulation Model of a Trawler as a Raw Material Supplier for Freezing Plants in Iceland", Technical report, University of Iceland, 1969 (in Icelandic). Teitsson, A., "Processing onboard on Factory Trawlers". Technical Report, Icelandic Fisheries Laboratories, 1990 (in Icelandic). APPENDICES APPENDIX A SIMULATION MODEL: PROGRAM LISTING AND EXAMPLE OUTPUT REPORT 63 Appendix A-i: Flowcharts Program logic START Set variables egad to zero rod mammas <FOR aII Maims sad> al days %Mem Go Catch(); patents end amipn catch to die amid < FOR al days > FOR al trawlers Sum op for daily report, trip report aid oshadde Print out reports END OF PROGRAM > 64 Decision Rule logic Fundion DECISION° START IoniaIke pounionas < FOR all moaners Find max calk max nipdaya, min quality and no. of trawlers with same max trip days. No wed to assign trawler to landings _of RETURN to calling function ) 65 Appendix A-2 : Program listing /***************** 'include *include *include *include MODULE TOGARI-6.0 ***********#*****/ (main program) <stdlib.h> <stdio.h> <math.h> <console.h> *define *define DRYS SHIP /* This Is a copy of the main progras /* which Is located In the nodule It will appear again /* Togar1-15.c. /* In the nodule at its correct place 360 4 /************************* */ */ */ */ **************************/ MAIM PROGRAM main() char int int FILE char answer = 0; td_catch; control, quota, ytd_catch[SHIP], tripcatch[SHIP]; *consolePtr; c; gFirstPtr = NULL; gLastPtr = HULL; */ /* Initialize variables /* Set parameters and values */ Zero(); Data(); gDay = 0; gShip = 0; td_catch = 0; for( gShip = 0; gShip < SHIP; gShip++ ) ytd_catch[gShip] = 0; tripcatchIgShipl = 0; } srand( clock() ); /* /* Go_Catch(); /* Go_Status(); /* Summary(); printf("Do you want doily report (y/n) ? "); scanf("Xlc",&answer); /* cecho2file("Trawl_output",0,stdout); if(answer == 'y') /* Report(); /* List(); /* Schedule(); /* Print_Inv(); } Initialize random generator */ Generate catch and catch combination */ Control trawler operation */ Summarize results for report generator*/ Print reports to FILE: Print Print Print Print Trawl_output */ daily report trip summary report landing schedule inventory report */ */ */ */ /*********************************************************************************/ 66 /***************** *include *include *include *include *define *define MODULE TOGRRI-8.0 *****************/ <stdlib.h> <stdio.h> <math,h> <console.h> DAYS SHIP 360 4 struct TripInfo { trawler; tripnum; tripend; int triplength; int trip_cod; float trip_had; float float trip_per; trip_pol; float tripcatch; int *next; struct Tripinfo *gFirstPtr, *gLastPtr; int int ) gDay, gShip, gYtdDays[SHIP]; gCod[DAYS][SHIP], gHad[DRYS][SHIP], gPer[DAYS][SHIP], gPol[DRYS][SHIP]; gYtd_cod[SHIP],gYtd_had[SHIP],gYtd_per[SHIP],gYtd_pol[SHIP]; gDayCat[DAYSIISHIP], gControl[DAYS][SHIP], gYtdtr1p[SHIP], gYtd_Catch[SH1P]; gTd_trip[SHIP], gA_shore[SH1P], gfishing[SHIP],gYtdtrip[SAIP]; gTripCatch[SH1P], g_occupled; gcluota[SHIP], gCapacity[SHIP], glnventory, gInv_status[DAYS], gCur_prodrate; int float float int int int int /******************** INITIALIZING UFIRIABLES Zero() { for( gDay = 0; gDay < DAYS; gDay++ ) { for( gShip = 0; gShip < SHIP; gShip++ ) { gCod[gDay][gShip] = 0; gHad[gDay][gShip] = 0; gPer[gDay][gShip] = 0; gPol[gDay][gShip] = 0; gDayCat[gDay][gShip] = 0; gControl[gDay][gShip] = 0; gTd_triggShip] = 0; gTripCatch[SHIP] = 0; gA_shore[gShip] = 0; gfishing[gShip] = 0; gYtdtrip[gShip] = 0; gYtd_cod[gShip] = 0; gYtd_had[gShip] = 0; gYtd_per[gShip] = 0; gYtd_pol[gShip] = 0; gYtd_Catch[gShip] = 0; } } } *****************************/ 67 /*************************** ******************************/ DATA FOR TRAWLER Data() { char svar; gOuota[0] - 3317; gOuota[1] = 3250; Ouota[2] - 2978; gluota[3] = 4154; gCapacity[0] = 195; gCapacity[1] = 190; gCapacIty[2] = 200; gCapacity[3] = 250; glnventory = 300; gCur_prodrate = 55; } /******************* Finds if trawler has landingpermit or not *******************/ LandPerm() { weekday, mintrip, maxtrlp, landpermit; int mintrIp - MinDay(); maxtrlp = MaxDay(); weekday - FindDay( gDay ); landpermit - 0; If(( weekday == 0 ) landpermit = 0; else II /* Find the day of the week *1 ( weekday == 6 )) { if( gcluota[gShip] > gYtd_Catch[gShip] + 30 /* Is ) there enough quota left for fishing */ { if( gCapacity[gShip] > gTripCatch[gShip] + 15 ) /* Check on capacity *1 { If(( gTd_trip[gShip] >= mintrip ) && ( gTd_triggShip] < maxtrip )) { if( g_occupled == 0 landpermit = 1; else landpermit = 0; ) /* IF landing facility is not occupied */ */ /* then permit landing /* ELSE not (only one trawler at a tIme)*/ } else /* IF trawler has reached its max then land { if( gTd_trip[gShip] >= maxtrip ) landpermit = 1; else landpermit . 0; } } else landpermit = 1; landpermit = 1; } else } return (landpermit); } *1 68 /******************* Checks whether to assign catch to trawler or not ************/ /******************* ************/ and controls operation of the trawler Go_Status() flag, stress, rawMaterial, fishing, weekday, landpermit, int for( gDay = 0; gDay < DRYS; gDay++ landrequire[SHIP]; ) /* Set landing unit available */ /* This loop decides what trawler */ /* does each day (land/fish) */ g_occupled = 0; for( gShip = 0; gShip < SHIP; gSh1p++ ) landpermit = LandPerm(); /* Find if(( landpermit == 1 ) && (g_occupied == 0)) landrequire[gShip] = Go_land(); if(gQuota[gShip] <= gYtd_Catch[gShip]) /* landrequire[gShip] = 1; if(gCapacity[gShip] <= gTripCatch[gShip]) landrequire[gShip] = 1; /* If trawler has landing permit*/ Returns 1 if ship to land, else 0 Returns 1 if ship to land, else 0 else /* Trawler has no permit, set to 0 */ landrequire[gShip] = 0; if( landrequire[gShip] == 1) g_occupled = 1; for( gShip = 0; gShip < SHIP; gShip++ ) if( gDay < /* On first day (0) variables initialized */ 1) /* this happens only once { */ gR_shore[gShip] = 0; gTd_trip[gShip] = 0; if((landrequire[gShip] == 0) && (gR_shore[gShip] == 0)) /* IF trawler required not to land and he */ /* is gfishing[gShip] = not landing, he keeps on fishing 1; /* ELSE he is landing */ else gfishing[gShip] = 0; if( landrequire[gShip] == 1 ) /* This is to prevent balancing the */ /* inventory on the second day*/ flag = 1; Inv_update( flag, gShip ); /* Update inventory balance */ } If((gfishIng[gShip] == 0) && (gR_shore[gShip] < 2 )) If(gR_shore[gShip] == 0) /*Set landing unit busy on first day of landing g_occupied = 1; else g_occupied = 0; if( (DRYS - gDay) < MaxDay()) gfishing[gShip] = 0; gR_shore[gShip] = 1; /* on second day it is free again */ /* IF there are less than eight days */ /* left of period trawler does not go */ */ /* out fishing aglan */ 69 else { gfishing[gShip] = 0; gR_shore[gShip]++; /* Count landing days */ stress - TimeUalue( gShIp ); rawMaterial - Inv_Capacity(0); if(( stress == 0 ) II ( rawMaterial -- 0 )) */ /* Check on timevalue and inventory gR_shore[gShIp ] = 1; */ /* stress: if 0 then trawler short on quota and will stay in harbour one more day */ /* rawMaterial: if 0 then plant has enough raw day *1 /* material and trawler will stay In harbour *1 I } } /* ELSE the trawler is able to go fishing again else */ { gfishing[gShip] = 1; gR_shore[gShip] = 0; } /* Set contra/status = status */ gControl[gDay][gShip] = gfishing[gShip]; if(gControl[gDay][gShip] == 1) { /* Counts the days trawler has spent on sea */ gTd_trip[gShlp]"; /* Accumulates the tripcatch */ gTripCatch[gShip] += gDayCat[gDay][gShip]; gYtd_Catch[gShip] += gDayCat[gDay][gShip]; /* Accumulates the yeorcatch */ } else 1 /* Set counter to 1 /* Set trip amount to 0 gTd_trip[gShip] = 0; gTripCatch[gShip] = 0; */ */ } if( gDay < SHIP ) If(( gDay != gShip ) && ( gShip > gDay )) { /* This routine is so that only */ /* one trawler goes out per day */ /* at the beginning of the year */ gControl[gDay][gShip] = 0; gTripCatch[gShip] = 0; gYtd_Catch[gShip] = 0; } if( gDay == gShip ) gTd_trip[gShip] = 1; 1 gShip - 0; flag = 0; Inv_update( flag, gShip ); gInv_status[gDay] = glnventory; /* Set gShip = 0 to avoid dividing error */ /* At end of each day, inventory is depleted */ /* with that day production rate } } /**************************** REPORT SUBROUTINE ****************************/ void Report() { 0 0 0 printf(" 0 0 0 printf("\n"); printf(" Day Trawler Cod Haddock ..... = printfi" for( gDay =0; gDay < DRYS; gDay++ ) Pearch == == \n"); Pollock Total\n"); \n"); /* Counts through the days *1 { for( gShip =0; gShip < SHIP; gShip++ { switch( gControl[gDay][gShip] { case 0: ) ) /* Steps through the trawlers *1 ml 70 printf("X3d X6d Trawler is landing catch\n", g0ay+1,gShip+1); break; case 1: printf("X3d X6d X(1.1f X7.1f ULU X7.1f Xl1d\n', gDay+1,gShip+1, gCod[gDay]EgShip], gHad[gDay]IgShip], gPer[gDay][gShip], gPol[gDay][gShipl, gDayCat[gDayl[gShip]); ) } printfi" ) printW\n"); } /*********************** SUMMARIZE RESULTS *****#**********************/ Summary() { struct Tripinfo *tripPtr; int daycount, dayOnSea, tripcount, trip_catch,ytd_catch; float codcount, hadcount, percount, polcount; float ytd_cod, ytd_had, ytd_per, ytd_pol; codcount = 0; hadcount = 0; percount = 0; polcount = 0; ytd_cod = 0; ytd_had = 0; ytd_per = 0; ytd_pol = 0; for( gShip = 0; gShip < SHIP; gShip++ /* ) Looping for each trawler */ { daycount = 0; dayOnSea = 0; tripcount = 0; trip_catch = 0; ytd_cod = 0; ytd_had = 0; ytd_per = 0; ytd_pol = 0; ytd_catch = 0; for( gDay = 0; gDay < DRYS; gDay++ ) /* Total quantity of different species */ */ /* for looped for each trawler { /* Is trawler landing */ if(gControl[gDay]EgShIal == 0) { if( gDay == 0 ) gControl[gDay-ll[gShiP] = 0; /* IF it is 1st day then set = 0 */ HU gDay < SHIP ) && (gControl[gDay-1]EgShIp] == 0)) /* Do not count first days year as trip */ { daycount = 0; trip_catch = 0; codcount = 0; hadcount = 0; percount = 0; polcount = 0; ) else /* How is OK to count trips and data */ { if( (gControl[gDay][gShip] == 0) && ( geontrol[gDay-ll[gShip] == 1)) ( tripcount++; tripPtr = malloc( sizeof(struct Tripinfo) ); If ( tripPtr == MULL ) { /* First day ashore */ /* Counts number of trips */ /* Allocate memory */ 71 printf('Out of memory'); exit(0); /* /* } tripPtr->trawler = gShIp + 1; tripPtr->tripnum = trIpcount; trIpPtr->trIpend - gDay; trIpPtr->trIplength = daycount; trIpPtr->trIp_cod = codcount; tripPtr->trip_had = hadcount; tripPtr->trip_per . percount; tripPtr->trip_pol = polcount; trIpPtr->tripcatch = trip_catch; MoveHext(tripPtr); /* /* This is FIRST LANDING DRY */ Number of trawler */ Trawler comes in on first landing day*/ Update values for trip */ } if( (gControl[gDayligShIp] == 0) && ( gControl[gDay-11[gShip] == 0)) ( daycount = 0; trip_catch = 0; codcount = 0; hadcount = 0; percount = 0; poi count .0; */ all trip-variables are set to 0 */ /* On SECOND LANDING DRY /* 1 } } else ( daycount++; dayOnSea++; codcount geod[gDaylEgShIpl; hadcount gHad[gDayllgShIpl; percount gPer[gDay] [gShIpl; poi count gPol[gDay][gShip}; ytd_cod gCod[gDay][gShip}; ytd_had gHad[gDay][gShip]; ytd_per gPer[gDay][gShip}; ytd_pol gPol[gDay]EgShiP}; trip_catch += gDayCat[gDay]IgShipl; ytd_catch += OnCat[gDay][gShipl; /* /* */ Count days on trip Update and count for each day */ } 1 gYtdDays[gShip] -gYidtrIpEgShip} = gYtd_cod[gShip] = gYtd_had[gShip] = gYtd_per[gShip] gYtd_pol[gShip] = gYtd_Catch[gShip] dayOnSea; tripcount; ytd_cod; ytd_had; ytd_per; ytd_pol; = ytd_catch; /* Read in cumulated data on each trawler */ /* Total number of days spent on sea fishing*/ /* Total number of full trips during period */ Total quantity of different species */ /* Total catch over the period */ /* } 1 /************************* MoveNext( struct Tripinfo Move to next struct *curPtr) ( ( gFirstPtr == HULL ) gFIrstPtr = curPtr; else gLastPtr->next = curPtr; If gLastPtr = curPtr; curPtr->next = NULL; 1 ***************************/ 72 /******************** LIST AND PRINT SUMMARY RESULTS ***********************/ void List() ( struct TrIpInfo *curPtr; tempShip - 0, tempTripcount = 0; int If( gFIrstPtr == NULL ) { printf("No data entered yet\n"); } else { printf("\n"); printf(" printf("\n"); curPtr = gFirstPtr; printf(" Trawler Trip* Total\n'); TRIP SUMMARY FOR EACH TRAWLER \n"); Day-in Days Cod Haddock Pearch Pollock printfr---" 1 while{ curPtr != NULL ) ( printf("X4d %811 X6d red %6,1f %6.1f %7,1f %13,1f %6d\n", curPtr->trawler, curPtr->tripnum,curPtr-)tripend+1,curPtr->triplength, curPtr->trip_cod , curPtr->trip_had,curPtr->trip_per, curPtr->trip_pol, curPtr>tripcatch); tempShip = curPtr->trawler; tempTripcount = curPtr->tripnum; curPtr = curPtr->next; if(tempShip != curPtr->trawler) { printfr ----\n"); printfr Total %5d %13d %6.1f %6,1f %7.1f %8.1f %6d\ntempTripcount, etdDays[tempShip - 1], gYtd_cod[tempShip - 1], gYtd_had[tempShip gYtd_per[tempShip - 1], gYtd_pol[tempShip - 11, gYtd_Catch[tempShip printf("\n"); if(curPtr != NULL) 1 printf(" Trawler Trip* Day-in Days Cod Haddock Pearch Pollock Total\n"); \ printf(" n'); } } } 1 } /***************** SCHEDULE OF TRAWLERS LISTED AND PRINTED *******************/ Schedule() { printf("XmtwtfmtwtfUmtwtfUmtwtfUmtwtfUmtwtf}0(mtwtfUmtwtfUmtwtfM\n"); printf(' for( gShip = 0; gShip < SHIP; gShip++ { for( gDay = 0; gDay < 63; gDay++ ) ( If( gControl[gDay][gShip] == 0 printf('-'); else printf("f"); ) \e}; ) 73 } prIntf("\n"); 1 printf("\n"); if(DRYS > 62) { printf('XmtwtfUmtwtfUmtwtfUmtwtfUmtwtfUmteMmtwtfXXmtwtfUmtwtfX\n"); printf(' for( gShip = 0; gShIp < SHIP; gShip++ ) \n"); { for( gDay = 63; gDay < 126; gDay++ ) { If( gControl[gDayl[gShIp] == 0 ) prIntf('-"); else printf("f"); printf(\n"); 1 ) prIntf('\n'); } If(DRYS > 125) { printf('XintwtfUmtwtfUmtwtfUmtwtfUmtwtfXXmtwtfUmtwtfUmteMmtwtfX\n'); printf(' for( gShip = 0; gShIp < SHIP; gShIp++ ) ( for( gDay = 126; gDay < 189; gDay++ ) { If( gControl[gDayl[gShIp] == 0 ) printf('-'); else printf("f'); 1 printf("\n"); } printf("\n"); } If(DRYS > 188) { printf("XmtwtfUmtwtfnmtwtfnmtwtfUmtwtfUmtwtfUmtwtfMmtwtfUmtwtfX\n"); printf(' \n'); for( gShip = 0; gShip < SHIP; gShip++ ) ( for( gDay = 189; gDay < 252; gDay++ ) ( If( geontrol[gDay][gShip] == 0 prIntf('-'); ) else printf(*f"); 1 prIntf("\n'); } printf("\n'); 1 If(DAYS > 251) { prIntf("XintwtfUmtwtfUmtwtfUmtwtfUmtwtfUmtwtfUmtwtfXXmtwtfUmtwtfX\n"); printf(' \n"); for( gShip = 0; gShlp < SHIP; gShIp++ ) { for( gDay = 252; Oily < 315; gDay++ { If( gControl[gDay][gShip] == 0 printf("-'); else ) ) 74 printWf"); printf("\n"); printfr\n"); If(DRYS > 314) printf("XmtwtfUmteMmtwtfUmtwtfUmtwtfUmtwtfUmtwtfXX\n"); printfr for( gShip = 0; gShip < SHIP; gShip++ ) { for( gDay 315; gDay < 361; gDay++ ) 1 if( gControl[gDay][gShip] == 0 printf('-'); ) else printf("f"); printf("\n'); /*********************** ************************/ MAIM PROGRAM main() char int Int FILE char answer = 0; td_catch; control, quota, ytd_catch[SHIP], tripcatch[SHIP]; *consolePtr; c; gFirstPtr = HULL; gLastPtr = HULL; Zero(); Data(); gDay = 0; gShip = 0; td_catch = 0; */ /* Initialize variables /* Set parameters and values */ for( gShip = 0; gShip < SHIP; gShip++ ) ytd_catch[gShip] = 0; tripcatch[gShip] = 0; /* srand( clock() ); 1* Go_Catch(); /* Go_Status(); 1* Summary(); printf("Do you want daily report (yin) ? "); scanf("%lc",&answer); /* cecho2file("Trawl_outpur,O,stdout); if(answer == 'y') Report(); List(); Schedule(); Print_Inv(); /* /* /* /* Initialize random generator */ Generate catch and catch combination */ Control trawler operation */ Summarize results for report generator*/ Print reports to FILE: Trawl_output */ Print Print Print Print daily report trip summary report landing schedule inventory report */ */ */ */ /*********************************************************************************/ 75 /**************** MODULE GEHCRTCH.0 *****************/ *include <stdlib.h> *include <stdio.h> slnclude <math,h> *define *define DAYS 360 SHIP 4 extern Int gDay, gShip; extern float gUld[DAYS][SHIP}, gHadIDAYSHSHIPJ, gPerIDAYSl[SHIP], gPolIDAYSIESHIP]; extern int gDayCatEDAYSHSHIP], gYtd_catchISHIPLgTripCatch, gCapacity; /**************************** Month( FIND MONTH OF YEAR *****************************/ Int caller ) { int float day, prodrate; pro_sh_cr,mean, catchrate, var; If( gDay <= 31 ) /* January */ { catchrate = 858.5; var = 7225.1; pro_sh_cr = 0.8560; prodrate = 100; } If(( gDay > 31) && (gDay <= 59)) /* February */ ( catchrate = 943; var = 62531.9; pro_sh_cr = 0.9406; prodrate = 107; } if(( gDay > 59) && (gDay <= 90)) /* March */ { catchrate = 1177.7; vor = 37863.9; pro_sh_cr = 1.1751; prodrate = 121; } if(( gDay > 90) && (gDay <= 120)) /* April */ { catchrate = 1139.7; var = 54720.7; pro_sh_cr = 1.1372; prodrate = 145; } if(( gDay > 120) && (gDay <= 151)} /* May */ ( catchrate = 1369.5; var - 113849.1; pro_sh_cr - 1.3665; prodrate = 155; } if(( gDay > 151) && (gDay <= 181)} { cotchrate = 1184.7; var - 32147.5; pro_sh_cr = 1.1821; prodrate = 165; } /* June */ 76 if(( gDay > 181) && (gDay <= 212)) /* July */ { catchrate = 1256.5; var = 38649.1; pro_sh_cr = 1.2537; prodrate = 135; } if(( gDay > 212) && (gDay <= 243)) /* August */ { catchrate = 1385.3; vor = 90709.9; pro_sh_cr = 1.3823; prodrate = 160; } if(( gDay > 243) && (gDay <= 273)) /* September */ { catchrote = 1020.2; var = 25223.8; pro_sh_cr = 1.0180; prodrate = 145; } if(( gDay > 273) && (gDay <= 304)) /* October */ { catchrate = 941.8; vor = 15752.6; pro_sh_cr = 0.9397; prodrate = 130; } if(( gDay > 304) && (gDay <= 334)) /* November */ 1 cotchrate = 882.7; var = 17698.7; pro_sh_cr = 0.8808; prodrate = 107; } if(( gDay > 334) && (gDay < 365)) /* December */ { catchrote = 799.2; vor = 19213.0; pro_sh_cr = 0.7974; prodrate = 100; } if(caller == 0) /* To identify calling function and return right value */ { mean = catchrate; return( mean ); /* Return catch rate to CatchGenerator */ } if(caller == 1) { /* Return seasonal fluctuation to Production rate */ return(prodrate); } } /******************* Catch Generator ***********************/ Go_Catch() { float int random, sum, norm, temp, catchrote, cat_coeff, partl, part2, port3; I, j, td_catch, average[DAYS]; for( gShip = 0; gShip < SHIP; gShip++ ) ( for( gDay = 0; gDay < DAYS; gDay++ } { average[gDay] - 0; 1 77 for( I = 0; I < 3; i++ ) { cat_coeff = 0; for( gDay = 0; gDay < DRYS; gDay++ ) { random = 0; sum = 0; norm = 0; temp = 0; td_catch = 0; partl = 0; part2 = 0; part3 = 0; catchrate = Month(0); for( j = 0; j < 12; j++ ) /* Find avg. catch rate for particular month */ f random = rand(); sum = sum + random/32768; /* Generate normal distribution *1 1 norm = sum - 6; partl = 0.5233 * catchrate; part2 = log(part1); part3 = 0.8326 * norm; temp = exp(part2 + part3); cat_coeff = 0.26 * cat_coeff + temp; td_catch = floor(cat_coeff * 12.24/1000); if(td_catch < 0) td_catch = 0; average[gDay] += td_catch; If( == 2 i ) f td_catch = flooriaverage[gDay1/3); gDayCat{gDayligShip] = td_catch; CatchComb( td_catch ); /* Calculate the average catch rate */ */ /* for three runs } 1 } 1 1 /*********************** CatchComb( int td_catch Generate catch combination *************************/ ) { long int random; partstart; random = rand(); partstart = (random * 50)/32768; /* Generate number between 0 and 50 */ gCod[gDay][gShip] = td_catch * (partstart + 25)/100; /* cod between 25 and 75% */ gHad[gDay][gShip] = 0; gPer[gDay][gShip] = 0; gPol[gDay][gShip] = td_catch - gCod[gDay]EgShip] - gHad[gDay]EgShip} gPer[gDay][gShip]; } /*********************************************************************************/ 78 /**************** *****************/ MODULE FINDORY.0 *include <math,h> FindDay( int gDay int double ) weekday = 0; divide = 0; if( gDay < 7 ) weekday = gDay; else /* Find what weekday it is */ /* Sunday = 0, Monday = /* Wednesday = 3, /* Friday = 5, 1, Tuesday = 2 */ Thursday = 4 Saturday = 6 */ */ { if( gDay == 7 ) weekday = 0; if( gDay > 7 ) divide = floor(gDay/7); weekday = gDay - (7 * divide); return( weekday ); /* Return number of weekday * 1 /*********************************************************************************/ /**************** /******************* MODULE MIMMRXDRY.0 Find minimum cycletime *****************/ *********************************/ MinDay() int long trawlcap,inventory,mincap,period,mincycle; plant_tot, trawl_tot; trawlcap = 20; /* trawler capacity per day */ /* max amount of inventory plant can hold */ inventory = 20; mincap = 20; /* minimum capacity of plant */ period = 14; /* scheduling period */ plant_tot = (mincap + inventory)*period; /* total plant capacity */ trawl_tot = trawlcap * SHIP; /* total traweler capacity */ mincycle = floor(plant_tot/trawl_tot); /* min cycletime */ mincycle = 5; /* elncycle set to fixed value */ return( mincycle ); /******************* Find maximum cycletime *********************************/ MaxDay() { int long trawlcap,inventory,maxcap,period,maxcycle; plant_tot, trawl_tot; /* trawler capacity per day */ trawicap = 20; inventory = 20; /* max amount of inventory plant can hold */ maxcap = 50; /* maximum capacity of plant */ period = 14; /* scheduling period */ /* total plant capacity */ plant_tot = (maxcap + inventory)*period; trawl_tot = trawlcap * SHIP; /* total traweler capacity */ maxcycle = floor(plant_tot/trawl_tot); /* max cycletime */ /* maxcycle set to fixed value */ maxcycle = 15; return( maxcycle ); 1 /*********************************************************************************/ 79 /***************** *****************/ MODULE DECISIOH.0 'Include <stdlib.h> 'Include <stdio.h> 'include <math.h> DRYS SHIP 'define 'define extern extern int int 360 4 gTripeatch[SHIP], gTd_trip[SHIP], gDay, gShip; glnventory, gCur_prodrate, g_occupled; /************************ Go_land() DOES TRAWLER GO LANDING ************************/ { maxtrip, weekday, landpermit, numship, goland; maxtripday, maxtripship, maxeatch, maxeatchship, costship, minQualityship, compete, bypass; minQuality, costlndex, quality, q_Index; int int int float goland = 0; maxtrip = MaxDay(); weekday = FindDay( gDay ); numship = 0; tempory; /* Find max allowed day on sea */ */ /* Find the day of the week maxtripday = gTd_triggShip]; maxtripship = gShip; maxeatch = 0; maxCatchship = gShip; minQuality = 100; minQualityship = gShip; /* Set base quality equal to 100 */ costlndex = gTripeatch[gShipl/gTd_triggShipl; costship = gShip; compete = 0; tempory = gShip; for( gShip = 0; gShip < SHIP; gShip++ ) { landpermit = LandPerm(); if(( landpermit == ) && ( g_occupled == 0 )) 1 { numship++; if( costlndex < gTripeatch[gShip]/gTd_triggShip]) ( costlndex = gTripCatchIgShip1/gTd_triggShip]; costship = gShip; /* find ship with highest catchrate */ 1 q_Index = Quality( gShip ); quality = q_indez/100; if(quality < minQuality ) ( minQuality = quality; minQualityship = gShip; /* find ship with lowest quality */ 1 if( maze...itch < gTripeatch[gShipl ) 1* find ship with most catch */ { maxeatch = gTripCatch[gShiPl; maxeatchship = gShip; 1 if( maxtripday < gTd_trip[gShipl { maxtripday = gTd_triggShip]; maxtripship = gShip; } ) /* find ship with max days on sea */ 80 If( gl.d_trip[gShip] > compete++; 11 ) /* count competing trawlers */ gShip = tempory; /* set gShip back to correct value */ if( maxtripday < 7 ) If(gInventory < (1.5 * gCur_prodrate )) /* will there be AM shortage If( weekday == 5 goland - 0; else ) If( gShip == maxCatchship ) goland = 1; else goland = 0; 1 else goland = 0; if( maxtrIpday > 11 ) If(gInventory < (1.5 * gCur_prodrate )) if(( gShip == maxtripship ) II /* will there be AM shortage ( gShip == minClualityship)) If( abs(gId_trip[maxtrIpship] - gTd_trip[minQualityship]) < 2) if(gShip == minQualityship) goland = 1; else goland = 0; else if(gShip == moxtripship) goland = 1; else goland - 0; else goland - 0; else If( compete > 1 ) bypass = 0; if(( weekday == 2) && (compete == 4)) bypass = 1; If(gShip == maxtripship) goland = 1; else goland = 0; 81 If(( weekday == 3) && (compete >= 3)) { bypass = 1; If(gShip == maxtrlpship) goland = 1; else goland = 0; } HU weekday == 4) && (compete >= 2)) { bypass = 1; If(gShip == maxtripshlp) goland = 1; else goland = 0; 1 If(( weekday == 5) && (compete > 1)) { bypass = 1; if(gShip == maxtripship) goland = 1; else goland = 0; } if(( maxtrip > 13 && ( bypass == 0)) ) /* IF 14 or 15 then land immy */ { bypass = 1; if(gShip == maxtripship) goland = 1; else goland - 0; ) If( bypass == 0 goland = 0; ) } else { If( gShip == maxtripship ) { bypass = 0; if(( weekday == 4) 11 ( weekday == 5)) { bypass = 1; if( maxtripday > 12 goland = 1; else goland = 0; ) } If(( maxtripday == 14 { bypass = goland = 1; 1; } if( bypass == 0 goland = 0; } else goland = 0; } } 1 ) ) II ( maxtripday == 15)) 82 if(( maxtripday > 6 ) && ( maxtripday < 12 )) ( iggInventory < (1.5 * gCur_prodrate )) /* will there be AM shortage *1 ( if( weekday == 5 goland = 0; else ) { If( gShip == minQualityship ) goland = 1; else goland = 0; } } else { if{( weekday == 4) && ( maxtripday == 11)) 1 if( gShip == maxtripship ) goland = 1; else goland = 0; 1 else goland = 0; } } return( goland ); } /*********************************************************************************/ 83 /******************* MODULE OURLITY.0 *********************/ include <stdlib.h> 'include <stdio.b> include cmath.h> 360 DRYS SHIP "define *define extern int 4 gTripCatchISHIP], gTd_trip[SHIP], gDayCat[DAYSJ[SHIP], gDay, gShip; FUNCTION THAT CALCULATES RELATIUE QUALITY /**************** Quality( int gShip ) *********************/ i, d. 0, q_Index; ratio, acc_quality, hlutfall; int float d = gDay - gTd_tria gShip ] /* to correct tripcount and day discrepancy */ ; 0 = 0; acc_quality = 0; hlutfall = 0; ratio = 0; for( i = (g0ay-1); i > (d-1) ; ) { D++; hlutfall = gDayCat[i][gShip],/gTripCatch[gShip]; if(( D > 0 ) && ( D < 7 )) ratio = hlutfall * 100; if( D == 7 ) { ratio = hlutfall * 99 } if( 0 == 8 ) { ratio = hlutfall * 97 if( 0 == 9 ) ratio = hlutfall * 95; if( D == 10 ) { ratio = hlutfall * 91; if( 0 == 11 ) ratio = hlutfall * 85; if( D == 12 ) { ratio = hlutfall * 78; if( D == 13 ) ratio = hlutfall * 70; if( 0 == 14 ) { ratio = hlutfall * 61; if( 0 == 15 ) { ratio = hlutfall * 50; acc_quality + ratio; q_Index = acc_quality * 100; return ( q_Index ); /***************************************************************************************/ 84 /**************** MODULE PRODUCTIOH.0 *****************/ *include <stdlib.h> *include <stdio.h> *include <math.h> *define *define DAYS SHIP extern extern extern 360 4 gTripCatch[SH1P], gTd_trip[SHIP],gYtd_Catch[SHIP], gOuota[SH1P]; int gDay, gShip, ginventory, gInv_status[DAYS], gCur_prodrate; float gCod[DAYSUSHIP], gHad[DAYS][SHIP], gPol[DAYSIISHIN, int gPer[DAYSIISHIPL /**************** FUNCTION THAT CALCULATE PLANT PRODUCTION RATE *****************/ PlantProd( int gShip ) { tripcod, triphad, trippol, tripper; i, d, prod_rate,chance; rate_cod, rate_had, rate_pol, rate_per; inv_status, base_cod, base_pol; ratio_cod, ratio_had, ratio_pol, ratio_per; float int double int float tripcod = 0; triphad = 0; trippol = 0; tripper = 0; inv_status = Inv_Capacity(1); switch( inv_status ) ( case 2: base_cod base_pol break; case 3: base_cod base_pol break; case 4: base_cod base_pol break; case 5: base_cod base_pol = 18; = 26; = 27; = 38; = 35; = 42; = 47; = 47; } chance = rate_cod rate_had rate_pol rate_per Nonth(1); = floor(base_cod * chance/100); = floor(35 * chance/100); = floor(base_pol * chance/100); = floor(70 * chance/100); d = gDay - gTd_triggShip]; for( 1 = (gDay-1); i > (d-1); I-- { tripcod triphad trippol tripper += += += += ) /* adjust tripcount and daycount */ /* to prevent discrepancy */ gCod[i][gShip]; gHad[1][gShip]; gPol[i][gShip]; gPer[i][gShip]; } if(( gTripCatch[gShip] == 0 ) II (tripcod == 0 )) ( gTripCatch[gShip] = 1; /* this is to avoid dividing by 0 *1 prod_rate = 1; printf("Something wrong"); } 85 /* find weighted ratio of the catch */ else ratio_cod ratio_had ratio_pol ratio_per prod_rate = tripcod/gTripCatch[gShip]; = triphad/gTripCatch[gShip]; = trippol/gTripCatch[gShip]; = tripper/gTripCatch[gShip]; = floor( ratio_cod * rate_cod + ratio_had * rate_had + ratio_pol * rate_pol + ratio_per * rate_per); return(prod_rate); /*************** FUNCTION THAT UPDATES INVENTORY STATUS Inv_update( int flag, int gShip ) ************************/ /* Flag tells whether to add or deduct from inventory */ newinventory, new_prodrate, get_prodrate, weekday; int weekday = FindDay( gDay ); if( flag == 0 /* flag = 0 -- there is simple deduction ) if( weekday != 0 ) /* on all days except Sunday deduct if((gInventory - gCur_prodrate) < 0) glnventory = 0; else glnventory -= gCur_prodrate; /* Deduct daily production rate from inventory else /* flag I= 0 -- there is new trawler landing, change the rate { get_prodrate = PlantProd( gShip ); newlnventory = glnventory + gTripCatch[gShip]; new_prodrate = (gInventory * gCur_prodrate + gTripCatch[gShip] * get_prodrate)/newInventory; glnventory = newlnventory; gCur_prodrate = get_prodrate; ", gTripCatch[gShip]); printf('Incoming: %5d printf("Inventory: %5d Prodrate: %5d\n",gInventory, gair_prodrate); /***************** FUNCTION THAT CALCULATES TIME VALUE TimeValue(int gShip) ***********************/ { int float stresstrawl, stressplant; quota, ytd_catch, baseUalue, timeUalue; quota = gQuota[gShip]; ytd_catch = gYtd_Catch[gShip]; baseValue = quota/DRYS; timeValue = (quota - ytd_catch)/(DRYS - gDay); /* Timevalue can If( (timeUalue + 0.5) < baseValue ) stresstrawl = 0; /* Trawler has less quota/day /* and spends therefore time ashore else stresstrawl = 1; /* Trawler has more quota/day /* and has to keep fishing to get his return(stresstrawl); deviate a little than at BOP */ */ than at BOP */ quota */ 86 /***** FUNCTION THAT ESTIMATES CURRENT 1NUENTORY AND PROSPECTIVE LANDINGS Inv_Capacity( Int flag ) ****/ { full_load,temp,onsea_Inv,onland_inv, weekday, tot_RawMat; int weekday = FindDay( gDay ); temp = gShip; onsea_inv = 0; for( gShip = 0; gShip < SHIP; gShip++) If( gTd_triggShip) >= 5) onsea_Inv += gTripCatch[gShip]; /* FIND tripcatch for all trawlers that */ /* are eligible to land today */ gShip = temp; onland_lny = ginventory + gTripCatch[gShip]; onsea_Inv -= gTripCatch[gShip]; if( flag == 1) { if( onland_inv < 100 ) { if( onsea_Inv < 100 ) full_load = 2; if(( onsea_Inv > 99) && /* Min_min prodrate for both species ( onsea_Inv < 200 )) if(( weekday == 4)11( weekday == 5 )) /* on Thursd and Friday more speed */ /* 75% possible prodrate for both species */ full_load = 4; else full_load = 3; If( onsea_Inv > 199 full_load = 4; /* Medium prodrate */ ) 1 if(( onland_inv > 99) && ( onland_Inv < 200 )) if( onsea_Inv < 100 ) full_load = 3; if(( onsea_Inv > 99) && ( onsea_Inv < 200 )) If(( weekday == 4)11( weekday full_load = 5; else full_load = 4; == /* Medium prodrate for both species */ 5 )) /* on Thursd and Friday more speed */ /* Max possible prodrate for both species */ /* 75% prodrate 1 if( onsea_Inv > 199 full_load = 5; if( onland_Inv > 199 if( onsea_Inv < 100 If((weekday == 1) full_load = 4; else full_load = 5; 1 else full_load = 5; ) /* Max possible prodrate */ ) ) 11 (weekday == 2)) /* 75% prodrate for both species */ 87 else { if(( glnventory > 240 ) 11 ( onsea_inv >240 )) /* is total raw mat */ /* available more than approx. *1 /* 7 day production. IF yes then wait */ full_load = 0; else full_load = 1; /* ELSE go fishing again */ } return( full_load ); } /*************** FUNCTION THAT PRINTS OUT INVENTORY STATUS ******************/ Print_Inv() { printf("1 3 4 5 6 7 2 printf( for( gDay = 0; gDay < 15; gDay++ ) 8 9 10 11 12 13 14 15\n"); \n'); { printf("nd",g1nv_status[gDayl); } printf("\m"); printf("\m"); if(DAYS > 14) { printf("16 17 18 19 20 21 22 printf(' for( gDay - 15; gDay < 30; gDay++ ) 23 24 25 26 27 28 29 30 rni: 39 40 41 42 43 44 45\n"); \n"); 54 55 56 57 58 59 60\n"); \n"); 69 70 71 72 73 74 75\n"); \n"); { printf("ne,ginv_status[gDay]); } printf("\n"); printf("\m"); } if(DAYS > 29) { printf("31 32 33 34 35 36 37 38 printf(" for( gDay = 30; gDay < 45; gDay++ ) { printf("nd",gInv_status[gDay]); } printf("\n"); printf("\n"); ) If(DAYS > 44) { printf("46 47 48 49 50 51 52 53 printf(* for( gDay = 45; gDay < 60; gDay++ ) { printf("X5e,gInv_status[gDay]); ) printf("\m"); printf("\n"); } If(DAYS > 59) { printf("61 62 63 64 65 66 67 68 printf(' for( gDay = 60; gDay < 75; gDay++ ) { printf("X5e,gInv_status[gDay]); } printf("\m"); prIntf("\n"); ) 88 If(DRYS > 74) 82 83 printf('76 77 78 79 80 81 printf(' for( gDay = 75; gDay < 90; gDay++ ) 84 85 86 87 88 89 90\n"); 100 101 102 103 104 105\n'); \n'); 115 116 117 118 119 120\n"); printf('%51:1",gInv_statua[gDay]); } printf("\n"); printf("\n'); if(DRYS > 89) 93 94 95 96 97 98 printf("91 92 printf( for( gDay = 90; gDay < 105; gDay++ ) 99 printf("X5dgInv_status[gDay]); } prIntf("\n"); printf("\n"); } if(DRYS > 104) printf("106 107 108 109 110 111 112 113 114 printf(" for( gDay = 105; gDay < 120; gDay++ ) printf('%5d",gInv_status[gDay]); } printf("\n'); prIntf("\n"); } If(DRYS > 119) printf("121 122 123 124 125 126 127 128 129 prIntf(" for( gDay = 120; gDay < 130 131 132 133 134 135\n"); \n"); 135; gDay++ ) printf("%5e,gInv_status[g0ayl); printf("\n"); printf("\n"); } If(DRYS > 134) printf("136 137 138 139 140 141 142 143 144 printf(' for( gDay = 135; gDay < 145 146 147 148 149 150\n'); \n"); 161 162 163 164 165\n'); 150; gDay++ ) printf(151:1",gInv_status[gDay]); printf("\n"); printf("\n'); } if(DRYS > 149) printf(' 151 152 153 154 155 156 157 158 159 160 printfr for( gDay = 150; gDay < 165; gDay++ prIntf("%51:1",gInv_status[gDay]); printf("\n'); prIntf(\n"); ) 89 If(DRYS > 164) { 177 178 179 180\n"); \n"); 182 183 184 185 186 187 188 189 190 191 192 printf(' 181 printf(' for( gDay = 180; gDay < 195; gDay++ ) 193 194 195\n"); printf("166 167 168 169 170 171 172 173 174 prIntf( for( gDay = 165; gDay < 180; gDay++ ) 175 176 { prIntf("X5e,gInv_status[gDay]); } printf("\n"); printf("\n"); } If(DRYS > 179) { ( printf("X5d",g1nv_status[gDay]); } printW\n"); printf("\n"); } if(DRYS > 194) 1 206 207 208 209 210\n"); \n"); 220 221 222 223 224 225\n"); 235 236 237 238 239 240\n"); printf(' 241 242 243 244 245 246 247 248 249 250 printf(' for( gDay = 240; gDay < 255; gDay++ ) 251 252 253 254 255\n"); printf(' 196 197 198 199 200 201 202 203 204 205 printf(' for( gDay = 195; gDay < 210; gDay++ ) ( printf("X5d',g1nv_status[gDay]); ) printf("\n"); printf("\n"); 1 If(DRYS > 209) { printf("211 212 213 214 215 216 217 218 219 printf(' for( gDay = 210; gDay < 225; gDay++ ) { printf("X5e,g1nv_3tatu3[gDay]); ) printf("\n"); printf("\n"); } If(DRYS > 224) { prIntf("226 227 228 229 230 231 232 233 234 prIntf(' for( gDay = 225; gDay < 240; gDay++ ) { printf("nd',gInv_status[gDay]); 1 printf("\n"); prIntf("\n'); } If(DRYS > 239) 1 ( printf("X5e,g1nv_3tatu3[gDay1); ) printf("\n"); Printf("\n"); } \n"); 90 if(DRYS > 254) 1 265 266 267 268 269 270\n"); \n"); 280 281 282 283 284 285\n"); printf(" 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300\n"); 311 312 313 314 315\n"); printf("256 257 258 259 260 261 262 263 264 printf(" for( gDay = 255; gDay < 270; gDay++ ) { printf("X5c1",gInv_status[000); } printf("\n"); printf("\n"); 1 If(DRYS > 269) ( printf("271 272 273 274 275 276 277 278 279 printf(' for( On = 270; gDay < 285; gDay++ ) { printf("%5dgInv_3tatu5[g0ay1); ) printf("\n"); prIntf("\n"); 1 if(DRYS > 284) ( printfr for( gDay = 285; gDay < 300; gDay++ ) 1 printf("ne,gInv_status[gDay]); } printf("\n"); printf("\n"); 1 if(DRYS > 299) ( printf("301 302 303 304 305 306 307 308 309 printf(" for( gDay - 300; gDay < 315; gDay++ ) 310 \n"); { printf("%al",gInv_status[gDay]); } printf("\n"); printf("\n"); 1 If(DRYS > 314) 1 printf(" 316 317 318 319 320 321 322 323 324 325 printf(" for( gDay = 315; gDay < 330; gDay++ ) 326 327 328 329 330\n"); 341 342 343 344 345\n"); { printf("ne,gInv_3tatus[gDay1); 1 prIntf("\n"); printf("\n"); } If(DRYS > 329) 1 printf(" 331 332 333 334 335 336 337 338 339 340 \xi"); printf( for( gDay = 330; gDay < 345; gDay++ { printf("X5d",gInv_status[gDay]); 1 printf("\n"); printf("\n"); 1 ) 91 If(DAYS > 344) { printf( 346 347 348 349 350 351 352 353 354 355 printf(" for( gDay = 345; gDay < 360; gDay++ ) 356 357 358 359 360\n"); ( printf(51:1",glnu_status[gDay]); } printf("\n"); printf("\n"); 1 } /*********************************************************************************/ 92 Appendix A-3 Example of reports generated by simulation model. Daily report. Day Trawler 11 1 11 2 11 3 11 4 12 1 12 2 12 3 12 4 13 13 13 13 1 2 3 4 14 1 14 2 14 3 14 4 Cod Haddock Pollock Pearch Trawler is landing catch 6.0 0.0 0.0 5.0 6.0 0.0 0.0 4.0 10 8.0 2.0 0.0 0.0 0.0 0.0 4.0 4.0 12 1.0 0.0 0.0 6.0 5.0 5.0 7.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 6.0 7.0 5.0 4.0 2.0 3.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 6.0 4.0 5.0 8 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 5.0 5.0 5.0 9 0.0 0.0 0.0 0.0 0.0 0.0 5.0 4.0 3.0 10 0.0 0.0 0.0 0.0 0.0 0.0 7.0 9 8.0 11 7.0 10 1 2 15 3 15 4 4.0 3.0 4.0 2.0 16 1 5.0 16 2 1.0 16 3 16 4 4.0 Trawler is landing catch 17 17 18 18 18 18 2 3 4 1 2 3 4 19 1 19 2 19 3 19 4 6 Trawler is landing catch 15 1 11 Trawler is landing catch 15 17 17 Total 2.0 3.0 3.0 7 9 11 14 11 7 9 8 9 7 5 7 Trawler is landing catch 0.0 5.0 0.0 Trawler is landing catch 2.0 0.0 0.0 2.0 0.0 0.0 6.0 2.0 4.0 4.0 0.0 0.0 9.0 9 4 8 13 Trawler is landing catch 2.0 4.0 0.0 0.0 0.0 0.0 3.0 4.0 5 8 93 Trip summary report. Trawler Tripe Day-in Cod 20.0 22.0 46.0 48.0 61.0 61.0 43.0 82.0 65.0 67.0 59.0 70.0 57.0 46.0 40.0 33.0 109.0 40.0 52.0 64.0 31.0 23.0 41.0 48.0 35.0 56.0 29.0 48.0 32.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 24.0 38.0 67.0 69.0 70.0 74.0 65.0 89.0 87.0 88.0 34.0 56.0 48.0 49.0 39.0 49.0 90.0 36.0 49.0 65.0 30.0 34.0 45.0 61.0 47.0 61.0 27.0 76.0 31.0 263 1428.0 0.0 0.0 1598.0 2 1 9 7 2 2 18 7 2 3 4 2 5 2 6 2 7 33 46 60 74 88 13 2 2 8 101 11 2 9 13 2 10 2 11 116 130 142 2 12 151 7 2 2 15 2 16 2 17 2 2 18 19 159 166 177 186 199 219 228 6 2 13 14 2 20 241 2 21 2 22 23 24 25 255 264 275 284 296 310 319 334 346 2 2 2 2 26 2 2 27 28 29 Total 29 2 11 12 12 12 12 6 5 7 7 11 7 7 8 7 7 9 7 10 12 7 13 10 Haddock Pearch Pollock Days Total 44 60 113 117 131 135 108 171 152 155 93 126 105 95 79 82 199 76 101 129 61 57 86 109 82 117 56 124 63 3026 94 Trawler schedule. 63 1 XmtwtfXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt IX fffffffff--fffffffffff--ffffffffffff--ffffffffffff--fffffffffff fffffff--fffffff--fffffffffffff--fffffffffff--ffffffffffff--ff -ffffffff--ffffffffffff--fffffffffffff--ffffffffffff--ffffffff --ffffffffffff--ffffffffffff--ffffffffffff--ffffffffffff--ffff 127 64 XmtwtfXXmtwt IXXmtwt fXXmttut fXXmtwt fXXmtwt fXXmtwt fXXmtwt IXXmtwt fX ff----fffffffff--ffffffffffff---fffffffffff----fffffffffff--fff ffffffffff--ffffffffffff--fffffffffff--fffffffffffff--fffffffff ffff--fffffffffff--fffffffffff--fffffffffffff--ffffffffff--ffff ffffffff--ffffffffffff---fffffffffff---fffffffffff---ffffffffff 189 128 XmtwtfXXmtwt IXXmtwt IXXmtwt fXXmtwt IXXmtwt fXXmtwt IXXmtwt fXXmtwt IX ffffffff ffffffff fffff---ffffff----fffffff----If ffffff--fffffff--ffffff--fffff----fffffff--fffffff--ff fff fffffffffff- fffffffff fffff--ffffffff fffffffff ffffffff--ffffffffff--fffff--ffffff--fffff--ffffffffff I 190 252 Xmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt IXXmtwt IXXmtwt IX ffffffff fffffffff fff I fffffff fffff--ffff ffffff fffffff--fffffff ffffffff fffff ffffffff ffffffffff fffffffff fff fffffff--fffff--fffffff--fffffffff--ffffffff--fffff--f 253 315 XmtwtfXXmtwtfXXmtwtfXXmtwtfXXmtwt IXXmtwt IXXmtwt fXXmtwt fXXmtwt IX f--fffffff--fffff--ffffffffff--ffffffff--ffffffffff ffff ff--fffffff--fffffffff--fffffff--ffffffffff--ffffffffffff ffff ffff fffff--fffffff--ffffffffff--fffffffffff--fffffffffff ffffffff--fffff--fffffff--ffffffffff--fffffff--ffffffffffff--ff 316 360 Xmtwt fXXmtwt fXXmtwt fXXmtwt fXXmtwt f XXmt wt fXXmt ffffffff--ffffffffffff--ffffffffffff fff--fffffffffffff--ffffffffff f--ffffffffffff fffffffffff ffffffffff--ffffffffffff--fffffffffffff Note: First row shows day of the year. Second row are the weekdays, where x are Saturdays and Sundays. -Rows 3 through 6 show activity of trawlers 1 through 4 (f = fishing; - = ashore). 95 Daily inventory status. 2 3 4 5 6 7 8 9 300 245 190 135 80 25 0 0 16 17 18 19 20 21 22 68 35 62 29 0 0 31 32 33 34 35 58 20 83 33 46 47 48 116 75 61 10 11 12 13 14 15 11 41 86 53 20 0 0 23 24 25 26 27 28 29 30 0 70 32 98 60 22 0 0 96 36 37 38 39 40 41 42 43 44 45 0 0 104 63 22 87 37 0 0 81 40 49 50 51 52 53 54 55 56 57 58 59 60 34 0 0 134 94 54 86 37 0 0 99 59 156 62 63 64 65 66 67 68 69 70 71 72 73 74 75 122 88 54 54 20 94 48 115 59 3 3 112 66 145 89 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 33 0 0 69 23 95 49 3 0 0 100 54 116 70 24 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 0 0 92 229 161 93 25 0 0 80 184 117 50 0 0 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 0 113 58 165 97 29 0 0 84 28 125 70 15 0 0 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 51 147 97 47 0 0 0 116 44 127 55 0 0 0 138 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 283 224 165 106 47 47 93 46 73 24 0 0 0 100 41 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 119 71 23 0 0 107 44 90 143 91 39 39 48 62 7 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 49 0 0 0 59 113 61 95 42 0 0 44 85 33 41 1 Note: First row shows day of the year. Second row shows the inventory status at the processing plant in Metric Tons. APPENDIX B LINEAR PROGRAMMING: DEFINITION 96 Appendix B-1 The MPL program for one run of Rule C. TITLE ProductMix INDEX day (Sul,Mol,Tul,Wel,Thl,Frl,Sal,Su2,Mo2,Tu2,We2,Th2,Fr2,Sa2, Su3,Mo3,Tu3,We3,Th3,Fr3,Sa3,Su4,Mo4,Tu4,We4,Th4,Fr4,5434, Su5,Mo5,Tu5,We5,Th5,Fr5,Sa5,Su6,11o6,Tu6,14e6,Th6,Fr6,Sa6, Su7,Mo7,Tu7,We7,Th7,Fr7,507,Su8,Mo8,Tu8,We8,Th8,Fr8,508, Su9,Mo9,Tu9,14e9,Th9,Fr9,509,SuO,MoO,TuO,WeO,ThO,FrO,S00); codprod = (C1,C2); polprod = (P1,P2); = DATA PrIceCod[codprod] := (302000,231000); (151: per one metric ton product) PricePol[polprod] := (147000,120000); per one metric ton product) YieldCod[codprod] (40% and 461. 1 (2.500,2.1739); YieldPol[polprod] := (2.0000,1.7857); (50% and 56% } CodRawCost := 58000; (Cost of raw mat. cod 1SK/MT) PolRawCost := 35000; (Cost of raw mat. pollock /SK/MT) RegWages := 650; (Hourly wages for regular work) Ov_Wages := 950; (Hourly wages for overtime work) MaxCodln[day] := (0,73,0,97,56,0,0,0,73,0,0,37,0,0,0,69,0,81,0,0,0, 0,103,0,0,0,75,0,0,88,0,70,0,0,0,0,77,0,0,0,0,0, 0,103,0,0,0,0,0,0,65,115,0,78,0,0,0,74,0,0,0,0,0, 0,43,0,20,0,0,0); (Rmnt of incom cod,MT) MaxPolln[day] := (0,66,0,86,56,0,0,0,85,0,0,56,0,0,0,87,0,99,0,0,0, 0,109,0,0,0,90,0,0,90,0,62,0,0,0,0,98,0,0,0,0,0, 0,105,0,0,0,0,0,0,87,95,0,74,0,0,0,95,0,0,0,0,0, 0,37,0,39,0,0,0); (Rmnt of incom pol,MT) LabReqCod[codprod] := (78.1,39.5); (Labour requirements per codprod) LabReqPol[polprod] := (44.4,32.5); (Labour req.mnts hrs/kg polduct) InaCost := 1000; (Inventory cost 1000 15K/MT/day) InvPCost := 500; (Inventory cost 500 15K/MT/day) (la DECISION URRIRBLES QuantCod[day,codprod] -> "" QuantPol[day,polprod] -> RgLabhrs[day] OvLabhrs[day] InvCod[day] InvPol[day] CodRawln[day] PolRawln[day] MACRO CodRev PolRev Coduse Poluse InvCoTot InvPoTot -> -> -> -> -> -> Reg Over Invtcod Invtpol Codln Polln (Quantity of cod produced) (Quantity of pollock produced) (Rmount of labour hours used) (fill inventory of cod) (AN inventory of pol) (Amount of incoming cod) (Amount of incoming pollock) SUM(day,codprod:PriceCod*QuantCod); := SUM(day,polprod:PrIcePol*QuantPol); := SUM(day,codprod:YieldCod*QuantCod); SUM(day,polprod:YieldPol*QuantPoI); := SUM(day:InveCost*InvCod); SUM(day:InvPCost*InvPol); (Total coduse) (Cost of cod inv) (Cost of pol Inv) 97 MODEL MAX TothietRev = CodRev + PolRev - RegWages*RgLabtot Ov_Wages*OvLabTot CodRawCost*Codtot - PolRawCost*Poltot InvCoTot - InvPoTot; SUBJECT TO Coduse - Codtot < 0; CodRawMa: PolRawMa: Poluse - Poltot < 0; TotCodln: SUM(day:CodRawln) - Codtot = 0; TotPolln: SUM(day:PolRawln) - Poltot = 0; InvCo[day]: InvCod = InvCod[day-1] + CodRawIn SUM(codprod:YieldCod*QuantCod); InvPol = InvPol[day-1] + PolRawIn InvPo[day]: SUM(polprod:YieldPol*QuantPol); MaxCo[day]: CodRawIn = MaxCodln; PolRawIn = MaxPolln; MaxPo[day]: LabUse[day]: SUM(codprod:LabReqCod*QuantCod) + SUM(polprod:LabReqPol*QuantPol) - RgLabhrs - OvLabhrs < 0; RgTotLab: OvTotLab: SUM(day:RgLabhrs) -RgLabtot = 0; SUM(day:OvLabhrs) -OvLabtot = 0; BOUND MaxRghrs[day]: RgLabhrs < 880; MinRghrs[day]: RgLabhrs > 840; Max0vhrs[day]: OvLabhrs < 420; MaxInvCo[day]: InvCod < 150; MaxInvPo[day]: InvPol < 150; END APPENDIX C SYSTEM OUTPUT REPORTS Table C.1 : Summarized LP output for Rule A in spring, iteration 1, part 1 of 4. 7A0C . MON THU 31 30 MED THU 141 SAT 32 33 34 35 3 MON 37 Thu 38 WED THU RE SAT MON MON 39 THU WED 40 41 42 4.4 44 45 46 Thu 47 RE SAT 48 49 A IncornetoRM UsedIRM Cod Pollock 28000 21000 38000 24000 30000 29000 52000 33000 Cod 28000 21000 38000 24000 Pollock 20398 27386 InventorI(EOP) Cod Pollock Cod-1 9802 Produced Cod-2 12880 Poll P01-2 Usedlabour Avellablelab Hours Regular Overtimi Labour slack 11218 9660 11423 680 800 280 15338 880 600 280 0 0 10414 20938 39640 25225 52802 84864 25225 17480 11040 5832 880 600 280 .; Allcostfiguresaninthousend '', lagampliciOonaoftWISA? . MUM MON 2* 30 THU 31 8900 12880 11960 7658 2926 19820 12813 13681 6361 9180 881 881 561 881 881 600 280 881 600 280 580 600 280 600 280 600 280 -1 -1 -1 -1 -1 UsedRIA cad Inventorff0P), cost Produced, rewetues 1624 1050 1824 Palo* 714 Cod Pollock Cod-1 Cod-2 5 1218 1015 1218 959 THU RE SAT '11UW's MON 32 THU WED 33 34 35 04 37 38 39 2204 1820 2204 364 1392 1155 1392 733 870 1225 870 958 1624 1050 1624 585 1508 1575 1508 843 P01-2 AvMsbloplab Hours Regular Overtime Labour coat Romper Overtime _ 883 8 26 32 2975 2231 4038 2914 1854 1382 880 600 280 390 266 2011 1856 880 600 280 390 266 706 880 600 280 390 266 2550 1155 354 881 881 561 600 280 390 800 280 390 287 1214.1 liamflabax 1387 267 2569 13 560 533 -----, 4 10 24 1594 2975 1229 2763 1349 881 881 881 800 280 390 267 600 280 390 267 600 280 390 267 12392 29762 62762 25225 7186 5997 7820 11040 15180 22278 1845 19820 12613 860 600 280 881 800 260 561 -1 -1 -1 WED l%Vr Cod Pollock Cod 17000 24000 33000 51000 29000 33000 30000 33000 17000 24000 33000 48431 2569 29000 20808 12630 37537 25225 7637 20915 47558 64865 25225 Regular Overflow Incoming RU, amd 15000 28000 26000 31000 35000 30000 45000 21000 15000 28000 28000 31000 27363 16722 18359 3691 39840 25225 Thu 40 1798 735 1798 129 RE 41 1387 5413 10177 880 600 280 560 8607 1900 881 600 280 8315 -1 -1 1182 18769 12613 881 881 881 561 600 200 800 280 600 280 560 -1 -1 -1 SAT DWW- MON THU WED 42 THU 62 RE 44 SAT 45 46 47 48 49 986 1015 986 1015 1392 1155 1392 1914 1050 1914 442 2958 1155 2809 883 721 149 1314 883 3 32 2170 1385 13 271 2914 1854 880 600 280 390 268 881 561 600 280 390 267 560 533 1806 796 1231 880 600 280 390 266 6 15 31 13 2550 1265 230 3507 928 5148 273 2759 1854 861 861 861 881 600 280 390 267 561 600 280 390 267 600 280 390 267 600 280 390 267 560 533 Table C.1 : Summarized LP output for Rule A in spring, iteration 1, part 2 of 4. 4 NON 51 56 THU MED THU MR 52 53 54 66 SAT 56 31000 20000 23000 23000 47000 32000 35000 47000 31000 20000 23000 23000 16823 25973 23517 23517 42342 27027 THU WED MU PR SAT 68 50 60 61 62 63 60407 54802 76804 80369 27027 3980 7800 8000 10580 11759 10680 13514 13388 2208 7803 7090 941 941 941 941 601 941 941 941 941 640 300 640 300 840 300 640 300 600 640 300 640 300 941 640 300 640 300 640 300 800 -1 -1 -1 -1 -1 -1 -1 -1 -1 .1 -1 MON THU MED THU MR 51 52 63 64 56 1798 1646 1798 1160 1120 1160 1334 1646 1334 852 909 1334 1225 1334 823 623 14 17 23 35 14 3294 694 622 940 640 300 416 285 2125 1000 2444 1729 2444 1729 3112 941 941 941 640 300 416 286 640 300 418 286 941 840 300 416 286 A014 SAT 56 1452 -- - al . 946 640 300 416 286 69 70 6643 7060 NON 72 1. Thu 73 MED THU PM 74 76 76 36000 41000 53000 31000 28000 62000 25000 38000 1326 5643 46046 46046 13673 33931 13573 51674 10409 5510 663 7069 33931 1069 62674 44874 76874 30631 13572 2826 13672 428 1000 1001 1001 302 1061 680 320 680 320 1060 720 1060 680 320 640 440 720 440 720 440 -1 -1 338 100 100 90 SAT 62 83 2202 1925 2262 1102 700 1102 548 1180 1280 1160 :qi0le.-$4 ! i ' 946 MON THU MED THU RR 85 66 67 68 69 1624 1155 1624 198 1566 1295 1666 247 1624 1820 1624 198 1677 6786 SAT 70 1677 .- .x11314..: xt 18000 NON THU 72 73 2204 1856 2204 2378 1085 1088 NED 74 46 475 410 1988 1147 1044 1561 3112 601 941 941 941 941 640 300 416 286 640 300 416 208 941 640 300 416 286 840 300 416 286 640 300 416 288 3382 29 3262 1986 415 618 416 3311 3311 998 801 1000 1000 680 320 1000 680 1001 1001 302 680 320 442 305 680 320 442 306 ' 600 680 320 442 571 304 ' 442 304 52 3382 320 442 304 29 7 26 3143 1273 97 640 267 ,.................. 23122 15315 1060 720 1061 681 440 440 800 100 00 119 41 4099 720 THU M4 SAT 76 76 77 2030 1120 1068 1323 7 14 1069 46243 30631 37800 1000 660 320 11200 SAT 77 35000 32000 1000 680 320 MR 14 - 68 801 61 35 1812 ' 67 2822 22523 22523 THU 36 2416 671 66 3526 60 27 2295 600 65 2822 NED 25 1196 3092 338 . SAT 13514 59 1482 MR 10600 THU 497 THU 11200 58 161 NED 27367 57306 103663 58618 MON 870 490 070 743 THU 28000 27000 33000 37000 28000 27000 6000 10817 21171 NON 7069 9200 12986 OS . 19000 20000 15000 55000 20000 36000 14000 39000 10000 20000 15000 4603 15605 14100 21234 42342 27027 14260 r4U1117 - 39000 34404 45867 69369 27027 11759 21171 fJ5 4 28377 4724 5138 940 840 300 ' NON 62 1610 1072 1 22 854 38 16 4099 120 2778 1060 720 1060 720 1081 440 468 323 440 468 323 440 486 720 324 3309 2251 1060 720 1061 681 440 468 323 440 468 324 720 000 647 Table C.1 : Summarized LP output for Rule A in spring, iteration 1, part 3 of 4. ' 10 SUN NON THU WED Thu MR 78 79 80 81 82 63 47000 77000 35651 11140 34762 SAT 64 I 34000 69000 34000 2805 50450 48182 13600 31392 17381 1120 1121 760 360 760 360 1303 1120 760 360 25225 24001 4011 NON 79 10008 25990 1121 1071 760 360 760 380 .1 49 -1 i 68 80 00 06000 100000 60244 21756 60244 27756 46412 59580 40421 21756 27756 106000 59586 100000 59519 77000 42238 08632 46182 4459 87 ia 01 11 03 04 00000 106000 11149 14341 86 THU WED THU MR 80 81 82 83 1241 840 720 SAT 84 400 '11014" 44 1239 640 400 31302 10435 11603 1240 840 400 96 03000 58000 06000 71000 66244 60244 . 43056. 15623 05 15623 07 96 Q. 53644 43056 1276$ 31302 31392 1241 1240 640 400 840 400 347 640 400 403 600 MON Thu WED THU AR 86 SAT 87 88 89 00 91 -414442 400 840 1241 640 400 1241 640 400 31302 31302 1230 640 700. 601 741 400 800 $40 400 30 640 400 99 MON THU WED THU MR 93 SAT 04 05 96 07 08 11411V- *4 647 1972 2065 1972 1217 91 5220 3710 3958 1788 1688 11 39 4331 1120 760 380 494 342 22 53 21 49 1347 4107 2555 101 3708 3541 1121 760 380 1120 1121 1071 780 380 404 342 780 380 780 360 494 295 494 343 24 7252 494 343 1262 1624 5568 3500 3958 2086 30 2312 6394 14/5 30 3360 3058 7252 2949 1538 8 2857 3145 1241 720 840 400 548 381 1239 840 400 648 379 1404 1240 640 400 546 380 3364 2485 3068 1240 840 400 548 840 400 548 380 381 2978 799 800 759 1241 840 400 840 NON TOSS MED 100 101 102 547 842 1878 447 26 48 15 84 67 7252 7262 1542 1538 1281 35, 406 1148 2730 1241 17512 26473 6058 1241 640 640 400 400 THU 103 104 4408 4096 3958 4624 2730 3958 MR 14625 800 600 SAT 105 ,,......,,1 1810 28 50 105 16683 24615 . 2726 2695 2079 104 7756 17511 117000 105000 168527 33364 1601$ 640 103 76000 76000 117000 78000 60244 68244 5675 30040 lao: 102 36036 33365 7612 22636 24615 tot 14512 24756 14511 06000 161000 11335$ 60400 *$d23 100 3636 347 840 400 620 840 400 620 1241 1241 1239 840 400 648 840 400 648 381 361 840 400 546 379 1168 17 2649 2452 709:: 801 741 800: 840 400 620 840 400 520 2978 8 16 60 98 84 7252 7262 1861 1241 1241 1794 800 840 400 646 840 400 548 800 381 760 i: 759: - ..... , , ..... . 640 400 620 1016 927 Table C.1 : Summarized LP output for Rule A in spring, iteration 1, part 4 of 4. 12 .-",- MON THU BRIO THU MR 107 108 109 110 111 BAT 112 MON TRU BOD THU MR 114 115 116 117 116 SAT 119 I 04440 . 79000 64000 71000 71547 - 58559 56559 51410 74000 71454 92 46154 37636 37636 23079 7454 Itekt 100969 61410 71000 144908 98764 44144 80918 23078 32011 32869 29279 29279 25705 16910 18919 11539 839 641 641 840 880 440 39 860 440 513 880 440 367 52 25846 ' ..;:.x.:.....:..:, -00N $00 1301 1301 1142 1301 1301 880 420 860 420 880 420 880 880 420 .1 -1 420 156 -1 THU VMD THU MI 107 108 109 110 111 4582 2465 4150 3712 2590 4144 2050 2060 55 26 4304 4304 3779 1301 1301 880 420 572 400 880 420 572 400 1799 SAT 112 3 4$5.:: 1615 7 4444 880 440 880 880 440 880 840 1. -1 MON 39 MON THU 114 116 BED 116 THU MM SAT 117 118 119 806 1324 1324 72 7603 7593 1142 1301 1301 $80 420 672 249 880 420 672 400 860 6 420 572 400 49. 044 30 12 3127 839 2781 2781 1696 641 841 880 880 440 546 513 880 111 440 840 648 797 , 7A44444 0r 66178 50155 66176 47726 . 36 1438000 1773000 1438006 1773003 143354 3969398 130155 501455 678506 232956 68411 47600 32220 440 546 880 440 546 880 440 546 840 1816 42025 84277 74994 23260 54207 34600 23440 22438 19693 63683 Table C.2 : Summarized LP output for Rule A in summer, iteration 1, part 1 of S. - 1 MON 12OR 121 Thu 122 WED 1HU RI 123 124 125 SAT 126 .3 EON PAM THU WED THU FR 127 128 129 130 131 132 SAT 133 , Incoming AM Used RA Cod Pollock Cod 67000 101000 85000 99000 87000 62897 24104 67000 5636 Polio& Inventory(EOP) Produced 25541 24103 85000 5422 22697 Cod Pollock Cod-1 Cod-2 Pol-2 Hours Regular Overtime Labour slack Produced, revenues 30820 33418 13043 1321 880 440 880 440 880 440 3157 1321 860 440 -1 -1 1321 1321 880 440 840 Regular Overtime 880 440 -1 -1 -1 -1 :::::,:::::::-:. WED 111U RI SAT MON THU WED 123 124 125 126 128 129 130 WED DIU RI SAT 136 137 138 139 140 82000 115000 48485 33515 37838 1HU 131 1321 680 841 440 840 -1 14099 33515 115000 100901 14660 13406 5444 7050 1361 920 440 920 920 440 920 RI SAT 132 133 ' ' ON ,: 134 : 61261 39640 39640 30631 19820 1361 920 440 1361 881 920 440 920 440 860 -1 -1 -1 -1 -1 : MON 1HU WED THU FR SAT 135 136 137 136 139 140 vi.w.twhi. 5046 2975 3648 24 43 1637 5243 1398 894 3886 3485 3886 2081 30 2912 1877 4370 1321 1321 880 440 572 419 880 440 572 419 1321 880 440 572 419 5658 3045 4214 197 1644 625 47 28 90 81 7119 7719 3013 382 - 1HU 135 29730 29730 18919 880 440 122 Regular 37838 680 440 THU Overtime 97297 1321 121 1201-2 Avalable lab 59459 1321 MON Pot-1 HOUR -1 59459 1321 880 440 fite Cod Pollock Cod Pollock Cod Pollock Cod-1 Used labour -1 59459 25415 240000 216216 156757 10106 18829 69 14758 11892 29730 9994 840 MON '34 r 4344 Cod-2 Labour cost 162515:404 29730 1321 -1 '''V'':' :: Inventory(EOP), cost :: Regular All cost figures aro in thousand Icelandic Kronas (000 ISM Used RM, cost 36585 25415 29515 23784 28353 17847 9841 1321 Overtime Incoming AM, cost 72647 28353 93363 180363 59459 12770 Pot-1 Used labour Available lab 59459 62000 107000 410:$ 1321 880 440 572 419 !Mil 3596 3745 2122 1033 25 120 .- 1474 832 108 3052 2081 2081 2081 78 49 19 880 440 572 419 840: .. 840 - 798; 1324 34 58 4427 1258 -.' 3888 2169 1748 4370 4370 4370 2781 1321 1321 1321 1321 680 440 572 419 880 440 572 419 880 440 572 419 1321 880 440 572 419 841 880 440 572 419 16 1209 1321 4756 4025 2812 840 799 920 440 572 920 440 572 1944 493 2144 1387 50 4049 20 1036 4503 2914 1361 1361 920 440 598 419 1361 920 440 598 419 861 920 440 598 416 880 837 Table C.2 : Summarized LP output for Rule A in summer, iteration 1, part 2 of S. MON Thu 142 143 90000 123000 74849 NED 144 THU NM SAT 145 146 147 ' '' ..... .145 112000 59000 99000 80000 74849 72443 23710 59598 2402 51055 48352 e MON THU NED Thu NM 149 150 151 152 153 6970 34490 33324 41441 1N THU NED Thu NM SAT 156 157 158 159 160 161 35000 48000 29449 41441 920 440 -1 1345 920 440 920 440 -1 -1 1 41441 10270 28591 920 440 5551 48000 11780 10269 ' 10907 20721 33375 920 440 7 NON 15152 15151 37151 23709 129000 63402 162402 240000 186945 140593 $41$$$k 99152 57710 34430 SAT 154 20721 20721 27077 8135 5551 33631 ' MON - 189 E' 14369 14369 2220 16615 .. ..... 860 921 921 302 960 460 39 980 460 980 460 39 39 960 460 598 960 460 960 920 900 460 960 960 480 960 920 960 460 40 319 960 460 $9 960 460 : : 920 1421 960 480 MOW TRU NOD THU OR 142 SAT 143 144 145 148 147 4341 6496 3405 079 2060 15 02 32 4341 37 61 3422 2800 4202 04 24 120 PM 106 167 SAT 108 9508 1420 980 480 041 35940 43692 18656 21018 28308 1410 1421 1420 919 960 460 960 400 960 460 920 -1 0 1 .1 ,::::.**::: 5220 4305 Thu 165 35949 20126 7185 921 WED 87000 89000 82000 99000 132000 104000 78151 81144 78151 40558 16979 78022 37533 50549 8849 30705 116705 40554 99000 214021 239999 239999 202406 151917 . 921 THU 164 . tAil MOW TRU 149 150 NED 151 THU NM 152 153 SAT 154 ,r MOW THU 156 157 94 1092 70 OM 1450 50 7953 1610 7953 7696 2519 4036 1350 1361 103 1301 3459 1361 920 440 590 419 920 440 508 417 679 920 440 598 419 921 920 440 696 410 020 440 680 590 417 060 400 598 $35 3046 1359 THU 159 AM 100 SAT 101 2030 ' 137$ 1707 NED 156 1450 29 3046 1450 1880 1706 569 1177 8 3046 921 900 460 596 362 960 480 598 7 3567 671 2472 960 400 598 920 960 460 598 960 460 598 920 960 460 598 THU NED 16$ 164 165 5046 3465 4533 5182 4020 3540 594 4758 3040 50 37 107 119 120 8304 6497 1421 1150 1420 900 9 24 1198 MON 503 0 3276 921 960 480 598 322 ' ':.: 921 960 460 598 1 4533 2731 1056 319 960 460 598 920 980 460 624 438 460 624 437 Thu 166 1 AM SAT 167 168 2352 1314 1769 120 101 78 8904 4309 41 5267 1419 1421 1420 960 460 024 436 980 480 824 438 960 460 024 437 2543 3425 919 020 873 Table C.2 : Summarized LP output for Rule A in summer, iteration 1, part 3 of 5. in ... MON .x.:1 : 170 THU 171 VilD 114U 172 173 MI 174 SAT 175 177 Thu MED 1NU RI 178 179 180 161 SAT 182 ... . 1 MON 1NU MED 184 165 166 1NU 187 MI SAT 189 188 1 ..114, MON THU WED THU MR SAT 191 192 193 194 195 196 15:::::':' ?. 62000 66000 . 75000 79000 66043 38412 23588 41441 : 41441 1 110478 69034 -. -.- 41441 27594 20861 27593 66000 45139 15365 .. - 20721 20721 13797 921 960 921 921 960 460 39 960 460 39 613 960 460 347 IsioN 10 960 460 960 MOW Thu MED THU MR 170 171 172 173 174 1200 600 400 920 ,,Ipor SAT 175 17, ... ... 6310 1450 1450 65 35 14 3046 3046 3046 921 921 960 460 596 960 460 598 921 960 460 598 . : 42016 79959 14025 96025 54009 17921 30380 17117 1201 1201 761 1201 15143 1200 36923 1199 1201 400 1003 800 400 600 400 600 400 760 600 400 800 400 600 400 600 400 -1 197 -1 -1 -1 -1 0 THU 179 180 ME 161 1200 800 400 520 380 4350 2785 3830 1580 SAT LW 182 MOW THU 154 185 1196 9 23 2280 946 39 54 40 7016 4140 40 17 7018 402 599 3290 2518 1201 1201 761 1201 2649 11376 7664 6126 MED 166 23620 23365-:: 1200 759, 600 400 7110,i 1533 3318 . THU MI 167 186 600 400 800 800 400 600 17117 1200 1201 761 BOO 600 400 760 -1 -1 400 1i 0 -1 ,:.:.........,._ goole SAT 169 'OW 1201 600 1003 600 400 520 800 400 520 SOO 400 820 400 520 700 800 400 520 381 193 361 381 723 381 5220 2670 3830 2306 7 1390 1471 MON THU 191 192 NED 193 1111.1 MR 194 195 24 46 27 7016 2546 1832 1200 600 400 520 380 4466 1199 600 400 520 379 1201 600 400 520 381 3460 2380 2644 . 1462: 429 SAT 196 6: 2847 1200 600 400 520 380 636 1182 1196 14 . .41itk 34 17 3436 1742 1821 .. ' . 272 600 400 526 5767 16883 :;:;:;:;:;::::." 6090 3745 3830 520 1567 66000 34234 12251: 14*01 . 1 14417 33766 34234 14417 11021 :::: 1368 730 12253 . . 1201 MED 41756. 23957 22569 178 2026 920 ' 30380 THU 24 33 4640 960 480 596 65934 10431 SOO 00000 66000 45563 . 66043 23958 1330 2592 22383 9435 177 966 613 980 460 596 34234 90000 82000 36950 27041 38957 107000 MEN 3598 2310 2228 1450 105000 107000 66043 6957 79000 34234 30380 20721 480 39 45139 23566 8957 44766 901 2482 2516 1201 781 800 400 520 760 361 723 211313 759. 760-. .. 721: 272 800 400 494 600 400 494 600 400 494 1200 600 400 520 380 Table C.2 : Summarized LP output for Rule A in summer, iteration 1, part 4 of S. 12 , ... '''''' ... MON THU NED THU NM SAT 198 199 200 201 202 203 MON THU _04. :::::..:,:m NED THU AM SAT 205 206 207 208 209 210 ' 117000 38412 36412 38412 1763 40175 1763 128000 128000 128000 15365 15365 15365 . . 705 15 MON THU MO THU PM 212 SAT 213 214 215 216 217 65000 82000 65000 10763 63964 63964 80000 121000 92000 144000 14872 78151 78151 43036 63904 14872 107000 7708 76427 22373 25786 27027 '' ''.?.' 03984 5940 20532 11186 44700 5924 44698 92000 236000 230076 67980 63964 1649 35949 35049 21518 31982 20502 22845 31082 3317 12482 20900 5362 31962 31982 1201 1201 497 600 400 800 400 500 400 1421 800 400 1421 500 400 1421 1421 1421 060 060 460 1421 900 400 1421 1421 1421 900 460 960 460 960 920 960 480 921 460 060 460 1421 760 900 480 920 900 480 920 MON 1110.1 196 199 *MD 200 THU 201 MI 202 -1 -1 -1 SAT $1161 MON THU NMO 203 :::204 205 208 207 Thu 206 79 64 4640 1200 800 400 620 360 2228 2228 40 64 4640 2 1200 800 400 520 360 64 4840 1200 800 400 520 360 102 1805 4582 3745 3710 1892 783 663 1506 36 213 11 3701 3073 54 2355 4743 1644 1201 1201 407 800 400 520 800 400 520 70. 381 361 472 32 1797 3183 . .....w........... RI SAT 210 4640 3220 4533 7018 5040 4633 2 45 46 11$ 115 6304 8304 4750 ..lutt,.:. Igit : Thu MI SAT 221 222 223 224 1421 1421 1421 960 460 024 438 960 460 624 438 960 460 624 438 960 460 824 438 960 480 624 436 -1 THU 111,0 THU 212 213 214 215 MI 216 020 440 920 920 440 920 920 440 920 920 440 920 920 440 920 080 'I ,x4.:::,;'.': SAT - 217 MON TOW 219 220 WID 221 THU /14 222 223 SAT 224 3770 2670 2379 2239 3770 377 2239 2239 81 49 85 53 21 3356 1510 4701 791 4701 401 4701 3040 920 1421 1421 1421 1421 1421 4121 980 460 824 438 980 460 624 438 080 460 624 436 980 480 624 438 900 460 624 438 *ft 1450 6907 4701 1421 -1 MON 2593 207 1421 .1 -1 209 2239 15 460 . -1 -1 :.: 6766 4460 2228 WED 220 20721 1200 263 THU 210 41441 1200 -1 MON 102096 98132 189360 105405 41441 . 1200 -1 I. 79000 107000 64128 51573 54054 22373 76688 S4 ...,,,,. ...:::::::. 128000 -000r. 14 ' ''''' 920 874 ' -- . .' 920 875 _ 920 440 572 920 440 572 920 440 572 920 440 572 920 440 572 560 Table C.2 : Summarized LP output for Rule A in summer, iteration 1, part 5 of 5. 10 SUIR: MON THU MED THU MR 1211U 226 227 226 229 230 SAT 231 ::. :.532, MON THU NED THU MN SAT 233 234 235 230 237 236 61000 77000 61000 73000 70000 73000 66000 129000 117000 61000 71393 1045 66155 13825 3450 5607 46431 74725 36170 ::. 66607 361764,17D 4637 56559 56559 56559 56559 66155 72175 197725 239999 239999'0SM:4 235163 176604 116046 33580 28060 32641 59487 929 926 15271 22270 14947 7742 1300 1932 1361 41646 920 440 1360 920 440 920 440 920 440 920 440 -1 0 1361 ......... **MUM". MOW glgi 226 . 2416 1033 21420 Thu 227 1359 1 MID 226 1 TNU RV 229 230 661 680- 29279 29279 29279 20279 1301 1301 1301 1301 21 880 420 660 420 880 420 880 420 060 420 640 -1 -1 -1 -1 610 -1 SAT 231 :: 465 1300 MON THU 233 234 MMD THU 235238 AM SAT 237 236 ;MAU 2099000 2535000 2099010 2535000 858148 8916490 106327 751269 914961 394825 97736 70400 51700 ' DOIMADIr . . ..: . . 4234 2450 4234 65 2365 34 3536 3010 9538 484 4466 4515 4606 4005 4141 2609?: 121 6 2615 67 36 99 120 . 2214 160 2050 2050 2050 2050 116 06 59 30 0 355 4304 4304 4304 4304 1300 1301 1301 1301 1301 660 420 572 399 660 420 572 400 660 420 572 400 060 420 572 400 660 420 572 400 33 38 120 WO 4612 7757 6462 7560 125 1361 2197 2593 1900 937 1960 234 5063 1361 920 440 596 419 920 440 596 418 920 440 598 416 920 440 596 419 1359 920 5146:'. 440 596 417 661: 68 637 ''' 611 21 640 20 121742 68725 121743 66725 3034 36797 56271 173543 134502 47774 97736 70400 51700 40010 33861 Table C.3 : Summarized LP output for Rule C in spring, iteration 2, part 1 of 4. e V. Incoming RM Used RR Inventory(EOP) Produced Used labour Avalable lab THU WED MU FR BAT 30 . BON - MON 31 32 THU 33 34 35 WED THU SO 37 38 39 40 64000 70000 48431 15569 70000 22278 881 600 280 15589 30361 48000 67000 46000 39640 39639 7182 5569 10765 880 600 280 2* 48199 85000 48198 21160 884 452 19820 12613 881 600 280 881 881 5131 600 280 600 280 580 881 600 280 -1 -1 -1 -1 -1 19820 11569 36802 43000 72000 43000 5422 11569 64865 25225 -1 All cost figures are in thousand 60000 85000 48431 2135 39640 25225 Regular Overtime Icelandic Kronas (000 IVO FR 41 SAT ex 44 42 : PAON 7HU WED THU RI BAT 44 45 46 47 48 49 ... Cod Pollock Cod Pon3ck Cod Pollock Cod-1 Cod-2 Pal-1 Poi-2 Hours Regular Overtime Labour slack 3 MON 22278 MON THU WED 1HU RI SAT 30 31 31 32 33 34 35 : MON 34 37 66576 5322 20609 879 600 280 25225 280 3036 880 600 280 39640 73647 1064 34007 103007 22060 20635 48000 69000 46936 831 19780 348 26602 879 600 1 Thu 38 41353 25225 48000 74000 48000 353 1064 38143 39640 25225 64865 426 25225 19071 19820 12613 15923 5324 881 600 280 12613 176 19820 561 881 881 881 881 881 561 560 600 280 600 280 600 200 600 280 600 280 560 -1 -1 -1 -1 -1 -1 -1 1 WED THU FR SAT 39 40 41 42 -1 44 PION MU WED THU 44 FR 45 BAT 46 47 48 49 62 1335 1387 ." A.V.A14 Incoming AM, cost Cod Polbck Used AM, cost InveMory(EOP), cost Cod Pollock Cod Pollodt Produced, worms Used labour Available lab Cod-1 Cod-2 Pal-1 Pol-2 Hours Regular Overtime Labour cost Regular Overtime 3712 2450 2809 16 35 5146 881 600 280 390 267 903 1063 1387 2668 2345 2668 75 3480 2975 2809 1387 883 671 1288 1887 2494 2520 2494 190 1447 13 2784 2590 2784 883 12 20 32 1654 819 1303 880 600 280 390 266 2914 4888 98 55 881 881 600 280 390 267 600 280 390 267 13 2914 881 600 561 24 33 5146 1229 4560 280 390 267 560 533 51 881 600 280 390 287 2494 879 800 280 390 265 12 1387 37 17 883 1 43 1e54: 2784 2415 2722 3219 879 600 260 390 265 387 880 600 280 390 266 52 251 5101 32 129 13 2803 2914 1854 561 4767 2341 844 1854 26 2914 881 581 881 881 881 881 881 600 280 390 267 600 280 390 267 600 280 390 267 600 280 390 267 600 260 390 267 600 280 390 267 560 533 560 533 Table C3: Summarized LP output for Rule C in spring, iteration 2, part 2 of 4. 4 MON ::::::::: 51 Thu 52 MD THU Mil SAT 53 54 55 56 AM:. 97000 44000 37000 51734 35207 13477 42342 5811 42342 27027 87000 73523 31180 69389 27027 4245 12138 23797 16229 6739 21171 941 941 941 2905 21171 941 MM SAT 60 SI 02 69 . -1 Thu WED THU FM St SAT 62 59 54 55 56 ' 2140 1540 2045 472 1462 2146 203 1482 35 3747 991 3112 35 1282 2604 427 941 941 941 941 640 900 418 286 640 300 418 286 840 900 416 840 900 416 286 16 268 3112 61000 70000 51734 600 571; 70 52000 68000 52000 9267 36208 42342 27027 .1 941 21171 19514 941 801 840 300 000 -1 -1 1607 MON THU MED mu MS SAT $7, 58 59 60 St 62 63 4408 2170 9001 1465 025 16 59 35 5497 2685 6497 985 2070 545 941 040 300 416 286 640 300 418 286 1001 080 320 660 660 320 10025 30769 999 680 320 -1 1790 940 840 300 416 285 941 840 300 416 286 inNIN"T 44 ?; . 3112 1986 941 801 26829 : 000 571 860 320 442 305 3141 90000 47705 121705 286 26635 3065 26309 21147 78376 1257 30831 1001 1001 1061 081 640 720 340 720 340 720 340 720 640 720 340 600 -1 -1 -1 -1 1 -1 119 .1 60 680 320 416 3142 49327 47746 30631 6882 660 920 MA 3306 2310 3192 1923 3729 999 080 320 442 303 6662 42205 61000 74000 57859 680 320 66 205 05000 90000 58336 SAT 77 1061 Thu 1001 76 1061 67 5526 PM 75 641 MED 5 Thu 74 14414 SO 32 WED 73 1000 THU . Ml 72 1001 65 106 MON 904 13160 11684 MON 946 14 640 300 416 286 1965 76025 28828 1 9018 2380 3016 1482 : 47196 25316 9 31 941 .. 3536 2450 537 1267 71 1964 NUN 3001 57000 06000 55036 3030 54945 1 23797 1966, 601 SAT 89 640 300 946 14 MN 6$ 23920 25 37 THU 07 4263 14080 4506 941 040 300 .1, MON MED 66 64970 0 -1 THU 05 80369 27027 -1 -1 MON 11629 640 900 -1 . 35577 105577 600 640 300 '''' .. 23797 14797 940 640 300 640 900 o - ... 9268 941 0* 941 640 300 416 286 TRU 13514. MN 5497 MED 25266 62000 601 840 900 6040 3045 25267 26429 941 840 300 -1 44 Thu 50 .., 77000 62000 51734 35266 3001 56 :.F..:.:.x.n 87000 67000 840 300 MOM SAT 70 -Ur 7$ , : 114 1652 MON 7HU MED Thu 72 79 74 76 MI 78 162 1516 1671 9770 3150 3364 1009 388 1480 3536 2590 3356 2 38 14 45 24 5846 209 6199 708 3109 1061 1001 1061 720 340 468 324 720 340 468 924 720 340 488 324 1001 880 320 442 305 7 1035 1414 1000 680 320 442 304 2119 841 : 040 609 21663 23674 15315 SAT 77 1072 3 61 60 0077 39 379 15 3185 3509 2251 1061 1061 081 720 720 340 486 324 340 408 924 800 647 Table C.3 : Summarized LP output for Rule C in spring, iteration 2, part 3 of 4. MON THU WED 79 60 61 53000 62000 35851 17149 48000 70000 35651 Thu 82 SAT 84 : ; qms 44 12149 82000 35681 105661 14341 8859 14341 72326 21878 13150 16077 25225 1120 780 300 1121 760 360 WED THU NB 87 88 89 90 20307 80000 15877 4850 1120 1121 1121 700 380 780 360 700 380 -1 ,........,..., 1HU 86 50450 21876: 17149 -1 10938i; 28307 18836 43000 85000 39893 720 THU WED THU MR SAT 60 82 : WC- 81 83 84 ; .40 19106: 2170 2079 2784 995 921 17 31 18 4331 2072 2450 2079 ....., 1786 25601 27926 9553 425 1241 1241 800. 640 400 840 400 -1 -1 1241 840 400 840 400 640 400 840 400 840 400 -1 .1 766 NED THU RE 88 89 90 53 4331 36 26 40 4795 11 1468 2452 3708 1808 486 1121 1120 1121 1121 700 300 494 343 760 300 494 342 760 300 494 343 780 380 494 343 1528 2494 2275 2302 659 12 1934 1120 760 300 494 342 705 1167 375 SAT 01 31 3178 63 4795 . 402. 1240 1241 840 400 548 380 840 400 548 381 1240 640 400 548 360 SAT MON 97 98 100 .. ,. 1055 . ..110v , WED THU RE 102 103 104 ' ' 67000 57397 24603 1018 21234 55850 55856 30036 24603 79982 166962 147746 91892 36036 31392 30820 509 19486 31392 8032 16330 13869 1240 640 400 1241 840 400 1241 1241 1241 840 400 1241 801 600: 640 400 840 400 940 400 640 400 640 400 600 -1 -1 .1; -I .1 .1 .1 .1 NED THU 111 SAT 94 95 98 07 08 4406 2450 3958 5568 3815 3956 35 38 00 7252 7252 37 400 10 3763 4108 1404 1241 1241 425 1241 1241 640 400 548 840 400 546 600 840 400 548 840 400 548 361 381 403 381 381 27928 27028 18018 801: THU 6 10617 1241 99 889 9641 1241 MON 2060 1094 SAT 108 87000 82000 81000 69000 . 70000 179000 147746 91892 36036 ...... :;; 00 ..... THU 101 . 3243 27928 27928 16018 / 3 1384 720 192 1702 NE . 1241 3828 2800 2302 Thu 96 7756 35511 19108 ... 3074 95 74962 1323 1240 Thu 87 MED 68244 68244 35512 31252 55856 55856 36036 . 1241 88 Thu 94 76000 90000 70000 109000 ' 1240 MON 93 . 3307 -1 70 1030 . 51202 55856 61184 126164 10523 15877 234 MON SAT 91 3307 9418 486:: 11 11.1 MON 68000 60000 39693 12149 33355 263111 . -_ MI 83 i '01W*" MON 00 100 3886 2835 3866 36 . 1955 1955 1261, TRU 101 4758 3115 3329 25 84 1822 4497 MED THU NB SAT 102 103 104 105 743 1955 1955 74 40 18 1581 4105 4105 2840 1427 1261 74 46 IS 3774 477 4105 4105 2041) 7119 75 167$ 1240 1241 1241 801t 1241 1241 640 400 546 1241 1241 040 400 546 1241 701; 640 400 548 381 840 400 540 381 840 400 546 381 840 400 540 600 381 840 400 546 381 $01 600. 381 381 761 840 400 548 360 40 . .. - ._ 2972 Table C.3 : Summarized LP output for Rule C in spring, iteration 2, part 4 of 4. .. 12 .::*:.::.x.x.x MON Thu 107 108 MED 109 THU AM SAT 110 111 112 , ,:y.:%.x, ::::52. 64000 84000 71547 12454 64000 1441 : 32911 92000 83000 12454 46365 66190 25610 22238 58559 ,.' 115 37836: 25810 2979 27022 Thu 114 54000 88000 46036 14796 29279 18919 1301 880 420 1301 860 420 641: 660 420 680 420 880 420 640. -1 -I -1 -1 -1 -I' . 3188 16901 9099 841 680 440 660 440 660 440 840 -I MI SAT 40,1-.: MON 110 111 112 ISO :: 114 ,,:,:::, THU 115 3132 3010 2670 778 2050 46 19 1324 1635 4304 2761 1301 1301 1301 1301 660 420 572 400 1301 880 420 672 400 841 880 420 572 400 660 420 572 400 660 420 572 400 84. 79 -1 MED 116 THU 117 462 1889 2451 19 23 82 962 5104 3547 1319 961 PM 1111 -.......-....1632000 1964000 1632007 1964002 305523 4325807 164165 561911 653332 144110 77642 47600 31720 OAT 119 :A0MTAW 68904 50890 68904 2081 1324 19 2018 4370 2761 841 1321 1320 1321 660 1321 660 440 572 419 660 440 672 416 880 440 572 419 660 440 672 419 50890 212 1523 49 2746 1320 440 572 416 AØT: ' $ -1 3770 3045 e 43 4469 961 3116 18919 660 440 THU 1497 13725 29730 880 440 109 1323 3555 37638 22746 1321 MED 7603 42254 22746 27450 59459 1321 108 26 59 900 6242 SAT 119 1320 Thu 16 116 1321 107 12 RR 117 1320 MON 42 7964 48252 24126 1301 5338 2905 3699 Thu 4159 11119 1301 722 1693 tie 86000 37748 124746 97297 37638 10324 1301 4872 2940 4150 WED 65000 67000 7964 35635 118635 98396 37636 5729 24183 MON 640 799 27490 102057 67985 17437 55645 34600 22940 22484 20529 70111 Table C.4 : Summarized LP output for Rule C in summer, iteration 2, part 1 of 5. . 1 IncomiroRM UsecIRM Inventory(EOP) Produced Cod Pollodc Cod Pollock Cod Pollock Cod-1 MON THU 121 122 43000 56000 42254 88000 78000 746 28493 WE) 123 1HU FR 124 125 42254 26493 22178 59459 SAT 126 .: 16901 WED Thu RI SAT 128 129 130 131 132 133 52362 42801 20353 33418 11069 29730 26181 9363 21400 9683 14272 Avalablelab Harm 1320 880 440 Regular Overtime Labour slack 1320 1321 1321 880 440 880 440 880 440 1164 880 440 .1 -1 156 840: Aficostfiguresereinthousend k*MndiclOtmes(00061O --alli ft* 1HU 122 MON 121 WED 1HU 123 124 FR 125 SAT 126 UmmIRM,bmit Iriventory(EOP). cost Prodtmod, nmemmo Cod Pollock Cod Pollock Cod Pollock ONJA Repko Overtime labour cost Regular Overtime RI 138 139 85000 101000 113000 103000 74849 74849 36304 59459 37838 38481 74725 63155 '113000 218000 177519 102793 39639 10151 97297 4707 37838 34430 34430 29730 16700 18919 21550 41846 1321 1361 1361 880 440 1321 880 440 841 880 440 840 920 440 920 440 1360 920 440 -1 -1 -1 -1 -1 -1 -1 -1 0 THU WED 129 130 THU 131 RI SAT 132 133 . '''' ' fliCii 39640 36303 1321 128 SAT 140 1359 920 440 26323 5885 19820 1361 881 920 440 880 -1 -1 1 MON 1HU WED THU FR SAT 135 136 137 138 139 140 4930 3955 4341 5858 3605 4341 10 57 ''''Tcc'ec':' 2494 1980 3944 2730 2451 2451 1 28 5104 26 87 5104 1537 776 56 3200 5394 3325 4214 2081 1833 20 48 26 7719 Pot-1 UmWrobour Ammilablebb THU 137 880 440 MON OW-2 Pol-2 Hours WED 136 1321 EON kiY ..:&:: McomOgRM, ant 1HU 135 880 440 ::: 127 -:.i: KIN 1321 Regular Overtime 11766 42902 21451 Poi-2 Usedlabour . 11768 95000 52199 140199 10597 .... 67000 88000 72647 20353 55234 Cod-2 Pot-1 THU 93000 95000 56000 134000 111822 52362 16901 a MON 1320 880 440 572 418 1320 880 440 572 418 1630 4370 3849 1321 880 440 572 419 1321 1184 880 440 572 269 080 440 572 419 840' 1321 880 440 572 419 1180 1498 28 2183 3146 1321 880 440 572 419 3886 3080 3204 12 70 2924 3297 682 1502 49 2081 2106 1347 2615 2210 36 108 89 51 20 7953 7953 3858 1381 1361 920 440 598 419 2607 1360 920 440 598 418 1324 19 1387 1421 3153 4370 2781 1321 1321 1321 841 880 440 572 419 880 440 572 419 880 440 572 419 840 799, .v.---- 920 440 598 419 5063 1359 920 440 598 417 3869 712 2914 1361 Bel 920 440 598 419 880 837 Table C.4 : Summarized LP output for Rule C in summer, iteration 2, part 2 of S. 4 333 MON THU WED THU ME 142 143 144 145 146 59000 34000 30657 28343 1557 28343 39000 37000 29449 ,.JI SAT 147 - 779 150 %ED 151 THU MO SAT 152 153 154 JK _ ..... 70000 56000 \ 88000 9551 26002 11760 149 73000 45455 41441 9551 11337 THU 7 MON THU MW 156 157 158 ..... -. 45455 24545 29423 63984 16182 920 920 440 920 920 440 921 921 920 440 920 402 440 440 439 439 440 ati MON THU MW THU MR 1113 142 143 144 145 146 23411 11018 18182 83964 12601 1420 960 460 880 ._ SAT 147 23411 92422 28458 9616 14712 91982 11705 1289 31962 47000 57000 62000 48000 47000 57000 25490 7556 MR SAT MON 160 161 163 THU 184 MW THU FR *AT 165 166 167 186 19000 26000 26000 43000 19000 26000 63984 41441 19101 46000 49000 45455 6650 43243 8699 43243 545 49000 64962 105405 41441 0627 21620 16599 12748 3776 31062 ' 7600 18182 20721 9550 10400 3328 21622 1421 1420 1421 1421 520 960 460 1421 960 400 1421 960 480 980 400 1421 1421 1421 960 460 921 960 460 960 460 1016 980 460 960 460 920 960 460 960 960 460 961 920 400 -1 -I -1 -1 .1 -1 402 460 459 -1 ....... -1 ?.$usr MON THU MW THU MO 1011 149 ISO 151 152 153 : THU 159 . 34500 20721 958 920 440 75000 95000 75000 2576 24545 66000 60796 116798 87375 3820 14001 27545 25202 27545 34000 32443 09443 41441 12263 0 MON SAT 154 :x.x.x.* ::ii MON ::: 156 THU 157 VIED MU RV 158 159 100 -- -. SAT -:::4014:::: 101 *** 980 460 545 49000 218 24600 1420 980 460 1108 960 460 920 314 MON THU MW THU RI SAT 103 164 165 166 167 166 ' 3422 1190 1778 1644 2262 1295 1708 54 28 17 16 3424 35 3557 114 ........, 9010 2636 1450 920 920 440 595 0 920 920 440 598 0 23 43 5491 21 1154 2056 3048 921 921 920 440 598 920 440 596 I 1598 4060 1960 2636 882 10 3703 958 920 440 598 30 4234 554 980 30 3327 25 56 5491 1852 1420 900 460 624 437 . 880 1 - 1421 960 460 024 438 1420 900 400 824 437 4350 3325 1424 1030 00 2239 2726 2170 2726 892 46 14 32 4350 2239 819 3306 1680 3308 264 4701 1102 610 1102 2239 12 2163 4701 1721 7970 190 4701 4994 1874 63 2001 4296 555 1421 1421 520 1421 1421 960 460 624 435 1421 960 460 624 438 1421 1421 960 480 624 438 960 480 824 438 900 460 624 438 960 460 624 436 960 460 824 436 494 2668 1716 2636 1514 32 1715 1 44 2965 920 689 1450 1506 1505 1506 233 21 3 2295 22 3141 9040 1404 469 3176 921 1018 980 960 460 024 981 960 460 624 55 920 675 ................... 0 26 5491 960 460 624 1 66 3602 1420 980 400 624 437 1106 960 460 624 139 920 Table C.4 : Summarized LP output for Rule C in summer, iteration 2, part 3 of 5. -.14 W:...: 07:5: NON 170 THU 171 WED 172 Thu 173 HE 174 SAT 175 ,.: MON Thu MED Thu HI 177 178 179 160 181 . SAT 162 11 _ eeetUE'' MON Thu WED Thu NE 36E 184 185 186 187 188 44000 53000 38412 5586 25608 SAT 169 %. , M:::::W i, 47000 54000 66000 52000 46697 45455 303 8849 8449 51512 39000 48000 39000 40000 48000 39000 45000 18182 1420 1420 980 460 3540 36412 1588 11175 9063 63964 41441 15600 11175 38328 24503 43169 06000 118000 66468 105405 41441 17491 1366 38412 39000 15365 . 15365 4470 8400 19164 12251 21585 1201 1201 959 800 400 : 960 460 25756 4541 31982 20721 1421 1421 1421 921 1200 960 460 1200 980 460 960 460 920 800 400 600 400 -1 -1 -1 -1 800 400 800 400 -1 -1 MON THU 170 171 2726 2310 2708 3132 0 9 59 5491 NED 172 1620 2636 513 1803 5282 315 1420 990 480 624 437 1420 960 480 624 437 Thu ME 173 174 -101: OTC:: Thu 178 MON 177 2262 2320 1880 1365 1575 2262 318 2228 2228 2239 99 1069 4711 3786 668 4701 1421 1421 1421 960 460 624 436 SAT 175 53 960 460 624 438 1450 21 960 460 424 438 2 11 20 4640 42 4840 3048 921. 920 875 1200 800 400 520 380 THU ME 179 160 161 2784 1200 600 400 520 380 . 780. SAT 182 1218 1218 1341 858 18018 601 400 800 800 400 800 400 401 800 400 129 400 399 399 SOO Thu WED THU Hi 185 166 187 186 324 1412 6 22 2537 2617 1801 3173 1201 1201 800 400 520 800 400 520 959 800 400 520 381 381 151 27 4640 6 675 RE SAT 194 195 196 1914 1715 1485 429 897 7 31 16 3093 893 '. 780 1200 800 400 520 380 1071 800 400 520 257 800 800 400 520 0 49000 73000 38747 10253 39626 , 760: :0C 1$0 SAT 169 ' 27027 17117 1201 1201 761 800 400 800 400 800 400 600 400 SOO 400 760 -1 -1 -1 -1 -1 MON THU 191 192 838 601 600 400 520 801 1 1 800 400 520 MED 193 2842 2555 2247 1578 11 2649 50 THU RI 194 195 EAT 100 595 1387 1892 44 1230 17 1198 10 27 1164 84 4564 65 3314 760: 34234 1200 1261 1844 34234 1201 4460 3500 3830 r 54054 1201 7018 2964 10958 45068 10253 54914 127914 88288 15179 4101 30380 5040 368 22543 10813 2957 164 1511 23 1350 10243 12817 1071 Thu 193 10957 100000 MON 2552 1855 2228 770 648 1200 800 400 WED 192 25834 36036 12670 81870 36038 2235 THU 191 77000 100000 66043 7392 7392 20165 241 NED 33000 49000 40330 5588 53000 15365 84000 45872 43189 . 33 21000 22000 21000 INON 1201 1201 600 400 520 800 400 520 381 381 2913 3973 2616 1200 800 1201 1201 761 400 520 380 400 520 800 400 520 780 381 381 723 SOO Table C.4 : Summarized LP output for Rule C in summer, iteration 2, part 4 of S. 12 MON THU 198 199 WM 200 101000 109000 116000 90000 88043 66043 66043 34957 77914 THU MR SAT 201 202 203 11672 54061 65934 29 44227 THU WRIO THU MR SAT SIM* MON THU NED THU 205 MR 206 207 SAT 208 209 210 51* 212 213 214 215 218 217 30360 30360 30380 5461 23474 104474 69422 1042*1 13200 30265 36923 22114 8763 1421 980 460 -1 1201 1201 1199 1199 23385. 759 600 400 BOO 800 400 800 400 800 400 760 983 960 460 -1 -1 I 437 -1 1 . 1 004c MON THU NED THU MN SAT %. 198 199 200 201 202 203 5858 4060 3830 0322 3150 3830 35 58 78 103 103 76 7018 7018 7018 1262 3830 689 1893 A. ::: , 1201 1201 600 400 520 381 800 400 520 $00 400 520 391 311 16162 5458 30000 $456 30000 11760 6216 1462 2729 1420 1421 1421 121 960 480 960 460 960 460 920 -1 -1 799 THU MED 205 206 207 1914 1435 1914 2308 31982 1546 3826 2835 2636 613 DIU 208 1192 1227 MR SAT 200 210 960 460 960 3605 1199 $00 400 520 379 4468 1199 600 400 520 379 22 2830' 759: 760 721' BMW 12 52 3986 5491 3251 1288 983 060 460 624 22 1421 960 460 624 435 THU MR 221 222 223 28522 920 060 460 40 15000 14261 746 980 480 214 1361 960 460 980 920 , ' MON 212 Thu 213 SRO 214 191 Thu 215 MR SAT 216 217 2110e Ali .,,.... 3 3557 2576 4701 401 1421 1421 121 960 460 624 436 900 460 624 438 920 115 960 460 596 960 460 598 960 460 598 920 4966 19620 1361 881 920 440 1120 440 920 440 920 440 020 440 860 -1 -/ -1 -1 -1 MON THU WED THU MR SAT 219 220 221 222 223 224 4 i 17414 211159 308 748 960 480 598 83359 39640 1380 3886 2520 3880 6 4250 2096 3248 2276 2525 2139 0 2205 920 960 480 598 12468 16359 40 30580 998 15 12466 43719 39640 1361 3 35 2482 4420 25690 SAT 224 1361 2320 1260 2320 14$ 1050 56000 65000 43534 61119 7476 7947$ 1020 960 460 960 101 101 . . 1420 960 460 824 437 NMO 220 --., ,,. 21 43 THU 219 18400 1856 1050 1708 2239 MON 40000 67000 36000 72000 40000 66899 2551 2551 17526 MON 12 1201 . tI : 1201 400 32000 30000 29449 ' 20545 . .. . to MON 33000 60000 41000 81000 33000 45455 20545 44228 17526 35052 83964 41758 11871 116000 206000 200000 151919 85985 .. '' : 40 1335 5934 723 1530 1387 12 9 12 42 20 5250 1508 4492 3213 2914 1361 1301 1361 1360 1361 $81 020 440 596 410 020 440 508 410 920 440 596 419 920 440 596 418 020 440 598 419 880 537 Table C.4 : Summarized LP output for Rule C in summer, iteration 2, part 5 of 5. 16 -fU .. YOH THU NED THU MR 226 227 226 229 230 53000 69000 43534 9468 52000 49000 42887 47941 9408 9113 26618 SAT 231 ?A2" 70000 81000 41613 41441 9113 3766 17155 23970 :::x4cior tga 1360 1361 920 440 920 440 1340 920 440 -1 20 80H 226 Thu 227 234 235 28337 18613 28367 69000 21059 70059 41441 17414 233 62000 48000 41613 236 20367 29670 237 230 56559 21959 20357 81000 62387 110387 80517 21959 3845 16045 14309 20721 921 920 440 921 920 440 439 439 VMD THU MR 226 229 230 11355 16645 9300 680- 14935 29279 10079 1300 1301 1300 1301 660 420 1301 486 660 420 680 420 106351 680 420 660 420 640 70400 51700 -1 .1 352 -1 -Ape SAT 231 ov:: 6155 2181000 2394000 2161005 2304002 480205 5460419 520771 395176 1054257 150874 WON THU WED 233 234 235 Thu 236 MR OAT --:*x.vorrAke:' 237 238 ...,,,......,.. .. .. ....... 3074 2416 2525 549 3016 1715 2467 1678 9 35 6259 4060 2835 2414 S 529 1002 1450 9 11 35 1143 5181 3524 1360 1361 920 440 598 416 020 440 598 419 1340 920 440 598 399 1846 651 26 21 1101 2103 3046 921 921 920 440 596 020 440 506 1 3590 1880 2414 41 31 5027 3429 55 5027 1 ..... - 2050 709 40 2463 11 2195 4304 1814 164076 19345 488 108351 91206 1366 880.' 1162 1045 20 1300 1301 1300 880 420 572 399 1301 1301 680 420 572 880 420 572 399 880 420 572 400 880 420 572 400 400 125338 03790 125336 83700 460 4256 157273 840 464 70400 $1700 49530 33330 121164 116 ch CNI r- re) co r- 0 r- Day of year Figure C.1 : Inventory level for LP model and simulation model in spring (Rule A, iteration 1). Pol (LP) Cod (LP) Simulation 500 450 350 300 I 1111111 400 11111111IMMIL mots IIILIN 1 ii1111111111 IPIIMIIMIllt taminumi II g, 250 "C 200 11111 UM 111111111 111111111MIUNI 150 II WWI II= 1111111111111 111111 MINK 100 50 11 WV WE 11111111111111 V 'it BA 1 1111 WIlilililiITTIMNIIIN Will Wiltillil it 004 MIMI 1 1111111 MU We co (NI I.') <NI Day of year Figure C.2 : Inventory level for LP model and simulation model in summer (Rule A, iteration 1). 117 350 300 250 200 t, 150 IOU 50 r- Ln (NI Ln r- 40 co Day of year Figure C.3: Inventory level for LP model and simulation model in spring (Rule C, iteration 2). rf. Tr Tr. Pol (LP) Cod (LP) U') 40 40 N o Simulation 0 N Ch 1- 0 co tN C.1 Day of year Figure C.4 : Inventory level for LP model and simulation model in summer (Rule C, iteration 2). (N1