Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
on
Amit Chauhan
(Roll No. 8)
PGDIE Class of 2013
Prof. T. Prasad
Faculty, NITIE Prof. Sumi Jha Faculty, NITIE
This is to certify that Mr. Amit Chauhan, a student of the Post Graduate Diploma in Industrial Engineering (PGDIE), 41st Batch of the National Institute of Industrial Engineering (NITIE), Mumbai has completed his summer project on Streamlining
The Project was successfully completed under my guidance and supervision from the 12th April, 2012 to 12th June 2012. We have derived immense benefit from the project and his contribution to our organization is highly appreciated. I hereby convey my best wishes to him for all his future endeavors.
This is to certify that Mr. Amit Chauhan, a student of the Post Graduate Diploma in Industrial Engineering (PGDIE), 41st Batch of the National Institute of Industrial Engineering (NITIE), Mumbai has completed his summer project on Streamlining
The Project was successfully completed under my guidance and supervision from the 12th April, 2012 to 12th June 2012. His hard work is deeply appreciated. I wish him all the best in his future life.
ACKNOWLEDGEMENTS
Too often we are so preoccupied with the destination, we forget the guiding light. -Anon
I take this opportunity to extend my sincere thanks to ACC Concrete Limited for offering a
unique platform to earn exposure and garner knowledge in the field of logistics of supply chain. I wish to extend my sincere and heartfelt gratitude to my guide Mr. Balram Chakarwarti, Procurement Ofiicer (N&E) , who guided, supported and encouraged me during the entire tenure of the project. I also thank Mr. Anil Banchhor, Vice President ,North East Operations, for his co-operation and valuable advice throughout the course of my project. Also I would like to take this opportunity to thank Mr. Nirmal Singh for their support throughout the course of project. I am able to say with conviction that I have immensely benefited from auspicious and prestigious association as a summer intern with Cadbury India. I also thank Prof. T. Prasad and Prof. Sumi jha, my faculty guide, who inspired me by his discussions and showed me the right course to pursue. I also wish to thank all people in the Head Office and the various plants of ACC Concrete Limited for their constant support and help in accomplishing the objectives of the project. There are many who I may have left out in the acknowledgement, but whose co-operation no doubt went a long way in the project completion.
Executive Summary
ACC Concrete Ltd. is separated from its parent company ACC Cement in 2008 for more focused approach on Ready Mix Concrete(Ready-made Concrete) segment as RMC industry has shown 24% CAGR from year 2000 to 2006, consider as a high growth industry. ACCCL has formed itself as a major player in the RMC industry. ACCCL sees to right from its inception in 2008 outsource its outbound Logistics service to around 75 medium & small size local contractors (around 80% are small contractors) on a contract basis of 2-3 years. Outbound logistics mainly comprises of delivery of Concrete to the customer site. Logistics is a crucial operation as the delivery of concrete has to be synchronized with other activities and hence it adds to the dynamics of this operation. Not only the site but exact time has to be kept in mind of the logistics officer as the shelf life of Concrete is just 3 hours. RMC transportation is unique as: It is a Road transport Special Body of TM(Transit Mixer) difficult to use for other transports Return Trips: Drum mixer is empty - 50% of total km traveled, No backhaul One load : one unloading point Operating Zone: 50-60 km around RMX plant There are issues concerning traffic jam, non availability of TM, legal issues, reluctant nature of drivers. In the lean period contracted TM lies idle adding to the cost. A significant amount of breakdown hours due to improper maintenance of TM by contractor act as a bottleneck for company to deliver on time. To avoid risk ACC maintains a large fleet of TM at the plant increasing logistics cost leading to substandard number of trips per day. The % of logistics cost is around 14 - 25 % of the total cost of the Concrete (varies with the plant). Logistics Contract utilization is around 50% and dips to as low as 20% in lean season. With increasing customer expectation and very stringent profit margin, ACCCL in its pursuit to achieve competitive advantage, needs to control allocation of production to different plants to serve different customers taking into consideration different relevant costs for decision making. It also wants to schedule its fleet such that optimum utilization of resources can be done. Thus the objective of this project is: Mathematical modeling for allocation of production in with minimum total cost Generating schedules for the fleet for each plant
Table of Contents
3. Need & Objective of Project......................................................................... 17 4. Literature Survey.......................................................................................... 18 5. Methdology ................................................................................................. 19 6. Modelling ..................................................................................................... 20
6.1 For Optimal Allocation of Production ........................................................................................ 20 6.2 For Scheduling ............................................................................................................................ 22
7 Cost Benefit Analysis ..................................................................................... 23 8 Future Scope ................................................................................................. 23 9 Limitations .................................................................................................... 23 10 Academic Contribution ............................................................................... 23 References ....................................................................................................... 24 Appendix I ........................................................................................................ 25 Appendix II ....................................................................................................... 30 Appendix III ...................................................................................................... 46
Table of Figures
Figure 1 Showing comparison ............................................................................................................... 10 Figure 2 Market Share........................................................................................................................... 15 Figure 3 Map showing plant location.................................................................................................... 16 Figure 4 Input window .......................................................................................................................... 46 Figure 5 Showing choosing plant of which want to see schedule ........................................................ 46 Figure 6 Schedule For Pratibha plant .................................................................................................... 47 Figure 7 Distance Matrix ....................................................................................................................... 47 Figure 8 Truck Available Table .............................................................................................................. 48 Figure 9 Mix Proportion Matrix ............................................................................................................ 48 Figure 10 Material cost ......................................................................................................................... 49
1. Company Profile
1.1 RMC an overview
Ready-mix concrete (RMC) is a ready-to-use material, with predetermined mixture of cement, sand, aggregates and water. RMC is a type of concrete manufactured in a factory according to a set recipe or as per specifications of the customer, at a centrally located batching plant. It is delivered to a worksite, often in truck mixers capable of mixing the ingredients of the concrete en route or just before delivery of the batch. This results in a precise mixture, allowing specialty concrete mixtures to be developed and implemented on construction sites. The second option available is to mix the concrete at the batching plant and deliver the mixed concrete to the site in an agitator truck, which keeps the mixed concrete in correct form. In the case of the centrally mixed type, the drum carrying the concrete revolves slowly so as to prevent the mixed concrete from "segregation" and prevent its stiffening due to initial set. The use of the RMC is facilitated through a truck-mounted 'boom placer' that can pump the product for ready use at multi-storeyed construction sites. A boom placer can pump the concrete up 80 meters. RMC is preferred to on-site concrete mixing because of the precision of the mixture and reduced worksite confusion. It facilitates speedy construction through programmed delivery at site and mechanized operation with consequent economy. It also decreases labour, site supervising cost and project time, resulting in savings. Proper control and economy in use of raw material results in saving of natural resources. It assures consistent quality through accurate computerised control of aggregates and water as per mix designs. It minimizes cement wastage due to bulk handling and there is no dust problem and therefore, pollutionfree.
availability of cement. The levy of additional taxes & duties on RMC, entry tax, excise duty also contributed to the slow development of the concept. The growth of RMC is predominantly driven by demand from the metro cities. In cities like Mumbai, the mandatory use of RMC is in construction of flyovers provided the requisite impetus to growth, according to an ICRA analysis. RMC is particularly useful when the building activity is located in congested sites where little space is available for sitting the mixer and for stock piling of aggregates. The use of RMC is also advantageous when only small quantities of concrete are required or when concrete is to be placed only at intervals. Even as the concept of ready-mix concrete (RMC) is still catching up in the country, cement majors are keenly focusing on entering the new area in a big way. Anticipating huge potential for the product, cement majors, including ACC, Grasim, L&T, India Cements, Priyadarshini Cements, Chettinad Cement and Madras Cements, are foraying into the RMC business and the share of RMC is expected to go up from present levels of around 5 per cent of the total cement production to the global average of 70 per cent, according to industry players. For growth of the industry, government bodies, private builders, architects/engineers, contractors, and individuals required to be made fully aware about the advantages of using ready mix concrete, government bodies/consultants needs to include ready mix concrete as mandatory in their specification for execution, government specifications for CPWD and PWD jobs should include Ready mix concrete as a mandatory item. Apart from this tax breaks are required for the growth of RMC and developers/contractors needs to be discouraged from piling up materials like metal, sand etc. on roads/foot paths.
A centralised concrete batching plant can serve a wide area The plants are located in areas zoned for industrial use, and yet the delivery trucks can service residential districts or inner cities Better quality concrete is produced Elimination of storage space for basic materials at site Elimination of procurement / hiring of plant and machinery Wastage of basic materials is avoided Labour associated with production of concrete is eliminated Time required is greatly reduced Noise and dust pollution at site is reduced Reduce cost
The materials are batched at a central plant, and the mixing begins at that plant, so the travelling time from the plant to the site is critical over longer distances. Some sites are just too far away, though this is usually a commercial rather than technical issue.
Residential Complex (Flat) promoters Large Construction Company engaged in infrastructure & industrial projects Small and medium contractors engaged in housing & commercial buildings
Share of various segment in RMC consumption Infrastructure forms the major customers of RMC Industry with share of 38% in 2010 & hike of 10% in overall RMC demand
India is second largest producer of cement in the world in terms of capacity, cement is a major component of RMC Low cost of production as compared to other substitute methods Abundance of other raw material (fine & coarse aggregate) Strong Sales & distribution network Good connectivity of roads to deliver concrete in Urban & Semi-Urban areas
Weakness
Demand supply Gap, overcapacity & high inventory Increasing cost of labours High Interest rates No tax rebate/subsidy from government
Opportunities
Strong growth of economy in the long run Increase in infrastructure projects in India Growing middle class income & housing demand Technological changes Increase in government spending
Threats
Fluctuations in cement prices Excess overcapacity can hurt margins as well as prices Entry of new players Effect of global recession on Real Estate & Infrastructure
Major Milestones:
1936
Incorporation of The Associated Cement Companies Limited on August 1, 1936. With the transfer of the 10th company to ACC, viz. Dewarkhand Cement Company, the formation of ACC is complete on October 23, 1937. Indias first entirely indigenous cement plant established at Chaibasa in Bihar
1937
1947
1956 1961
Bulk Cement Depot established at Okhla, Delhi Blast furnace slag from TISCO used at the Chaibasa Unit to manufacture Portland Slag Cement for the first time in India. Manufacture of Accocid Cement, which resists the corrosive action of acids and chemicals. Manufacture of Hydrophobic (waterproof) cement at ACC Khalari Cement Works in Bihar. Manufacture of Accoproof, a waterproofing additive. ACCs Central Research Station (CRS) established at Thane Manufacture of Portland Pozzolana Cement.
1961
1961
1968
ACC supplied and commissioned one-million-tone iron ore pelletizing plant ordered by TISCO Take-over of The Cement Marketing Company of India (CMI) ACC wins international contract for operation and management of a new one million tone cement plant at Yanbu-Ras Biridi in Saudi Arabia. Commissioning of the first 1 MTPA plant in the country at Wadi, Karnataka. Incorporation of Bulk Cement Corporation of India, a joint venture with the Government of India. ACC starts the commercial manufacture of Ready Mixed Concrete at Mumbai. Tata group sells 7.2% of its stake in ACC to Ambuja Cement Holdings Ltd, a subsidiary of Gujarat Ambuja Cements Ltd. (GACL) Tata Group sells their remaining stake in ACC to the GACL group, who with 14.45% now emerge as the single largest shareholder of ACC. ACC wins PHDCCI Good Corporate Citizen Award ACC named as a Consumer Superbrand by the Superbrands Council of India, becoming the only cement company to get this status.
1973 1979
1982 1992
1993
1999
2000
2002 2004
2004
GreenTech Safety Gold and Silver Awards awarded to Madukkarai Cement Works and Katni Refractory Works by Greentech Foundation for outstanding performance in Safety Management System. Holcim group of Switzerland enters strategic alliance with Ambuja Group by acquiring a majority stake in Ambuja Cements India Ltd. (ACIL) which at the time held 13.8 % of the total equity shares in ACC. Holcim simultaneously makes an open offer to ACC shareholders, through Holdcem Cement Pvt. Limited and ACIL, to acquire a majority shareholding in ACC. Pursuant to the open offer, ACILs shareholding in ACC increases to 34.69 % of the Equity share capital of ACC. Change of name to ACC Limited with effect from September 1, 2006 from The Associated Cement Companies Limited. ACC receives Good Corporate Citizen Award 2005-06 from Bombay Chamber of Commerce and Industry New corporate brand identity and logo adopted from October 15, 2006 Ready mixed concrete business hived off to a new subsidiary called ACC Concrete Limited. ACC wins CNBC-TV18 India Business Leader Award in the category India Corporate Citizen of the year 2008 ACC received the Jamanalal Bajaj "Uchit Vyavahar Puraskar" of Council for Fair Business Practices
2005
2006
2006
2006 2008
2008
2009
2010
ACC acquires 100 percent of the financial equity of Encore Cements & Additives Private Limited which is a slag grinding plant in Vishakhapatnam in coastal Andhra Pradesh. This company became a wholly-owned subsidiary of ACCCL developed self compacting M100 grade concrete with high tower pumping capability
2012
be a respected partner through trust and openness Integrity in everything we do An agile organization with global leadership and competence Effectiveness through competence Continuous improvement through innovation
Performance
Adding value by delivering on our promises to each other and to our stakeholders Best solutions for our customers and become the supplier of choice Competitiveness through excellence in all spheres Focussed business decisions through ownership and accountability
Passion
Dedication and commitment- we care about everything we do o We care about our people, their safety and their development o We care about our customers, stakeholders and their success o We care about our world, in particular the communities we live and work in Energising & inspiring others through leading by example ,timely recognition and celebrating success We take pride in performing well
ACC set up India's first commercial Ready Mix Concrete (RMX) plant in Mumbai in 1994 which together with the promotion of bulk cement has played a key role in redefining the pace and quality of construction activity in our large cities and mega infrastructure projects. The Ready Mix Concrete business of ACC was reorganized as a separate wholly owned subsidiary which was incorporated as ACC Concrete Limited with headquarters in Mumbai. Today this company is one of the largest manufacturers of Ready Mix Concrete in India with a countrywide network of over 30 plants, with modern equipment and a large fleet of transit mixers.
411 13% 5% 8% 4%
311 8%
230 8% 5% 13% 5%
66
25%
33%
17% 10% 47% Pan India Delhi 24% 71% 9% 35% Mumbai Hyderabad 69%
13%
54%
Chennai
It offers solutions under two broad categories: Concrete solutions Ready Mixed concrete Special concretes Customized / specified concrete Services Value Added services Vendor managed inventory Onsite batching plants under various working models
Objective
o o o o o
Identification of relevant cost for multiplant production allocation decision making Developing a mathematical model for optimization of production allocation Facilitating interplant truck transfer Schedule generation for fleet to meet customers due time Help in improving service quality by facilitating time negotiations
4. Literature Survey
A key problem managers face is how to allocate scarce resources among various activities or projects. Linear programming, or LP, is a method of allocating resources in an optimal way. It is one of the most widely used operations research tools and has been a decision making aid in almost all manufacturing industries and in financial and service organizations. In contemporary market, people prefer to products with best quality at the lowest prices, regardless of where they are produced. Hence, most companies can no longer afford to produce their products in a single plant to provide the products needed with the lowest production cost in the market . To get the edge of competitive strategy, several studies suggest that firms should transfer production to locations for lowing production cost and maximizing total production quantities in a whole while maintaining quality and reliability. Production planning process in a multi-plant facility is a large-scale problem that many industries with complex operations face on a continual basis and different computational models have been proposed. Bhatnagar and Chandra defined the property of a coordinated multi-plant production planning problem as seeking to link together the production plans of hierarchical integrated manufacturing plants. In other words, the objective of coordination is to achieve better performance for the entire network, such as minimizing total relevant costs, improving service quality etc. Various mathematical models are proposed for such optimization problems under linear programming, Integer programming etc. In the term linear programming, programming refers to mathematical programming. In this context, it refers to a planning process that allocates resources labor, materials, machines, capitalin the best possible (optimal) way so that costs are minimized or profits are maximized. In LP, these resources are known as decision variables. The criterion for selecting the best values of the decision variables (e.g., to maximize profits or minimize costs) is known as the objective function. Limitations on resource availability form what is known as a constraint set. Transportation cost represents approximately 40 to 50 percent of total logistic costs and 4 to 10 percent of the product-selling price for many companies. As such, transportation decisions directly affect the total logistic costs. Transportation is an important component of supply chain competitiveness since it plays a major role in the inbound, inter-facility, and outbound logistics. In this context, assigning and scheduling vehicle is a crucial management problem. It can be easily noted that the just-in-time supply problem considered here also shares many common aspects with a large number of related logistic problems that have been considered in technical literature. For instance, the assignment of trucks for transportation can be modelled as a vehicle routing problem (VRP), which is among the most thoroughly investigated problems of operations research. The version of the VRP more related to our case study concerns the routing of a fleet of vehicles with time-window constraints and is known as Multi-Depot Multi-Vehicle Routing Problem with Time Windows. The nearly prohibitive combinatorial complexity of this problem makes analytical approaches impracticable, especially for cases of a size comparable to our problem. Thus, available literature focuses on heuristic approaches capable to achieve satisfactory solutions in acceptable times.
5. Methdology
The methodology being followed in project development is shown in figure below.
Understand the scope and objective of the project
Data Collection
1. Understand the scope and objectives of the project The requirements of the project are analysed thoroughly in order to plan execution plan. The boundaries of the project are defined that what it should include and what it should not. 2. Data collection Firstly, the relevant data for this project is identified. Then, data is collected from different concernced authorities. For example, logistics related data from logistics officer and raw materials data from procurement data etc. 3. Understand System Constraints The different constraints like capacity constraint, requirement fulfil constraint. For scheduling number of TMs , speed in peak hour and non-peak hour etc are considered. 4. Develop Mathematical model for optimal allocation Linear programming model is developed and implemented using open solver as it has 400 decision variables with an objective of minimum total cost. 5. Develop fleet schedules Scheduling algorithm is designed such that it will schedule trucks according to customer due time and propose schedule for customers it wont able to serve on time due to limiting trucking capacity.
The macros being developed are prone to errors and therefore testing of the developed tool should be done in order minimize errors while usage. In this phase, any improvement suggested by mentor can also be incorporated.
6. Modelling
ACCCL manages a fleet of TM (Transit Mixer) & Pumps for delivery of RMC at the customer site. Fleet management is one of the important operations of ACCCL. Fleet management is a basic need for following reasons: 1. Efficient Delivery at customer end 2. Availability of equipment, technical excellence & service availability
o Total cost comprises of raw materials cost and logistics costs only. As other costs are not relevant to this decision making. o Logistics cost is calculated on the basis of distance and average speed and it doesnt take into consideration the condition of route between plant and customers.
Objective Function
The objective function is the minimizing total cost. Here total cost is sum of logistics cost and raw material cost. This are relevant costs for this , as raw material is procured from local vendors
therefore different raw material prices. Logistics cost is directly proportional to distance between plant and customer site.
Capacity constraint Each plant has some fixed production capacity above which plant may not able to produce even if demands exceeds. So, capacity of plant is the constraint. For each plant p,
Demand Fullfillment constraint The demand of each customer should be fulfilled. As it is minimization problem , if this constraint is missing it will allocate zero to all plants and even negative if non-negative constraint is missing. For each customer r,
Maximum Distance served Constraint As the shelf life or concrete has only 3.5 hours after adding admixture, it constrain plants to serve customers. As only geographical vicinity plant can serve. This creates needs to add constraint of maximum distance of customer a plant can serve. Dist(p,r) = Dist(p,r) = 9999999 if Dist(p,r) <=MaxDist
Non-Negativity Constaint Allocation of production and distance between plant and customers can not be negative.
We suppose that at a given decision time, R (request) demands from different customers have been received, and have to be assigned to P (plants) different PCs. Thus, we introduce the following indices: p {1,,D} Plant-related index. r {1,,R}, customer or demand-related index. h {1,,H} Grade of concrete-related index. l {1,,L} raw material component-related index.
Average : It represents the average speed of the TM . Rate : It is the price of diesel per litre. Distance(p,r) : It represents distance of plant p and customer r. CEIL(x,y) : It is function that returns value equal or greater than x such that x is multiple of x. Greater than x is the next multiple of y greater than x. For example, if x=32 y=7 then CEIL(x,y)=35 Allocate(p,r) : It is production allocated to plant p for serving customer r. Ratio(h,l) : It represents quantity of material required for one cubic metre where grade of concrete h and l component of raw material. Price(l,r) : It represents price of raw material l at plant r.
Step 4 : Check whether this customer j is served by plant i. If yes, go to step 5 and if No, go to step 3 Step 5 : Calculate number of trips by using allocated production . Step 6 : Now for each trip n to 1 , reapeat step 7 to 9 Step 7 : Check whether it is first shipment from plant i to customer j, if yes, go to step 8 else to 9 Step 8 : Chech whether TM is available or not, if available schedule by calculating dispatch timing based on due time else schedule it when Tm will available and notify user about it. Step 9 : Chech whether TM is available or not, if available schedule by adding batching time in previoustruch dispatch time else schedule it when Tm will available and notify user about it.
8 Future Scope
In future , constraints of type of road can also be added. Also it can be further modified to be used by marketing people for quoting prices. It can further be develop to absorb if truck delays and make an alternate schedule for it.
9 Limitations
It is isolated Excel Application and not connected to any database in backend therefore raw material data need to changed manually. OpenSolver is required for it to work.
10 Academic Contribution
Practical application of Linear Programming in industry Exposure to Solver and opensolver Modelling in Excel using Macros Hands-on experience on SAP Logistics Operations/Principles
References
[1]Bhatnagar R., Chandra P., and Goyal S.K., Models for MultiPlant Coordination, European Journal of Operations Research, vol. 67, no. 2, pp. 141-160, 1993
[1] C. Canel and B. M. Khumawala, Multi-period international facilities location: An algorithm and application, International Journal of Production Research, Vol.35, No.7, pp.1891-1910, 1997 [2] M. A. Cohen and H. L. Lee, Resource development analysis of global manufacturing and distribution networks, Journal of Manufacturing and Operations Management, Vol.2, pp.81-104, 1989. [3] P. Haug, An international location and production transfer model for high technology multinational enterprises, International Journal of Production Research, Vol.30, No.3, pp.559-572, 1992.
[4] Shah N., Single and Multisite planning and scheduling : current status and future challenges, in Proceedings of AIChE Symposium Series, Foundations of computer Aided Process Operations (FOCAPO98), Snowbird, USA, pp.75-90, 1998
[5] V. Verter and C. Dincer, An integrated evaluation of facility location, capacity acquisition, and technology selection for designing global manufacturing strategy, European Journal of Operational Research, Vol.60, pp.1-18, 1992.
Appendix I
Code for Scheduling from one plant : Sub scheduling_1() Dim TM_available As Integer Dim TM_left As Integer Dim cust_range As Range Dim differnce_range As Range Dim batching_time As Variant Dim counter As Integer Dim truck_number As Integer Dim min_range As Range Dim min_arrival As Double Dim cust_name As Range Dim crit_range As Range Dim match_range As Range Dim row_num_min As Variant
batching_time = Worksheets("Trucks Available").Range("C27").Value TM_available = Worksheets("Trucks Available").Range("E4").Value 'Worksheets("Sheet1").Range("B3").Value = TM_available Set cust_range = Worksheets("Dynamic Data Scheduling").Range("C179:C203") Set difference_range = Worksheets("Dynamic Data Scheduling").Range("C209:C233") Set cust_name = Worksheets("Dynamic Data Scheduling").Range("A209:A233") counter = 0 TM_left = TM_available Worksheets("sheet1").Range("A1").Value = TM_available Worksheets("sheet1").Range("A2").Value = TM_left
'DELETING PREVIOUS OUTPUT Worksheets("Sheet1").Select Range("A4:D100").Select Selection.ClearContents Worksheets("sheet1").Range("B3").Select For i = 1 To 25 'for plant 1 to check for each customers If WorksheetFunction.IsNA(cust_range.Cells(i, 1)) = False Then ' to check whether served or not by this plant number_trips = Worksheets("Trips").Range("C4:C28").Cells(i, 1).Value ' if served trips required For j = 1 To number_trips 'counter for number of trips made ActiveCell.Offset(1, 0).Select ' for new row feed If TM_left > 0 Then ' check whether TM is available for dispatching or not If j = 1 Then ' if first first trip and first time already calculated in sheet If counter = 0 Then ActiveCell.Value = cust_range.Cells(i, 1) ' getting value from that sheet ActiveCell.Offset(0, 1).Value = 2 * (difference_range.Cells(i, 1) / 1440) + ActiveCell.Value ActiveCell.Offset(0, 2).Value = 0 ActiveCell.Interior.ColorIndex = 3 ' truck_number = WorksheetFunction.Floor(counter / (TM_available), 1) counter = counter + 1 ActiveCell.Offset(0, -1).Value = counter ' column a value ActiveCell.Offset(0, 4).Value = cust_name.Cells(i, 1).Value ' column F value TM_left = TM_left - 1 Else ActiveCell.Value = cust_range.Cells(i, 1) ' getting value from that sheet
For k = 1 To counter - 1 If Worksheets("Sheet1").Cells(3 + k, 3).Value < ActiveCell.Value & Worksheets("sheet1").Cells(3 + k, 4).Value = 0 Then TM_left = TM_left + 1 Worksheets("Sheet1").Cells(3 + k, 4).Value = 1 End If Next k
ActiveCell.Offset(0, 1).Value = 2 * (difference_range.Cells(i, 1) / 1440) + ActiveCell.Value ActiveCell.Offset(0, 2).Value = 0 ActiveCell.Interior.ColorIndex = 3 ' truck_number = WorksheetFunction.Floor(counter / (TM_available), 1) ' ActiveCell.Offset(0, -1).Value = truck_number ' column a value counter = counter + 1 ActiveCell.Offset(0, -1).Value = counter ' column a value ActiveCell.Offset(0, 4).Value = cust_name.Cells(i, 1).Value ' column F value TM_left = TM_left - 1 End If Else ' if 2 or more trips ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + (batching_time / 1440) 'adding batching time for finding subsequent truck timing For k = 1 To counter - 1 If Worksheets("Sheet1").Cells(3 + k, 3).Value < ActiveCell.Value & Worksheets("sheet1").Cells(3 + k, 4).Value = 0 Then TM_left = TM_left + 1 Worksheets("Sheet1").Cells(3 + k, 4).Value = 1 End If Next k
ActiveCell.Offset(0, 1).Value = 2 * (difference_range.Cells(i, 1).Value / 1440) + ActiveCell.Value ActiveCell.Offset(0, 2).Value = 0 ActiveCell.Interior.ColorIndex = 14 ' truck_number = WorksheetFunction.Floor(counter / (TM_available), 1) ' ActiveCell.Offset(0, -1).Value = truck_number 'column a value counter = counter + 1 ActiveCell.Offset(0, -1).Value = counter ' column a value ActiveCell.Offset(0, 4).Value = cust_name.Cells(i, 1).Value ' column F value TM_left = TM_left - 1 End If Else ' no truck available
' when no truck is available in the plant then we should look for earliest truck that will come in premises to schedule
Set min_range = Worksheets("Sheet1").Range(Cells(3, 4), ActiveCell.Offset(-1, 5)) Set match_range = Worksheets("Sheet1").Range(Cells(4, 5), ActiveCell.Offset(-1, 3)) ' min_arrival = Application.DMin(min_range, C3, criteria_range) min_arrival = WorksheetFunction.DMin(min_range, Worksheets("Sheet1").Range("E3"), Worksheets("sheet1").Range("N2:N3")) ' checking condition for if no truck available then whether comes late or early for further delivery If j = 1 Then If (min_arrival / 10000) > cust_range.Cells(i, 1).Value Then MsgBox ("Customer " & cust_name.Cells(i, 1).Value & " can not be served on time with present trucks") ActiveCell.Value = (min_arrival / 10000) + (batching_time / 1440)
Else ActiveCell.Value = cust_range.Cells(i, 1) End If Else If (min_arrival / 10000) < ActiveCell.Offset(-1, 0) + (batching_time / 1440) Then ActiveCell.Value = ActiveCell.Offset(-1, 0) + (batching_time / 1440) Else ActiveCell.Value = (min_arrival / 10000) + (batching_time / 1440) End If End If
ActiveCell.Offset(0, 1).Value = 2 * (difference_range.Cells(i, 1).Value / 1440) + ActiveCell.Value ActiveCell.Offset(0, 2).Value = 0 counter = counter + 1 ActiveCell.Offset(0, -1).Value = counter ' column a value ActiveCell.Offset(0, 4).Value = cust_name.Cells(i, 1).Value ' column F value row_num_min = Application.Match(min_arrival, match_range, 0) ActiveCell.Offset(-counter + row_num_min, 2).Value = 1 End If Next j End If Next i End Sub
Appendix II
Code for Ouput Data : Sub writing_output() Dim plant_num As Variant
If plant_num = 1 Then Sheets("Sheet1").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("F4:F100").Select
End If
If plant_num = 2 Then Sheets("Sheet2").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet2").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet2").Select Range("F4:F100").Select
Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 3 Then Sheets("Sheet3").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet3").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet3").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select
If plant_num = 4 Then Sheets("Sheet4").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet4").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet4").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
If plant_num = 5 Then Sheets("Sheet5").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet5").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet5").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 6 Then Sheets("Sheet6").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet6").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet6").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 7 Then
Sheets("Sheet7").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet7").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet7").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet8").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet8").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet9").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet9").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 10 Then Sheets("Sheet10").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet10").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet10").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 11 Then Sheets("Sheet11").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet11").Select
Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet11").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 12 Then Sheets("Sheet12").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet12").Select Range("G4:H100").Select Application.CutCopyMode = False
Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet12").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 13 Then Sheets("Sheet13").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet13").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select
Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet13").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 14 Then Sheets("Sheet14").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet14").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet14").Select Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 15 Then Sheets("Sheet15").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet15").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet15").Select
Range("F4:F100").Select Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
If plant_num = 16 Then Sheets("Sheet16").Select Range("A4:A100").Select Selection.Copy Sheets("Output").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet16").Select Range("G4:H100").Select Application.CutCopyMode = False Selection.Copy Sheets("Output").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet16").Select Range("F4:F100").Select Selection.Copy
End Sub
Appendix III
Snapshots of Excel Tool : Input GUI for data input. This is the data which frequently needs to be changed. Rest data is in other sheets which needs to be changed infrequently.
The following figures shows optimal allocation and schedule for pratibha plant.