You are on page 1of 150

BRIDGE MAINTENANCE LEVEL OF SERVICE OPTIMIZATION BASED ON AN

ECONOMIC ANALYSIS APPROACH

by

Jebreen M. I. Jebreen
Graduate Research Fellow
and
David W. Johnston, PE, PhD
Professor

December 1995

Institute of Construction
Department of Civil Engineering
North Carolina State University
Raleigh, NC 27695-7908
ABSTRACT

The objective of this research is to adopt economic analysis and decision making approaches

in the optimization of bridge routine and preventive maintenance levels of service.

A decision support system is developed, that analyzes different maintenance alternatives in

order to realize the best possible maintenance strategies under budgetary limitations. Maintenance

strategies are selected by identifying levels of service that will maximize the benefits that can be

obtained from the available funds. The level of service is a trigger condition state that signals a need

for maintenance effort to be applied to the bridge element.

The analysis uses Benefit-to-Cost Ratio and Life-Cycle Cost methods to select the most

economical maintenance alternative for each bridge element at different condition states. The

analysis considers maintenance costs, replacement costs and element deterioration rates in

determining the benefits and costs of the various levels of service. It then utilizes an integer

programming algorithm to optimize the selection of levels of service for the different elements. A

computer program in FORTRAN-77 is developed to implement the analysis method. It is applied to

an example set of twenty bridge elements from the North Carolina Bridge Inventory. Necessary

parameters for estimating benefits and costs of various maintenance alternatives are estimated. The

analysis is successfully tested for different budget levels and the recommended levels of service are

identified.

ii
ACKNOWLEDGMENT

Deep appreciation is extended to Mr. Jimmy D. Lee, State Bridge Maintenance Engineer, and

his staff at the Bridge Maintenance Unit of the North Carolina Department of Transportation for

unselfishly sharing their experience in the field of Bridge Maintenance.

iii
TABLE OF CONTENT

LIST OF TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
LIST OF FIGURES ........................................................................................................ vii

1. INTRODUCTION ........................................................................................................ 1
1.1 Background ...................................................................................................... 1
1.2 Problem Description ........................................................................................ 3
1.3 Objective .......................................................................................................... 4
1.4 Overview of Proposed Model .......................................................................... 4

2. LITERATURE REVIEW ............................................................................................. 5


2.1 Algorithm for Selection of Optimum Policy ................................................... 5
2.2 Application of ASOP to Bridge Maintenance ................................................. 7
2.3 Other Approaches ............................................................................................ 8
2.4 Economic Analysis ........................................................................................... 9
2.4.1 Benefit to Cost Ratio........................................................................ 11
2.4.2 Choosing a Discount Rate................................................................ 12

3. ANALYSIS PROCEDURES....................................................................................... 14
3.1 Identification and Selection of Bridge Maintenance Elements ...................... 14
3.2 Defining the Condition of an Element ........................................................... 15
3.3 Identifying Maintenance Actions.................................................................... 17
3.4 Calculation of Benefit to Cost Ratios ............................................................. 21
3.5 Steady-State Level of Service......................................................................... 24
3.6 Calculating Maintenance Cost at Different Levels of Service ....................... 25
3.7 Selecting Levels of Service Under Limited Budget ....................................... 28

4. SOLVING THE OPTIMIZATION PROBLEM........................................................... 32


4.1 Problem Description ....................................................................................... 32
4.2 Selecting an Algorithm for Solving the MCK Problem ................................. 35
4.3 Description of Dyer Algorithm....................................................................... 36

5. MODEL APPLICATION ............................................................................................ 40


5.1 User Input ...................................................................................................... 40
5.1.1 Number of Maintenance Elements.................................................. 40
5.1.2 Quantity of Maintenance Elements at Each Condition Rating ....... 42
5.1.3 Discount Rate.................................................................................. 46
5.1.4 Deterioration Rates ......................................................................... 46
5.1.5 Unit Cost of Maintenance Actions.................................................. 47
5.1.6 Element Replacement Cost ............................................................. 48
5.1.7 Backlog Recovery Period ............................................................... 48
5.2 Analysis Results............................................................................................. 49
5.2.1 Most Effective Maintenance Action at Each Condition Rating ...... 50

iv
5.2.2 Optimum Levels of Service ............................................................. 51
5.2.3 Selecting Levels of Service Under Limited Budgets....................... 55

6. CONCLUSIONS AND RECOMMENDATIONS ....................................................... 61


6.1 Summary and Conclusions ............................................................................. 61
6.2 Recommendations........................................................................................... 62

7. LIST OF REFERENCES.............................................................................................. 64

8. APPENDICES .............................................................................................................. 67
8.1 DEFINITION OF ANALYSIS VARIABLES................................................ 68
8.2 MAINTENANCE AND REPLACEMENT COSTS ...................................... 70
8.3 SAMPLE INPUT FILE................................................................................... 77
8.4 SAMPLE OUTPUT FILE .............................................................................. 83
8.5 PROGRAM CODE......................................................................................... 92

v
LIST OF TABLES

Table 3.1 Description of Condition Ratings .................................................................... 16


Table 3.2 Bridge Maintenance Function Codes............................................................... 19
Table 5.1 Bridge Maintenance Elements and Associated Function Codes ..................... 42
Table 5.2 Element Maintenance Reference Units of Measure ........................................ 43
Table 5.3 Quantity of Element Units at Each Condition Rating . . . . . . . . . . . . 45
Table 5.4 Average Time Elements Remain at Condition Rating..................................... 47
Table 5.5 Improvement in Condition Rating After Maintenance .................................... 51
Table 5.6 Optimum Levels of Service .......................................................................... 52
Table 5.7 Average Annual Cost to Achieve Optimum Level of Service ........................ 53
Table 5.8 Recommended Level of Service Under $12M budget..................................... 56
Table 5.9 Recommended Level of Service Under $16M Budget ................................... 57
Table 5.10 Five year Average Recommended L.O.S. Under Different Budgets.............. 58

vi
LIST OF FIGURES

Figure 3.1 Element Deterioration With Time ...................... 17


Figure 3.2 Maintenance Actions Unit Cost Matrix ................... 20
Figure 3.3 Extension in Service Life Due to Improvement in Condition ...... 21
Figure 3.4 Comparison Between Two Maintenance Options ............. 22
Figure 4.1 IP and LP Dominance Effect ......................... 38
Figure 5.1 Improvement of Element Units ........................ 50
Figure 5.2 Maintenance Costs Under Unlimited Budget For A 20 Years Period . . . 54
Figure 5.3 Benefits Under Various Budget Levels ................... 60

vii
1. INTRODUCTION

1.1 Background

Throughout the last decade, transportation agencies in the US and worldwide have been

involved in developing Bridge Management Systems (BMS) in response to problems associated with

their bridge inventory. The Federal Highway Administration (FHWA) defines a BMS as "any

system or series of engineering and management functions which, when taken together, comprises

the actions necessary to manage a bridge program" (O'Conner and Hyman 1989). The need for such

systems arose from the ever increasing number of bridges that need more attention due to

deterioration with aging and functional obsolescence with increased traffic. In addition, because of

the often limited budgets that are allocated to maintain these bridges, it was necessary to develop a

system that assures the proper distribution of these funds to the needed projects.

Many states (like North Carolina, Indiana, New York, Alabama, and Pennsylvania) have

developed their own Bridge Management Systems. More recently the FHWA and the National

Cooperative Highway Research Program (NCHRP) have worked to develop generic systems to

assist states without a BMS. In any of these systems, the main goal is to find a better way to manage

the maintenance, rehabilitation and replacement of bridges.

Managing bridge maintenance activities is an important part of any BMS. Maintenance

management is a method of controlling resources to accomplish a predetermined level of service

through planning, budgeting, scheduling, reporting and evaluating (Anderson 1984). Bridge

maintenance can be divided into two categories. First is the routine and preventive maintenance

activities which are the actions and the effort taken to keep bridges in operation at their current level

1
of service. These include common activities, like painting part or all of the bridge or filling cracks

in concrete, and some major actions like rehabilitating or replacing a whole member. The second

category is the improvement activities, which are the actions taken in respond to deficiency to meet

functional standards, like widening or raising a bridge.

For the routine and preventive maintenance activities (collectively denoted as "maintenance"

in this research), decisions are generally made by maintenance personnel in an informal, intuitive

manner, based on experience (Kulkarni and Van Til 1984). Although their experience is very

valuable and important, there is a need for a systematic approach to develop proper maintenance

strategy for bridges.

Morrow and Johnston (1993), in research sponsored by the North Carolina Department of

Transportation (NCDOT), developed a system called MAINTBRG to select the best maintenance

strategy based on a Level of Service (LOS) approach. LOS is defined as a threshold level of

maintenance condition that should trigger an appropriate maintenance activity. MAINTBRG utilizes

a modified and expanded version of the ASOP program (Algorithm for Selection of Optimum

Policy) as developed by Kulkarni, Finn, Golabi, Johnson, and Alviti (1980).

ASOP is a program to optimize roadway maintenance activities. It assists in determining a

set of levels of service that maximize the value received of maintenance activities subject to the

constraint of available resources.

MAINTBRG uses the procedures described in NCHRP Report No. 273 (Kulkarni and Van

Til 1984) to structure the system, which include preparing a list of maintenance elements and

assigning considerations to each element. Considerations are factors used to evaluate the

performance of the maintenance element (e.g., Safety, Preservation of Investment). An attribute is

then selected for each consideration which a descriptor that is capable of expressing the level of

2
consideration (e.g., Extended Service Life for Preservation of Investment).

MAINTBRG utilizes bridge inspection and maintenance cost data to determine the needed

resources to reach a specific level of service for each element. It then estimates a weighted value for

each level of service through consultation with a group of experts. In initial use in North Carolina,

the group consists of maintenance and bridge officials from NCDOT. The experts are asked to

assess each level of service through an assessment of willingness-to-pay to reach that level. The

relative weight of each attribute is then determined by the difference between the assessed

percentage of the budget group members were willing to pay for the lowest and the highest level.

1.2 Problem Description

The MAINTBRG program, in its current form, depends heavily on the subjective expert

opinion regarding the assessment of relative importance weights among the individual attributes.

When experts give an attribute a high rate, i.e., willing to pay a high percentage of budget to

reach a specific level of service, they imply the importance of keeping this element at a higher LOS

because a further degree of deterioration means it will cost more to maintain it later than to take the

action of maintenance now. This cost cannot be estimated in the current system.

Assigning a higher level of service to a maintenance element has some costs and benefits.

When the resources are limited, a tradeoff between the different elements occurs to allow for some

elements to have higher levels of service than others. The tradeoff values should be based on the

expected costs and benefits of the assigned levels and not only on the experts' opinion.

To improve this, a system-wide bridge maintenance level of service optimization system is

needed. The system will assist transportation agencies in employing maintenance level of service

strategies relying on the economic consequences of these strategies.

3
1.3 Objective

The objective of this research is to develop a decision support system for bridge maintenance

level of service optimization. The research will apply concepts of economic analysis in evaluating

the different maintenance options. The research will also adopt a methodology for analyzing

maintenance cost and deterioration data to optimize level of service alternatives.

1.4 Overview of Proposed Model

The proposed model will analyze maintenance costs and deterioration rates as obtained from

the bridge maintenance database or as provided by bridge maintenance managers. The analysis will

compare the different maintenance activities based on their costs and expected benefits to determine

the most economical maintenance action for each bridge element.

The model then takes the budget available to the transportation agency into consideration and

try to optimize the choices of different maintenance levels taking into account the amount of

available funds and the quantities of bridge elements to be maintained.

4
2. LITERATURE REVIEW

2.1 Algorithm for Selection of Optimum Policy

The National Cooperative Highway Research Program (NCHRP) initiated a study to develop

a system for optimizing maintenance levels of services for highway elements. Two reports

(Kulkarni, Finn, Golabi, Johnson and Alviti 1980; and Kulkarni and Van Til 1984) were published

for this purpose. They present the Algorithm for Selection of Optimum Policy (ASOP) analysis

which is a systematic methodology to identify the optimum maintenance levels of service for

highway elements that are subjected to the constraints of available money, manpower and

equipment. A maintenance element is a general physical element of the system that requires a

substantial maintenance effort. The analysis is based on a nonlinear integer algorithm for selecting

the optimum policy as a set of maintenance levels of service corresponding to each element. The

analysis was tested in various states for different roadway maintenance problems and the results

were satisfactory.

NCHRP report No. 273 (Kulkarni and Van Til 1984) outlined 12 steps to structure and

develop data for input, and run the ASOP computer program:

Steps 1 through 6 are for structuring the system and defining the elements:

1. Prepare a list of maintenance elements; e. g., shoulders, roadside, drainage, etc.

2. Prepare a list of considerations and assign considerations to elements. One or more

consideration can be assigned to each element. Safety, riding comfort and

preservation of investment are some examples of considerations.

3. Select an attribute for each consideration; e.g., percentage change in frequency of

5
accidents as an attribute to the consideration (Safety).

4. Select maintenance conditions for each attribute. A maintenance condition is a condition

of maintenance element that, at some level of deficiency, requires corrective action.

Cracking is such a condition.

5. Select a parameter for each maintenance condition. A parameter is used as a measure of

defining the alternative level of service. Such a parameter is width of cracking.

6. Specify alternate levels of service for each maintenance condition.

Steps 7 through 9 are for the development of resource data and value judgment:

7. Determine effects of alternate levels of service on considerations. A numerical scale of

each attribute is constructed and used to measure the effect of alternate levels of

service on the associated consideration.

8. Estimate resource needs for each level of service.

9. Assess desirability for each level of each attribute. This step is done by a group of

individuals from different backgrounds (engineers, administrators, legislators, etc.).

The members are asked how much are they willing to pay (as a percentage of the

budget) for each level of service. This assessment is analyzed to determine the

relative weight of each attribute by comparing the difference in budgeted amounts

for the best and worst levels of each attribute.

Steps 10 through 12 are for running the program and interpreting the results:

10. Organize and input data for ASOP.

11. Run ASOP with sensitivity analyses.

12. Formulate level of service recommendations.

6
2.2 Application of ASOP to Bridge Maintenance

Nash and Johnston (1985) conducted a study to apply a level of service approach to bridge

maintenance activities in North Carolina. The objective of the study was to utilize the ASOP

program to identify appropriate levels of service for bridge maintenance at various funding levels. A

working group of bridge maintenance personnel was formulated and the 12-step procedure described

earlier was followed. The study found that the ASOP analysis system can be applied successfully to

bridge maintenance activities and the limitations of the bridge model are related to available

resource data and not to the methodology or ASOP's optimization techniques.

A later study by Morrow and Johnston (1993) took advantage of the improvement in the data

collected for North Carolina bridges including maintenance cost data and element condition data for

a larger number of elements than previously available. Element condition is described by the

element condition rating. Elements are inspected biennially and a rating, ranging from 0 to 9, is

given to each bridge element, where 0 is failed and 9 is excellent. The study defined five levels of

service for each maintenance element that correspond to condition ratings 3 through 7.

A computer program, RESNEEDS (Morrow and Johnston 1993), was developed to estimate

the resources needed for each level of service. Resource requirements are the amount of funds that

are essential to maintain a bridge element at a specified level of service. RESNEEDS uses system-

wide bridge element volume, condition, maintenance needs, deterioration rates, and other data to

provide a summary assessment of system wide bridge element conditions and resource requirements.

It calculates the amount of element units which transition through the level of service threshold in a

year which represent the amount of units that require maintenance. It then estimates the cost of

maintenance based on the average unit cost of maintenance work. The cost of annual maintenance

work due to backlog is also estimated. In addition, the original ASOP program was modified to

7
allow for more elements and more levels of service. The new program (MAINTBRG) is capable of

handling up to 40 bridge elements with 5 levels of service each or 200 levels of service possibilities.

MAINTBRG succeeded in reducing the amount of subjective input from the bridge personnel in

estimating the resource requirement compared to the previous system. However, the experts'

opinion was still required in the process of assessing relative weights to the different attributes.

2.3 Other Approaches

In order to reduce the subjectivity of the ASOP program, Gopal and Majedzadeh (1991)

proposed a model that is based on Markov Decision Process. The modified model uses three types

of key input data: transition probabilities, costs, and relative importance weights. The model

assumes the deterioration of the highway element to be a Markov process that replaces deterministic

deterioration of elements with probabilistic deterioration. The model uses the Analytic Hierarchy

Procedure (AHP) as an expert opinion elicitation procedure to estimate the relative importance

weights of the different elements. This approach consists of two sequential steps. In the first step,

the elements are divided into a hierarchy of groups of 4 to 8 elements each and a set of ranking and

comparing criteria are identified. Then the experts are expected to rank each item of these groups at

all levels. In the second step, a relative ratio comparison score is given to each item of these groups.

These scores are then reduced to obtain the relative importance weights.

Golabi, Thompson and Hyman (1992) developed a BMS known as the PONTIS System. The

system is based on a Markov Decision Process, and the element deterioration is probabilistic.

PONTIS has a maintenance, repair and rehabilitation (MR&R) optimization model. This model

determines the optimum long-term policy for each maintenance element by combining the

deterioration model with agency cost (and to a less important extent, user cost) models. For the

8
short-term, the model identifies the bridges selected for MR&R and, when budget constraints exist,

it uses benefit to cost analysis in order to choose projects within the budget. PONTIS requires the

use of new element condition data that is different from the National Bridge Inventory (NBI)

standards that make it somewhat more difficult to implement. NBI uses the 0 to 9 scale to describe

the condition of an element, while Pontis uses the percentage of element area that lies in each of 5

predefined condition states. All states are required to keep their bridge data in the NBI format

because it is the basis in determining the eligibility for federal aid. To implement PONTIS, states

have to change their inspection and recording procedures.

2.4 Economic Analysis

Economic analysis (or Cost-Benefit analysis) is a tool for systematically developing useful

information about the desirable and undesirable effects of public sector programs and projects

(Anderson 1977). It attempts to determine whether the social benefits of a proposed public sector

activity outweigh its costs.

It is important to understand that economic analysis is only a managerial decision support tool and

does not impose a decision. It helps in the decision making process by providing a systematic

mechanism of comparing alternatives on the basis of their economic consequences. In addition there

are other non economic criteria (environmental, social, etc.) that should be considered before

reaching the final decision.

Economic analysis is a collective expression that comprises many different techniques and

procedures that all have the goal of evaluating and estimating the net benefits of different proposed

alternatives.

Analysts have been using various methods to evaluate public projects. Some of these

9
methods are (Sassone 1978):

! Net Present Value (NPV): This method reduces a stream of costs and benefits to a single

number in which costs or benefits that are projected to occur in the future are discounted.

When comparing different alternatives, the one with the highest NPV is selected.

! Pay-Back Period: This method estimates the future benefits of alternatives and the one

which recovers its cost in the shortest period of time is considered best.

! Net Average Rate of Return (NARR): The NARR is defined as the sum of the net benefits

over the life of the project divided by the number of years over which such benefits are

incurred.

! Internal Rate of Return (IRR): The IRR of a project is defined as that rate of discounting

the future that equates the initial cost and the sum of the future discounted benefits. A project

is considered acceptable if its IRR exceeds a predefined rate.

! Benefit to Cost Ratio (BCR): The BCR is defined in terms of discounted benefits over

discounted costs. A project is considered acceptable when the ratio is more than one.

The choice of analysis method depends on the type of projects or alternatives to be compared

and (to a greater extent) on the benefits and costs of the alternative and how they can be identified

and quantified.

Economic analysis deals with estimated future cash-flows which are not easy to predict,

especially in the public projects where the gains from an investment are in the form of benefits to the

agency and users instead of cash. Agency benefits are defined as the present value of future agency

cost savings due to the selected investment, while user benefits are the reduction in present value of

user costs throughout the life of investment.

For most bridge preventive maintenance actions, agency benefits only will be considered

10
because user benefits change only with improvement actions that change the functional capacity of a

bridge by providing more load capacity, lane width, shoulder width, vertical clearance, etc.

2.4.1 Benefit to Cost Ratio

Benefit to Cost ratios (BCR), or Saving to Investment ratios, provide measures of economic

performance in a single number that indicates whether a proposed action is preferred over a mutually

exclusive alternative that serves as the base for computing the ratio [ASTM 1990]. The ratio

indicates discounted dollar benefits (or savings) per dollar of discounted costs. If the BCR

computed on increments of benefits (or savings) and costs, it can be used to determine if one scope

of action is more economic than another.

To calculate BCR for bridge maintenance actions, estimates of the benefits and costs of such

actions are needed. The lowest cost alternative can serve as the base alternative and other

maintenance actions can be compared to the base alternative. The benefits (or savings) will be the

extension in the life of bridge element due to maintenance action, therefore, postponing the need for

element replacement. BCR can be represented as:

BCR = Net Benefits / Cost

Where:

Net Benefits = The discounted net savings

or Change in Life Cycle Costs; ªLCC

Cost = Maintenance action cost.

If a maintenance alternative is compared to another and the result of the ratio is greater than

one, the action is considered economical because it indicates that the action's benefits exceeds its

costs. Any alternative with a ratio less than one is not economical and should be rejected. Farid et.

al. (1988) have proved the feasibility of using Incremental BCR for Bridge Management Systems.

11
2.4.2 Choosing a Discount Rate

The choice of discount rate is an important issue in economic analysis. The benefits and costs

are not accrued at the same year; therefore, different discount rates may change the outcome of

analysis.

Private agencies use corporate discount rate to evaluate potential investment projects. This rate

includes both a risk premium and a markup for corporate taxes. On the other hand, public agencies

do not have to consider taxes or high risk premium on their decision of a discount rate, hence, public

projects use a much lower discount rate than private sector.

There are several options for the choice of a discount rate, among them is the Market Interest rate

which is the current interest rate on government bonds. This rate is the rate at which government

borrows money from private sector. The variance in interest rate for different agencies reflects the

degree of risk taken by the lender.

The federal government and many state and local governments dictate a discount rate that should

be used in evaluating public projects. This limits the choices available for the analyst, but it ensures

that public projects at different agencies are all evaluated at the same basis.

An important issue that should be considered in any economic analysis is the effect of general

price inflation on future values of costs or benefits. The effect of inflation can be recognized by one

of two ways:

(1) Estimating all future costs and benefits in inflated values and use the Nominal

Interest Rate, which is a rate that includes an anticipation of the rate of inflation.

Usually, all the advertised interest rates (bonds, bank loans, etc..) are nominal

interest rates because they take into consideration the effect of inflation, this

becomes clear through the difference between long and short time interest rate.

12
(2) Estimating all future costs and benefits in constant prices, free of inflation effect, and

use the Real Interest Rate, which is a rate that excludes inflation effect. This interest

rate is not generally used in financial transactions, therefore, it must be calculated.

1  in
ir  1 (2.1)
1 f
The relation between nominal and real interest rate can be represented as:

Where:

ir = Real interest rate.

in = Nominal interest rate.

f = Inflation rate.

13
3. ANALYSIS PROCEDURES

The following sections will describe the steps taken in order to perform an economic

evaluation of the different maintenance alternatives on each maintenance element.

3.1 Identification and Selection of Bridge Maintenance Elements

A maintenance element is a physical part of a bridge that requires a substantial maintenance

effort and whose condition and maintenance cost can be obtained. Early efforts (FHWA 1988) had

divided bridge into three major components: deck, superstructure and substructure. This

classification is too broad and ignores many bridge elements that have unique characteristics.

NCDOT has expanded its bridge inventory database to include various bridge elements that are not

included in the NBI. The North Carolina Bridge Inventory database now has condition information

for about 40 bridge elements. For each element, e, in the system, certain parameters should be

defined. Element deterioration behavior is the first of these parameters. Bridge elements

deteriorate with time and it is important to know the deterioration rates for the various elements at

various condition levels. Abed-Al-Rahim and Johnston (1991) developed a methodology to estimate

deterioration rates of various elements by examining bridge inspection and condition data. The

result is a deterioration rate table showing the average time (in years) an element will stay at each

condition rating. This can be represented by the variable DTR(e,c) where e is the element and c is

the condition rating. In addition, the useful service life of an element is another important

parameter. Service life is the time span that a bridge element can serve its purpose before it needs

replacement. The maintenance policy employed by the agency can affect the useful life of an

element. If maintenance policy requires the replacement of an element at a higher condition, the

14
useful service life will be shortened. However, it may be more economical to replace an element

before it reaches the end of its useful life if the life cycle cost of the replacement option is less than

that of the maintenance option. One can estimate the service life of an element as the years it takes

an element to reach the minimum acceptable condition rating, for example if the minimum

acceptable rating is 3, then the service life can be computed as:

9
SL(e) = j DTR( e , c ) (3.1)
c=3
Where:

DTR(e,c) = The average time (in years) an element, e, will stay at condition
rating, c, before deteriorating to next lower condition rating c-1.

3.2 Defining the Condition of an Element

FHWA standards require states to report the condition of their bridge elements in a Condition

Rating (CR) scale of 9 to 0, where 9 represents a new condition and 0 is a failed condition. A

condition of 3 or under is usually an unacceptable condition that requires immediate action. Table

3.1 shows the description of these condition ratings.

The rating is done through an inspection of the bridge, which is performed biennially for all

bridges in the network.

15
Table 3.1 Description of Condition Ratings

Rating Description
9 New condition.
8 Good condition - no repair needed.
7 Generally good condition - potential exists for minor maintenance.
6 Fair condition - potential exists for major maintenance.
5 Generally fair condition - potential exists for minor rehabilitation.
4 Marginal condition - potential exists for major rehabilitation.
3 Poor condition - repair or rehabilitation required immediately.
2 Critical condition - the need for repair or rehabilitation is urgent.
1 Critical condition - study should determine the feasibility of repair.
0 Critical condition - condition is beyond repair.

Figure 3.1 is a typical diagram of element deterioration with time where the condition rating

drops one point every few years. The time between two consecutive drops is the average time an

element stays at that condition.

16
9

Time (years)

Figure 3.1 Element Deterioration with Time

3.3 Identifying Maintenance Actions

There will be one or more maintenance action alternatives at each Condition Rating (CR).

Many elements will have only one or two feasible actions especially the elements at the very high or

the very low ends of rating. For each maintenance action (MA) the following information should be

defined:

a. The cost of performing this maintenance action [MACST(e,c,k) ]

The main source for obtaining maintenance costs is the historical data. NCDOT has

developed work function codes for recording the types of maintenance work performed on

bridges. There are 40 function codes that each describes a certain type of work item that can

be generally related to a particular bridge element. Table 3.2 shows a listing of some of

these codes. The unit cost of each maintenance action can be estimated by analyzing the

17
maintenance costs and quantities' data available in history files. Abed-Al-Rahim and

Johnston (1991) performed an analysis of maintenance costs for NCDOT and obtained a unit

cost for each function code which is linked to a maintenance element and represented by

MACST(e,c,k) where e is the element, c is the condition rating before maintenance and k is

condition rating after maintenance.

b. The effect of maintenance action on the condition of element.

It is assumed that each maintenance action will improve the condition of the element and,

therefore, extend its service life and defer the need for replacement. This improvement can

be represented by an increase in the element condition rating after maintenance. Figure 3.2

represents a unit cost matrix to achieve condition state improvement from c to k. A

condition rating can remain the same or improve with maintenance. The cost of maintenance

action will be higher for the actions that increase the condition to a higher rating. The

increase in condition rating will translate into an extension in the service life of the element

that can be calculated as:

k
EX( e , c , k ) = j DTR( e , c ) (3.2)
c=c+1

18
Table 3.2 Bridge Maintenance Function Codes

Function Description
Code
552 Complete Cleaning and Painting of Structural Steel.
553 Spot Cleaning and Complete Painting of Structural Steel.
554 Partial Cleaning and Partial Painting of Structural steel.
555 Maintenance or Repair of Concrete Bridge Approach Slab.
556 Bridge Approaches, Surfacing or Pavement Replacement or Repair.
559 Partial or Complete Replacement of Timber Bridge Floor.
560 Maintenance and Repairs to Concrete Bridge Floors.
561 Repairs to Timber Bridge Floors.
562 Repairs to Steel Plank Bridge Floors.
563 Replacement of Steel Plank Bridge Floors.
564 Maintenance or Replacement of Open Grid Steel Floor.
565 Maintenance or Repair to Timber Bridge Handrails.
566 Maintenance or Repair to Concrete Bridge Handrails.
567 Maintenance or Repair to Aluminum Bridge Handrails.
568 Maintenance or Repair to Steel Bridge Handrails.
571 Draw Span Maintenance.
573 Maintenance of Steel Plate or Finger Type Expansion Joints.
574 Maintenance or Replacement of Misc. Deck Expansion Joints.
575 Maintenance or Replacement of Deck Compression Seal Joints.
576 Maintenance of Standard Deck Expansion Joints.
578 General Maintenance of Bridge Superstructure.
580 Maintenance of Timber Substructure.
581 Maintenance of Concrete Pile Substructure.
582 Maintenance of Steel Pile Substructure.
583 Maintenance of Concrete Piers and Abutments.

Figure 3.3 shows how an improvement action changes the condition of an element and

extends the element service life.

In some instances there will be no increase in condition rating after performing a minor

maintenance action. Therefore, the extension in service life will be less than the average time an

element stays at a condition rating. It is possible to consider the extension in service life as half the

19
time spent at a condition state or any other fraction depending on the extent of the maintenance

action. Due to the apparent low cost of such actions, it is assumed for the purpose of this analysis

that the action will extend the element service life by one year only.

9
Condition After Maintenance (k)

9 8

8 MACST 7
(8,8)

7 MACST MACST 6
(7,8) (7,7)

6 . . . 5

5 . . . . 4

4 MACST MACST . MACST MACST 3


(4,8) (4,7) (4,5) (4,4)

3 MACST MACST . . MACST MACST


(3,8) (3,7) (3,4) (3,3)

Units: $ / Sq. Ft.

Figure 3.2 Maintenance Actions Unit Cost Matrix

20
9

8
Improvement in Condition
7

2
Extension in Service Life
1

0
Time (years)

Figure 3.3 Extension in Service Life Due to improvement in Condition

3.4 Calculation of Benefit to Cost Ratios

In order to chose the most cost effective maintenance action at each condition rating, the

benefit to cost ratio will be calculated in increments of increased benefits and costs. The

maintenance action with the least cost will be chosen first as a basis of comparison. The increase in

benefits and costs for the next action will be compared. If the ratio is more than one, the later action

is more cost effective and will be chosen as a basis of comparison with the next costly action.

Agency benefits only will be considered in calculating the BCR, because users' benefits

change only with improvement actions. Agency benefits are the present worth of future cost savings

because of maintenance expenditures. Future cost savings relate directly to extensions in service

life, thereby postponing replacement.

The increase in condition rating of a maintenance element means the addition of some more

21
years to its service life which can be determined from the deterioration rate table of that element. To

translate this to dollars, the present worth of the savings from postponing the replacement of the

element is calculated. Figure 3.4 shows two maintenance action options with different effects on the

maintenance element.

Replacement
Maintenance
Option 1

Time (years) n1
0

Maintenance Replacement
Option 2

n2
0 Time (years)

Added Extension in Service


Life Due to Choosing
Option 2 over Option 1

Figure 3.4 Comparision Between Two Maintenance Options

By applying Option 1, the element condition rating will increase to k1 and it should be

replaced (or rehabilitated) in n1 years. If the more costly Option 2 is chosen, it will extend the

service life of the element by n2 years by increasing its condition rating to k2. To calculate the

incremental benefit of applying Option 2, the replacement (or rehabilitation) cost of the element is

needed. The replacement (or rehabilitation) cost, REPCST(e), can be determined from the historical

22
maintenance data of the agency. Since the element should be maintained as long as the bridge

exists, it is assumed that an element will always be replaced (or rehabilitated) at the end of its

service life in perpetuity. Therefore, the perpetual replacement cost, PERPCST(e) , will be

calculated as:

(1  i )
SL( e )

PERPCST( e )  REPCST( e ) [ ] (3.3)


(1  i ) 1
SL( e )

Where:

SL(e) = Service life of element (e); and

i = Real interest rate.

Now the incremental benefits can be calculated as:

1 1
INCBEN ( e ,c ,k1,k 2 )  PERPCST( e ) [  ] (3.4)
(1  i ) n1
(1  i ) n2
Where:

INCBEN(e,c,k1,k2) = Incremental agency benefits of applying Option 2 which result in


a CR = k2 over Option 1 which results in a CR = k1 for element e
at CR = c.

k1
n1   DTR( e ,c )
c3

k2
n2 = j DTR( e , c )
c=3

Incremental cost is the difference between maintenance cost of the two options:

INCCST( e ,c ,k1,k 2)  MACST( e ,c ,k 2)  MACST( e ),c ,k 1) (3.5)

23
To calculate the Benefit to Cost ratio, incremental agency benefits will be divided by the

incremental increase in maintenance costs. If the ratio is more than one, Option 2 is considered a

more economical maintenance action than Option 1.

INCBEN( e , c , k1 , k2 )
BCR( e , c , k1 , k2 ) = INCCST (3.6)
( e , c , k1 , k2 )

This step is done for all elements, and the result of is the most economical maintenance

action for each maintenance element at each condition rating.

The benefits calculated in this step are primary benefits to the element itself. There may be

secondary benefits of improving the condition of an element, which affect the other elements by

preventing accelerated deterioration of these elements. For example, keeping a deck overlay in good

condition will help protect the deck from deterioration. Maintaining the expansion joint seals in

good condition will help protect girder ends and bent caps. However, determining the magnitude of

these secondary benefits requires additional research on the deterioration relation between the

different bridge elements which is beyond the scope of this study .

3.5 Steady-State Level of Service

The purpose of this step is to determine the one maintenance action or level of service that

will reduce the life cycle cost of maintenance over the long run for each element. In other words, if

an element is to be maintained forever, at what level of service should this element be maintained to

reduce the cost of maintenance throughout its life.

The assumption here is that an element is part of a bridge that should be functional for long

24
period of time, and the element therefore, should be in working order as long as the bridge exists.

This requires a continuous and cyclical maintenance activity to each element of a bridge.

In the previous section, one maintenance action is identified as the most cost effective at each

condition rating for each element. Now these maintenance actions will be compared on the basis of

their life cycle cost (LCC) and the one with the least LCC will be adopted as the optimal level of

service in the long -run.

To calculate the LCC the following equation is used:

(1+i)EX( e , c , k )
LCC( e , c , k ) = MACST( e , c , k ) [(1+i)EX( e , c , k )_1] (3.7)

This equation computes the perpetual value of the maintenance action cost, given that the

element will be maintained regularly when it reaches the CR (c).

The values obtained in this step can be used as a guide line of what the long term

maintenance policy should be. Transportation agencies can use it as a planning tool in estimating

the life cost of future projects.

3.6 Calculating Maintenance Cost at Different Levels of Service

The previous step generates the optimum level of service that should trigger maintenance

activity to reduce the overall cost of maintenance work over the long run. Unfortunately, it is not

possible for most transportation agencies to implement these levels of service because of limited

resources. The amount of funds allocated for maintenance work are usually a lot less than what is

needed to reach optimum levels of service. In addition, there are large quantities of element

maintenance units at lower condition states than the recommended level of service that cannot be

25
improved to the proper level all in one year. Therefore, the cost to reach each level of service must

be determined to enable the choices between the levels of service.

The definition of level of service states that maintenance work should be performed on units

that cross the level of service threshold. That means the quantity of element units that decline due to

deterioration to the level of service threshold in a given year (Morrow and Johnston 1993). This can

be calculated as:

ELQN( y , e , j+1 )
QNDCLNA( e , j)
= DTR( e , j+1 ) (3.8)

Where:

QNDCLNA(e,j) = Quantity of units of element (e) that decline to a condition


rating (j);

ELQN(y,e,j+1) = Quantity of units of element (e) at condition rating (j+1) at


the beginning of year (y).

The quantities of units that are already at that condition state or lower are called backlog

units. As mentioned above, it is not possible to improve all backlog units in one year, therefore, a

period of time is needed to overcome the backlog. This period is called Backlog Recovery period

(BKLGREC(e) ) and it is set for each element by bridge managers depending on the deterioration

behavior and the quantity of each element. The total quantity of backlog can be calculated as:

j
TOTBKLG( e , j)
= j ELQN( y , e , c ) (3.9)
c=3
Where:

TOTBKLG(e,j) = Total quantity of backlog of element (e) under level of service


strategy (j).

26
And the quantity of backlog element that should be improved in a year:

TOTBKLG(e, j)
QNBKLGA(e, j)
= BKLGREC (3.10)
(e)

Where:

QNBKLGA(e,j) = Quantity of backlog units of element (e) that have to be


improved annually under level of service (j);

BKLGREC(e) = Backlog recovery rate for element (e).

After finding the quantity of element units that need to be provided maintenance in a given

year, it is possible now to determine the cost of maintenance at each level of service for each

element. The cost of maintenance at each level of service is the sum of the cost to improve element

units passing the level of service threshold and, the cost to improve and hence eliminate the backlog

units.

To determine the cost of improving units that have declined to level of service threshold, the

following equation is used:

CSTDCLN(e, j)
= QNDCLNA(e, j)
* MACST( e , j, k )
(3.11)
Where:

CSTDCLN(e,j) = Maintenance cost for units of element (e) that pass the threshold of
level of service (j).

For the backlog units it is important to eliminate units at the worst condition first. Therefore,

the model will consider the units at lowest condition rating for maintenance first until all the units

have been upgraded to a higher condition rating. If there are still more units in the backlog, the next

condition rating will be considered until the backlog list is deleted. This cost can be represented as:

27
j
CSTBKLG( e , j)
= j QNBKLGA( e , c ) * MACST( e , c ) (3.12)
c=3

Where:

CSTBKLG(e,j) = Maintenance cost for backlog units of element (e) under level
of service (j).

Finally, the total maintenance cost can be calculated as:

TMNTCST( y , e , j)
= CSTBKLG( e , j)
+ CSTDCLN( e , j)
(3.13)
Where:

TMNTCST(y,e,j) = Total maintenance cost of element (e) under level of service


(j) in year (y).

3.7 Selecting Levels of Service Under Limited Budget

As mentioned earlier, most of the time, transportation agencies operate under limited

budgets, especially for maintenance activities, which makes it difficult to apply the recommended

levels of service that will decrease the maintenance cost over the long-run. Nevertheless, they need

to spend this budget in the most effective manner possible. Therefore, a methodology is needed for

the distribution of the available funds to the different elements in a manner that maximizes the

benefits obtained from these funds.

To achieve this goal, a linear programming approach is implemented. The objective is to

maximize the total benefits from the chosen level of service within the available budget.

To apply this approach, we have to quantify the benefits obtained from applying each level

of service. From Section 3.4, it has been shown that the benefit of applying any maintenance

alternative is the extension in element service life, therefore, delaying replacement (or rehabilitation)

28
of that element. This can be calculated for each element at each condition rating as:

1 1
BENEFIT( e,c )  PERPCST( e ) [  n  EX ( e , c , k )
] (3.14)
(1  i ) n
(1  i )
Where:

BENEFIT(e,c) = Benefit of applying maintenance work on element (e) which


is at condition rating (c).

c
and
n = j DTR( e , c )
3
Now it is possible to calculate the benefits of choosing every level of service. First, we

determine the benefits obtained from improving the element units that pass the threshold of level of

service. The following equation is used:

BENDCLN(e, j)
= QNDCLN(e, j)
* BENEFIT(e, j)
(3.15)
Where:

BENDCLN(e,j) = Benefits of applying maintenance work on units of element (e) that


pass the threshold of level of service (j).

Then, the benefits from improving the backlog units can be determined, and as in the case of

calculating the maintenance costs, the units at the worst condition rating will be treated first until

they are all eliminated then the units at the next condition rating and so on. The following equation

is used:

j
BENBKLG(e , j)
= j QNBKLGA(e , c) * BENEFIT(e , c) (3.16)
c=3
Where:

BENBKLG(e,j) = Benefits from applying maintenance work on units of element (e)


under level of service strategy (j).

29
Now, the total benefit obtained from applying a specific level of service can be determined

using this equation:

TMNTBEN(e, j)
= BENDCLN(e, j)
+ BENBKLG(e, j)
(3.17)
Where:

TMNTBEN(e,j) = Total benefits obtained from applying level of service (j) to element
(e).

After quantifying the benefits and costs of implementing each level of service, we can use the

linear programming approach to optimize the selection under the limited budget. The following

equation is used:

m 6
Max j j X(e, j) * TMNTBEN(e, j) (3.18)
e=1 j=3

Subject to:

m 6

j j X(e, j) * TMNTCST(e, j) # BUDGET (3.19)


e=1 j=3

j X(e, j) = 1 œ (e) values (3.20)


j=3

and

30
X(e,j) = 0 or 1 (3.21)

where:

BUDGET = Available maintenance budget;

j = Level of service;

m = Number of elements; and

X(e,j) = Decision factor.

The above equations will compute the mix of levels of service values that will maximize the

total agency benefits within available budget. For each element, only one decision factor X(e,j) will

have a value of 1, which means that this element (e) will have a level of service (j). The benefits are

calculated as the savings in future replacement costs due to adopting a level of service of 3 or more.

Elements at condition rating 7 or more are considered in a very good shape, new or like new

condition, and do not need significant maintenance. Therefore, levels of service from 3 to 6 only are

included in the computation. The next chapter will discuss in detail the optimization approach and

what is the best way to solve the maximization equation.

The analysis can be performed for various budget values to examine the effect of increased

funds on the selection of level of service.

After obtaining the recommended levels of service, the quantities of element units will be

updated. The quantities of units improving to a higher condition state and units deteriorating to a

lower condition state will be calculated and the new quantities will be the inputs for the following

year analysis.

31
4. SOLVING THE OPTIMIZATION PROBLEM

4.1 Problem Description

The previous chapter showed the steps taken to determine the cost and benefit of choosing

each level of service. When there are no restrictions on the resources used to apply these levels of

service, the selection decision is made on the basis of long-term economic efficiency. So the levels

that will reduce the overall cost of maintenance will be selected. When restrictions exist, however,

the selection should be made to produce the most benefits from the available resources. Therefore,

the purpose here is to optimize the selection of levels of service to maximize benefits while limiting

the total cost to the available budget.

Total benefits from each alternative were calculated earlier as TMNTBEN(e,j) for each

element, e, and level of service, j. The objective is to maximize these benefits as:

m 6
Max j j X(e , j) * TMNTBEN(e , j) (4.1)
e=1 j=3
This equation is similar to equation 3.18, and is called the objective function. X(e,j) is a

decision factor that can have the values of 0 or 1 only, where a value of 1 means that this level of

service is selected and a value of zero means it is rejected. The budget constraint is considered in

the next equation where the total maintenance cost of the selected levels should be within the budget

available.

32
m 6

j j X(e , j) * TMNTCST(e , j) # BUDGET (4.2)


e=1 j=3

To ensure that only one level of service is selected for each element the next constraint is

added:

6
 X ( e , j )  1 for all values of e (4.3)
j3

Because the decision factor in this problem can only take values of 0 or 1, this problem is a binary

integer optimization problem.

Integer optimization (or integer programming) is the class of optimization problems where

decision variables must assume nonfractional or discrete values. Generally integer programming

problems are solved by one of two techniques: (1) search methods and (2) cutting methods (Taha

1975). Search methods, which include Implicit Enumeration techniques and Branch and Bound

techniques, are considered the most suitable for binary integer problems.

The choice of a technique or an algorithm to solve an optimization problem depends on many

factors like the size of the problem, the special structure of the problem and the computing and

storage requirement of the algorithm. The problem in hand has a structure that is special case of the

general binary integer programming, it is called Multiple-Choice Knapsack (MCK) problem or

Knapsack problem with Generalized Upper Bound (GUB) Constraints.

Various algorithms exist to solve the MCK problem. Dynamic programming can be used for

small size MCK problems, but is not suitable for large ones (Martello and Toth 1990). The problem

in hand has m * j variables, which for 40 elements and 4 levels of service will have 160 variables,

33
and that is considered medium to large size problem. Branch and Bound algorithms are considered

the best method to solve large size MCK problems.

The Branch and Bound method is a technique for solving general integer programming (IP)

problems either pure (all variables are integer) or mixed (some variables are not integer). It finds the

optimal solution to an IP by efficiently enumerating the points in a subproblem’s feasible region

(Winston 1991). The following are the steps for the Branch and Bound Method:

1. It begins by relaxing the integer constraint and solving the problem by one of the methods of

linear programming, like Simplex method or Dual Simplex method, to obtain a starting

solutions. This solution is regarded as the upper or lower bound of all other feasible

solution, depending on the type of problem (maximization or minimization). If all variables

in this solution are integer, then it is an optimal solution and the analysis stops there.

2. If one or more variables are not integer, a fractional variable is selected and given one of the

two adjacent integer values. This is the beginning of the branching part. By assigning a

fixed value to a variable, we are actually adding a new constraint and a new problem is

generated. The problem is solved again in the same manner and a new result is found.

3. If any variable in the new solution is noninteger then the branching part is repeated until

reaching a feasible solution where all variables are integers. This solution becomes a

candidate solution and the value of the objective function is used as a lower bound (in a max.

problem) for any new solution. If we keep branching on the same branch, all new solutions

will have a value that is less than the lower bound, therefore, no more branching will be done

on this branch. We say that this branch is fathomed.

4. The bounding part begins by returning to the latest branched variable and begin branching

again at the other integer value. The process is repeated until all possible branches are

34
fathomed. The following three situations result in a fathomed branch: (a) The subproblem is

infeasible. (b) The subproblem yields an optimal solution in which all variables have integer

values. (c) The optimal objective function value does not exceed (in a max. problem) the

current lower bound (Winston 1991).

Horowitz and Sahni (1978) and Land and Powel (1973) have developed computer codes to

implement the branch and bound method to solve general integer programming problems.

4.2 Selecting an Algorithm for Solving the MCK Problem

The Multiple Choice Knapsack problem has a special structure that can be utilized to develop

a more efficient algorithm than the general Branch and Bound. Many researchers have developed

improved algorithms that can accommodate larger problems in less time and storage requirements.

Naus (1978) developed a branch and bound algorithm based on the relaxation of the multiple choice

constraints (equation 4.3) and solving the resulting zero-one knapsack problem. Sinha and Zoltners

(1979) and Armstrong et al. (1983) have developed branch and bound algorithms based on the

relaxation of the integrality constraints. Dyer et al. (1984) have developed an improved algorithm

(of that of Armstrong et al. 1983) that uses a dual simplex scheme to solve the linear programming

subproblem which permits rapid reoptimization.

The algorithm by Dyer et al. is chosen for this research. The computer code was kindly

provided by Professor Martin E. Dyer.

35
4.3 Description of Dyer Algorithm

The general form of the MCK problem is as follows

Max j cj xj , (4.4)
j 0N
subject to:

j aj xj + xn+1 = b , (4.5)
j0Nk

j xj = 1, k0M, (4.6)
j0Nk

xj $ 0, j 0 N (4.7)

xj integer, j 0 N (4.8)

Equation 4.4 is the objective function, cj is the object function coefficient. Equation 4.5 is

the resource constraint, aj is the resource constraint coefficient and b is total resources. The index

th
set Nk is the k multiple choice set and M is the number of multiple choice sets.

The algorithm begins with a screening phase. It screens out any variable that falls within one

of these two properties:

1. IP-dominance: If r, s 0 Nk with ar $ as and cr # cs, then there are optimal solutions to MCK

with xr = 0.

36
2. LP-dominance: If r, s and t 0 Nk with ar < as < at , cr < cs < ct and (cs - cr) / (as - ar ) # (ct - cs

) / (at - as ) then there is an optimal solution to MCK with xs = 0.

To see how this screening works, the following example is used: Let's have five alternatives

A, B, C, D, and E. The objective function coefficients (benefits) cA to cE are 16, 12, 24, 25, and 28

respectively. The resource constraint coefficient (costs) aA to aE are 6, 9, 16, 28, and 32

respectively. These alternatives are shown graphically in Figure 4.1 (a).

By checking the alternatives against the first property, it is shown that aB > aA while cB < cA.

Then there is an optimal solution with xB = 0. We say that alternative B is IP-dominated, therefore it

will be ignored.

By checking the second property, it is shown that (cD- cC) / (aD- aC) < (cE- cD) / (aE- aD).

Therefore, there is an optimal solution with xD = 0. We say that alternative D is LP-dominated and

can be ignored. These properties are shown graphically in Figure 4.1 (b), where the shaded area is

the LP-dominance region, and the area under the line A-C-E and the shaded area is the IP-

dominance region. Any alternative that lays in those two regions can be neglected. This screening

will eliminate all variables that have inferior benefits compared to its costs.

37
30 E

D
25
C

20

A
15

10

0
0 4 8 12 16 20 24 28 32 36

Resource Constraints Coefficients


(a)

30 E

25 C D

20

A
15

10

0
0 4 8 12 16 20 24 28 32 36

Resource Constraints Coefficients


(b)

Figure 4.1 IP and LP Dominance Effect

38
The algorithm then uses a heuristic approach to find a starting dual-feasible solution. The

heuristic takes advantage of the structure of the MCK problem where there are m+1 linearly

independent constraints; therefore, any basic solution will have m+1 basic variables. It follows that

all multiple choice sets, except one, will have exactly one basic variable. The exceptional set will

contain two basic variables. When the starting solution is identified, a dual-simplex procedure is

used for reoptimization.

The algorithm uses a standard type branch and bound procedure as described above to obtain

the optimum solution. The upper bound of the branch and bound is the optimum value obtained from

the dual-simplex procedure, and when any branch is terminated, the next subproblem considered is

chosen by the LIFO policy (last in, first out).

39
5. MODEL APPLICATION

Data from the North Carolina DOT Bridge Inventory is used for the application of the model.

The following sections discuss the model input requirements and the results of the application.

5.1 User Input

To run the model successfully, a number of required data items must be provided by the user.

Many items can be calculated or directly obtained from the NCDOT Bridge databases. In other

cases, the items must be estimated with the assistance of experienced bridge managers because

adequate data for analysis is not yet available. These items are described in the following sections.

5.1.1 Number of Maintenance Elements

The North Carolina Bridge Inventory (NCBI) contains condition ratings of about 40

elements. Conditions of these elements are recorded biennially in the NCBI database which is an

expanded version of the National Bridge Inventory (NBI).

The following is a list of these maintenance elements:

1. Wearing Surface
2. Concrete Deck
3. Timber Deck
4. Steel Plank Deck
5. Open Grid Deck
6. Concrete Railing
7. Timber Railing
8. Aluminum Railing
9. Steel Railing
10. Curbs, Wheelguards, Parapets & Medians
11. Walkways
12. Steel Plate Expansion Joints

40
13. Prefabricated Expansion Joints
14. Compression Seal Expansion Joints
15. Standard Jnt. Expansion Joints
16. Open Joint Expansion Joints
17. Deck Debris
18. Longitudinal Beams or Girders
19. Longitudinal Joists or Stringers
20. Interior Bracing
21. End Curtain Wall
22. Floor Beams
23. Bearing Assemblies
24. Drainage Systems
25. Movable Span Machinery
26. Timber Abutment
27. Timber Piles
28. Timber Bulkheads
29. Concrete Abutment
30. Concrete Bent Columns and Breastwalls
31. Concrete Interior Bent Piles
32. Concrete Backwalls, Wings and Retaining Walls
33. Concrete Bent Footings and Sills
34. Steel Abutment, Interior Bent Caps & Risers
35. Steel Piles, Bracing and Bulkheads
36. Foundation Piles
37. Slope Protection
38. Fender Systems
39. Drift
40. Paint System

The NCDOT is in the process of redefining its current work function codes to better

represent the different bridge element maintenance activities, which may result in some eventual

changes in the above list.

For the purpose of this model application, twenty elements only were chosen because of the

availability of data on their condition and deterioration behavior. Each one of these elements can be

linked to one or more of the maintenance function codes, which make it possible to obtain

maintenance costs. These elements and the corresponding function codes are listed in Table 5.1.

Table 5.1 Bridge Maintenance Elements and Associated Function Codes

41
Maintenance Element Name Element Code Function Code
Concrete Deck DECKCONC 560
Timber Deck DECKTIMB 559, 561
Steel Plank Deck DECKSTPL 562, 563
Concrete Rail RAILCONC 565
Timber Rail RAILTIMB 566
Aluminum Rail RAILALUM 567
Steel Rail RAILSTEL 568
Steel Plate or Finger Type Exp. Jnt. EXJTSTPL 573
Misc. Prefabricated Exp. Jnt. EXJTMSDK 574
Compression Seal Exp. Jnt. EXJTDKCS 575
Standard Deck Exp. Jnt. EXJTSTDK 576
Concrete Superstructure SUPRCONC 578
Steel Superstructure SUPRSTEL 578
P/S Concrete Superstructure SUPRPSCN 578
Timber Superstructure SUPRTIMB 578
Timber Substructure SUBSTIMB 580
Concrete Pile Substructure SUBSCNPL 581
Steel Pile Substructure SUBSSTPL 582
Concrete Piers and Abutments SUBSCONC 583
Paint System PAINTSYS 552, 553, 554

5.1.2 Quantity of Maintenance Elements at Each Condition Rating

The quantity of maintenance element units and their distribution among different condition

states is an important factor in determining the annual cost of performing maintenance and its

benefit. It also plays an important role in the optimization part of the model because costs and

benefits of the decisions increase and decrease with the increase or decrease in the quantity of units

maintained. The records in the NCBI database are kept on a bridge-by-bridge basis, which makes it

possible to calculate a maintenance quantity measure for each element in a bridge through its

geometrical and dimensional information. The measures for each element are shown in Table 5.2.

Some of the units of measures are direct, for example sq. ft. of concrete deck. Other measures are

42
indirect, such as measuring steel pile substructures in terms of deck area.

Table 5.2 Element Maintenance Reference Units of Measure

Maintenance Element Name Unit


Concrete Deck Sq. Ft.
Timber Deck Sq. Ft.
Steel Plank Deck Sq. Ft.
Concrete Rail Linear Ft.
Timber Rail Linear Ft.
Aluminum Rail Linear Ft.
Steel Rail Linear Ft.
Steel Plate or Finger Type Exp. Jnt. Linear Ft.
Misc. Prefabricated Exp. Jnt. Linear Ft.
Compression Seal Exp. Jnt. Linear Ft.
Standard Deck Exp. Jnt. Linear Ft.
Concrete Superstructure Sq. Ft. of Deck Area
Steel Superstructure Sq. Ft. of Deck Area
P/S Concrete Superstructure Sq. Ft. of Deck Area
Timber Superstructure Sq. Ft. of Deck Area
Timber Substructure Sq. Ft. of Deck Area
Concrete Pile Substructure Sq. Ft. of Deck Area
Steel Pile Substructure Sq. Ft. of Deck Area
Concrete Piers and Abutments Sq. Ft. of Deck Area
Paint System 1000 Lb. of Str. Steel

In addition to the geometrical information of bridges, records are kept for the condition rating of

each element in the bridge. Inspection of each bridge is done biennially and a condition rating is

assigned for each element in the bridge. Element units can be grouped according to their reported

condition ratings to obtain their distribution on the system.

The quantities used in this model are obtained from Morrow and Johnston (1993), and are

listed in Table 5.3. Elements at condition states less than 3 are considered to have a condition rating

43
of 3.

It should be noted that the practice for NCDOT inspectors is to report the condition of an

element as the condition of the worst part of that element. For example, if 40% of timber deck is at

condition rating 4 while the rest of the deck is at condition rating 5, the single rating is reported as a

condition rating of 4. If it is a low condition state, the quantity (for example sq. ft.) requiring

maintenance is also reported. Based on historical data, the RESNEEDS program applies average

area unit costs of maintenance that reflect the average portions of the entire bridge at the various

condition states. This approach is somewhat approximate due to limitations of the data base. Future

revisions of the NCBI data base are intended to allow for the quantity of each element at the various

condition levels to be entered at the time of inspection. The maintenance costs in this research are

determined with the understanding that these costs represent the average element in a bridge which

may have part of it in a better condition than reported.

44
Table 5.3 Quantity of Element Units at Each Condition Rating

Element Quantity of Element Units at Condition Rating


3 4 5 6 7 8 9
Concrete Deck 429900 4503149 12133245 17962236 11979276 6780329 20526
Timber Deck 101800 630845 1011784 1250679 1103580 1299193 0
Steel Plank Deck 1070 37449 82670 254194 332992 663373 0
Concrete Rail 2514 33538 160206 604832 691352 426582 3988
Timber Rail 1062 15158 61824 124530 160402 87122 0
Aluminum Rail 0 8636 5530 40304 235494 349694 0
Steel Rail 1086 9756 24344 67422 181722 240668 0
St. Pl. or Finger Type Exp. Jnt. 344 3615 1932 3945 1776 977 0
Misc. Prefabricated Exp. Jnt. 517 6279 5048 8686 16492 21672 0
Compression Seal Exp. Jnt. 0 2500 3244 6908 238211 31858 846
Standard Deck Exp. Jnt. 9330 170709 108963 118542 124530 80893 396
Concrete Superstructure 141394 1147239 1258104 2364436 974669 310961 0
Steel Superstructure 296988 1055034 2487047 6715995 11213974 14522316 411228
P/S Concrete Superstructure 3086 1026940 837991 2426245 4402860 7772575 318614
Timber Superstructure 78624 291987 879858 852152 397241 151452 0
Timber Substructure 213000 1623397 2696369 2521351 766706 123173 0
Concrete Pile Substructure 74907 1673190 2291343 3315834 3209023 376845 20594
Steel Pile Substructure 109910 707494 1508025 1540635 2524166 4311006 33905
Concrete Piers and Abutments 433110 4177068 8866706 13937704 14391329 13317748 71692
Paint System 28300 39828 97785 183327 201233 154212 0

45
5.1.3 Discount Rate

The discount rate should reflect the time value of money. It is used to convert costs occurring

at different future times to equivalent costs at a common point in time. There are two main types of

discount rates; nominal and real. The nominal discount rate includes the general price inflation,

while real discount rate is net of price inflation as discussed in Chapter 2. In this analysis, the costs

are estimated in today’s dollar or constant dollars. Therefore, the real discount rate will be used.

This way the future costs of maintenance will be considered in constant dollars (net of general

inflation).

Choosing a discount rate is a managerial decision that is usually mandated by legislators for

public projects. If the discount rate is not mandated, the analysis can be done using different

discount rates and comparing the results.

5.1.4 Deterioration Rates

The deterioration rate of an element is an important factor in determining its service life and

in calculating its life cycle cost. In addition, deterioration rates play a major part in the decision on

the frequency of performing maintenance work for the different elements.

The methodology used by Abed-al-Rahim and Johnston (1991) to estimate deterioration rates

for each maintenance element was adopted. Table 5.4 contains deterioration rates for the selected 20

elements determined in that study. The table shows the average time an element will remain at a

condition rating without maintenance.

46
Table 5.4 Average Time Elements Remain at Condition Rating

Bridge Maintenance Element Average Time at Condition Rating (years)


9 8 7 6 5 4 3
Concrete Deck 1.1 4.5 7.3 13.2 14.3 9.2 4.0
Timber Deck 1.4 3.6 5.4 10.4 9.4 6.1 5.0
Steel Plank Deck 1.2 10.0 8.2 5.6 5.7 3.7 2.0
Concrete Rail 1.0 4.0 10.0 15.0 14.0 9.0 4.0
Timber Rail 1.0 4.0 5.0 6.0 6.0 4.0 4.0
Aluminium Rail 1.0 20.0 15.0 10.0 6.0 4.0 4.0
Steel Rail 1.0 10.0 10.0 10.0 9.0 6.0 4.0
St. Pl. or Finger Type Exp. Jnt. 1.0 4.0 5.0 4.0 4.0 2.0 2.0
Misc. Prefabricated Exp. Jnt. 1.0 5.0 6.0 6.0 4.0 3.0 2.0
Compression Seal Exp. Jnt. 1.0 2.0 2.0 3.0 3.0 1.0 1.0
Standard Deck Exp. Jnt. 1.0 1.0 1.0 1.0 1.0 1.0 0.5
Concrete Superstructure 1.5 3.9 6.1 11.0 15.2 18.6 5.0
Steel Superstructure 1.3 4.0 9.2 10.4 8.9 5.8 4.1
P/S Concrete Superstructure 1.4 8.4 15.5 8.3 4.2 2.3 2.5
Timber Superstructure 2.0 2.4 5.4 10.8 5.8 6.0 5.0
Timber Substructure 1.2 1.8 3.7 7.9 8.6 6.5 4.6
Concrete Pile Substructure 2.3 6.9 8.7 33.7 9.0 4.3 3.0
Steel Pile Substructure 1.3 7.3 11.2 8.8 4.1 3.1 4.0
Concrete Piers and Abutments 1.5 5.7 8.1 11.4 9.8 9.7 4.9
Paint System 1.0 3.0 5.0 4.0 4.0 3.0 2.0

5.1.5 Unit Cost of Maintenance Actions

The cost of maintenance actions and the improvement in condition rating due to maintenance

are estimated by examining the historical cost data. This is done by selecting bridges that had an

increase in one of its elements' condition rating in a year, then recording the cost of maintenance

work done for that element and the increase in condition rating. When this done for all bridges, it is

possible to calculate the average unit cost of a maintenance action and the corresponding

improvement in condition rating.

Due to changes in reporting format and to adding new inspection data for some elements, the

47
NCDOT has not updated its History File for the last 4 or 5 years. Therefore, it was not possible to

perform the above procedure to obtain the required unit costs. It was necessary instead to rely on the

maintenance costs and element improvement data that was developed by Morrow and Johnston

(1993) and to make the necessary revisions with the help of officials at the NCDOT Bridge

Maintenance Unit.

To determine the unit maintenance cost, the Delphi Method (Linstone and Turoff 1975) was used

to solicit the required information from the experts at NCDOT. A group of experts was asked to

give their estimation of maintenance costs at each condition rating for all the elements and the

corresponding improvement. Reference was made to available data. The individuals of the group

were allowed to discuss their estimates to reach an agreement on the proper estimate of cost for each

element. The results of this process are presented in Appendix 8.2 .

5.1.6 Element Replacement Cost


Replacement cost can also be estimated from the historical database and from previous and

current contracts. The same difficulty as in obtaining the unit maintenance costs was sometimes

faced here. Where historical unit costs were unavailable, the help of NCDOT officials was solicited

for estimating the unit replacement cost of each element. The results are also shown in Appendix

8.2.

5.1.7 Backlog Recovery Period


When there is a backlog of needs, it may not be possible to bring all the units of an element

to the desired minimum level of service in a single year. Thus it is necessary to spread the

remaining element units over some defined period of time. This period is called the backlog

recovery period, and it can be defined for each element separately. The length of this period depends

48
mainly on the rate of deterioration of that element and the quantity of element units at each condition

rating. Figure 5.1 shows how element units are improved from the backlog. Element units that pass

the level of service threshold will be improved immediately while continuing the improvement of the

backlog units every year until they are all eliminated. If an element deteriorates rapidly it may be

better to choose a short backlog recovery period to eliminate backlog faster. On the other hand, if an

element has a large quantity of units at low conditions, it may be difficult to eliminate all of them in

a short period of time because of the limited resources, therefore, it may be necessary to extend the

backlog recovery period.

From the above discussion it is clear that the length of the backlog recovery period is a managerial

decision that depends mainly on the available resources and the personal judgment of bridge

managers. For the purpose of this study, the backlog recovery rate was set at 5 years for Expansion

Joint elements and 10 years for all other elements.

5.2 Analysis Results


This section discusses the results obtained by applying the methodology of Chapters 3 and 4

to the elements discussed previously and the cost and deterioration data listed previously and in the

appendix.

49
QNBKLGA (e,j)

QNDCLNA (e,j)

L.O.S. 4
Threshold
C= 9

C= 8
C= 7

C= 6
C= 5
C= 4
C= 3

Figure 5.1 Improvement of Element Units

5.2.1 Most Effective Maintenance Action at Each Condition Rating


The first part of the analysis examines each element individually at each condition rating, and

using benefit to cost ratios it determines the most effective maintenance action, which is the action

that provides the most benefits per dollar spent on maintenance. Table 5.5 shows the selected

actions and the corresponding improvement in condition rating after maintenance work for each

action.

The analysis shows that almost all the improvements are to condition rating 7 and under,

because maintenance action to conditions 8 or 9 usually involve replacement of element units which

is more costly. Standard Deck expansion joints will always be repaired to a condition of 9 because

about the only maintenance option for these joints is replacement.

50
Table 5.5 Improvement in Condition Rating After Maintenance

Maintenance Element Name Condition Rating Before Maintenance


3 4 5 6
Concrete Deck 5 5 6 7
Timber Deck 5 5 6 7
Steel Plank Deck 5 7 8 7
Concrete Rail 6 6 7 7
Timber Rail 6 6 6 7
Aluminum Rail 7 7 7 7
Steel Rail 7 7 7 7
Steel Plate or Finger Type Exp. Jnt. 5 5 6 7
Misc. Prefabricated Exp. Jnt. 6 7 7 7
Compression Seal Exp. Jnt. 6 6 8 9
Standard Deck Exp. Jnt. 9 9 9 9
Concrete Superstructure 6 6 6 7
Steel Superstructure 6 6 6 6
P/S Concrete Superstructure 6 7 7 7
Timber Superstructure 6 6 6 6
Timber Substructure 6 6 6 6
Concrete Pile Substructure 6 6 6 6
Steel Pile Substructure 6 6 6 7
Concrete Piers and Abutments 6 6 6 6
Paint System 5 6 8 8

5.2.2 Optimum Levels of Service


The model compares the selected maintenance actions and determines the most cost effective

action by calculating the life cycle cost of each alternative action. The maintenance action with the

least life cycle cost is chosen as the optimum level of service for the long run under unlimited

budgets. Table 5.6 shows the chosen level of service for each element assuming an unlimited

budget.

51
Table 5.6 Optimum Levels of Service

Maintenance Element Name Optimum Level of Condition After


Service Maintenance
Concrete Deck 6 7
Timber Deck 6 7
Steel Plank Deck 6 7
Concrete Rail 6 7
Timber Rail 4 6
Aluminum Rail 4 7
Steel Rail 6 7
Steel Plate or Finger Type Exp. Jnt. 4 5
Misc. Prefabricated Exp. Jnt. 5 7
Compression Seal Exp. Jnt. 4 6
Standard Deck Exp. Jnt. 3 9
Concrete Superstructure 6 7
Steel Superstructure 5 6
P/S Concrete Superstructure 6 7
Timber Superstructure 5 6
Timber Substructure 4 6
Concrete Pile Substructure 5 6
Steel Pile Substructure 5 6
Concrete Piers and Abutments 5 6
Paint System 4 6

The model then calculates the annual costs to achieve these levels of service if the budget is

unlimited. Table 5.7 shows these costs for a horizon of twenty years. Figure 5.2 shows the changes

in these costs from year to year.

52
Table 5.7 Average Annual Cost to Achieve Optimum Level of Service

Opt. Average Annual Costs ($)


L.O.S Year
Maintenance Element 1 2-5 6-10 11-20
Concrete Deck 6 7,808,854 6,787,183 8,647,061 3,633,822
Timber Deck 6 1,161,779 1,460,127 2,224,010 798,245
Steel Plank Deck 6 232,765 262,216 264,703 152,856
Concrete Rail 6 253,534 237,659 225,594 161,256
Timber Rail 4 13,392 19,085 29,497 38,843
Aluminum Rail 4 285 564 1,102 1,852
Steel Rail 6 50,038 48,964 52,551 47,254
St.Pl./Finger Type Ex. Jnt. 4 8,090 15,198 12,892 14,962
Misc. Prefab. Exp. Jnt. 5 81,990 94,692 61,447 72,832
Comp. Seal Exp. Jnt. 4 31,620 405,370 887,100 944,805
Standard Deck Exp. Jnt. 3 3,106,350 1,981,764 1,910,174 1,763,585
Concrete Superstructure 6 762,061 762,040 767,894 349,612
Steel Superstructure 5 1,017,211 1,253,619 1,701,969 1,979,302
P/S Conc. Superstructure 6 1,737,840 1,286,809 761,892 108,865
Timber Superstructure 5 734,885 700,706 668,657 352,875
Timber Substructure 4 2,056,313 2,104,764 2,194,686 1,639,756
Conc. Pile Substructure 5 161,734 196,131 164,803 68,412
Steel Pile Substructure 5 69,461 92,717 118,177 106,530
Conc. Piers and Abutm. 5 1,576,128 1,837,982 2,118,769 1,837,956
Paint System 4 625,160 956,940 1,456,136 1,659,030

Total 21,489,490 20,504,529 24,269,114 15,732,650

The cost in the first year is high because the maintenance actions involve many elements at

very low condition states. For the first ten years, a large portion of cost is used to eliminate the

backlog quantities. When all backlog units are eliminated at year 10, the costs then decrease and

reach a steady state which is the costs for years 11 to 20. Therefore, the annual cost of about $15.7

million is the steady state cost for achieving the optimum levels of service for all elements.

Concrete Decks are the highest cost element to maintain because of the large quantity of element

53
units in the North Carolina system. In addition, Steel Superstructures, Concrete Piers, Paint Systems

and Standard Deck Expansion Joints are also high on the list for annual maintenance costs. Any

future revision or improvement of maintenance practice should concentrate on these elements

because they consume more than 75% of the total maintenance funds.

30000

25000

20000

15000

10000

5000

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Years

Figure 5.2 Maintenance Costs Under Unlimited Budget for a 20 Year Period

54
5.2.3 Selecting Levels of Service Under Limited Budgets

When budget resources are limited, the model tries to optimize the choices of levels of

service to obtain the most benefits for each dollar spent. The use of linear programming tools to

maximize benefits for the current year for the set of elements will generate results that are different

from the individual element optimum under long term unlimited budget.

Different budget levels were used to run the model to examine the affect on the

recommended levels of service. Results for budget levels ranging from $12 Million to $20 Million

are presented. Tables 5.8 and 5.9 show the recommended levels of service for the first five years at

budgets $12M and $16M respectively.

The average values shown on the two tables are for the five year period. The analysis shows

how some elements are given the priority to be maintained at higher levels than others. For

example, Aluminum Rails and Concrete Pile Substructures are always selected to be maintained at

higher level because of the high cost of maintenance at lower conditions and due to the relative low

cost of maintaining at higher levels. The recommended levels for some other elements, like

Concrete Rails and Concrete Piers and Abutments, are increased to the highest level with the

increase in budget level from $12M to $16M.

On the other hand, the recommended levels of service for some elements are at low values

because either it is not beneficial to maintain at higher levels, like in the case of Standard Deck

Expansion Joints, or it is too costly to maintain at a higher level with the available budget, as in the

case of Timber Decks.

55
Table 5.8 Recommended Level of Service Under $12M budget

Level of Service
Year
Maintenance Element Name 1 2 3 4 5 Avg.
Concrete Deck 3 3 4 3 3 3.20
Timber Deck 3 3 3 3 3 3.00
Steel Plank Deck 3 3 3 3 4 3.20
Concrete Rail 5 6 6 6 6 5.80
Timber Rail 6 5 5 6 6 5.60
Aluminum Rail 6 6 6 6 6 6.00
Steel Rail 6 6 6 6 6 6.00
Steel Plate or Finger Type Exp. Jnt. 3 6 4 4 4 4.20
Misc. Prefabricated Exp. Jnt. 4 6 3 3 3 3.80
Compression Seal Exp. Jnt. 3 3 3 3 3 3.00
Standard Deck Exp. Jnt. 3 3 3 3 3 3.00
Concrete Superstructure 3 3 3 3 3 3.00
Steel Superstructure 3 4 3 3 3 3.20
P/S Concrete Superstructure 3 3 3 3 3 3.00
Timber Superstructure 3 3 3 4 3 3.20
Timber Substructure 3 3 3 3 3 3.00
Concrete Pile Substructure 6 6 6 6 6 6.00
Steel Pile Substructure 5 5 5 5 5 5.00
Concrete Piers and Abutments 6 6 5 5 5 5.40
Paint System 3 3 3 3 3 3.00

From Tables 5.8 and 5.9, it can also be noticed that the recommended level of service for some

elements will have slight change from one year to another, this is because the cost for improving that

element is very small compared to other elements, so if there is a small excess of funds, it will be

possible to spend it on a higher cost level of service for those elements. The other possibility is

because the model when eliminating the backlog units will first choose to improve the units at the

lowest condition rating first which carry higher maintenance costs. Then when the lower condition

units are all upgraded it will choose units at next higher condition state with lower maintenance

costs. Therefore, it may be possible to choose another level of service to optimize the use of

56
available funds. Table 5.10 shows a comparison of the average recommended levels of service for

the first five years for various budget levels.

Table 5.9 Recommended Level of Service Under $16M Budget

Level of Service Avg.


Maintenance Element Name Year
1 2 3 4 5
Concrete Deck 5 5 5 5 5 5.00
Timber Deck 3 3 3 3 3 3.00
Steel Plank Deck 3 3 3 3 3 3.00
Concrete Rail 6 6 6 6 6 6.00
Timber Rail 6 4 5 6 5 5.20
Aluminum Rail 6 6 6 6 6 6.00
Steel Rail 6 3 6 6 6 5.40
Steel Plate or Finger Type Exp. Jnt. 3 3 4 4 4 3.60
Misc. Prefabricated Exp. Jnt. 6 3 3 6 6 4.80
Compression Seal Exp. Jnt. 3 3 3 3 3 3.00
Standard Deck Exp. Jnt. 3 3 3 3 3 3.00
Concrete Superstructure 4 3 4 3 3 3.40
Steel Superstructure 5 6 5 4 5 5.00
P/S Concrete Superstructure 3 3 3 3 3 3.00
Timber Superstructure 3 3 4 4 4 3.60
Timber Substructure 3 3 3 3 3 3.00
Concrete Pile Substructure 6 6 6 6 6 6.00
Steel Pile Substructure 5 5 5 5 5 5.00
Concrete Piers and Abutments 6 6 6 6 6 6.00
Paint System 3 3 3 3 3 3.00

57
Table 5.10 Five year Average Recommended L.O.S. Under Different Budgets

Maintenance Element Name Budget $ (Million)


12 14 16 18 20
Concrete Deck 3.2 4.0 5.0 6.0 6.0
Timber Deck 3.0 3.0 3.0 3.0 3.0
Steel Plank Deck 3.2 3.2 3.0 3.0 3.8
Concrete Rail 5.8 6.0 6.0 6.0 6.0
Timber Rail 5.6 5.4 5.2 5.2 5.4
Aluminum Rail 6.0 6.0 6.0 6.0 6.0
Steel Rail 6.0 6.0 5.4 5.8 6.0
Steel Plate or Finger Type Exp. Jnt. 4.2 4.2 3.6 4.4 4.0
Misc. Prefabricated Exp. Jnt. 3.8 4.6 4.8 4.4 4.8
Compression Seal Exp. Jnt. 3.0 3.2 3.0 3.2 3.2
Standard Deck Exp. Jnt. 3.0 3.0 3.0 3.0 3.0
Concrete Superstructure 3.0 3.6 3.4 3.8 5.0
Steel Superstructure 3.2 4.8 5.0 5.2 5.4
P/S Concrete Superstructure 3.0 3.0 3.0 3.0 3.0
Timber Superstructure 3.2 3.0 3.6 4.0 5.6
Timber Substructure 3.0 3.0 3.0 3.0 3.6
Concrete Pile Substructure 6.0 6.0 6.0 6.0 6.0
Steel Pile Substructure 5.0 5.0 5.0 5.2 5.6
Concrete Piers and Abutments 5.4 5.8 6.0 6.0 6.0
Paint System 3.0 3.2 3.0 3.8 4.0

Table 5.10 shows how the increase in budget will affect the selection of levels of service.

Many elements showed an increase in their selected levels of service. The rate of this increase

differs from element to element due to the differences in benefits. The level of service for Concrete

Decks, for example, increased rapidly with the increase in the available budget albeit the high cost of

maintenance at higher levels. Other elements, however, did not exhibit any increase in level of

service for different reasons. For example, Standard Deck Expansion joints did not have any

increase because it was not economically beneficial. The only maintenance alternative available was

to replace the element.

58
Other elements, like Prestressed Concrete Superstructures, surprisingly did not show any

increase, but after reviewing the quantity of element units, it was found that there are large quantities

of that element units at low condition states of 4 and 5. This made the higher levels of service too

costly to adopt at these budget levels. Through discussion with bridge maintenance officials, it was

found that most of the units at low condition states are C-channels that are used in small rural

bridges which can be improved by chipping and patching the affected concrete parts. Another factor

is the rate of deterioration of this element. Prestressed concrete superstructures have a slow

deterioration rate at higher condition states of 8, 7, and 6; but deteriorate very rapidly at low

condition states of 5, 4, and 3. Abed-Al-Rahim and Johnston (1991) noted that apparently

inspectors, knowing the sensitivity of prestressed members to strand section loss, rapidly down-rate

the members at the first signs of problems; thus, the rapid apparent deterioration at low condition

states. Significant quantities of these units decline from a 4 (Tables 5.3 and 5.4) to a condition

rating of 3 every year, crossing the level of service threshold. The rate of decline, the volume of

elements, and the relative costs keeps the level of service low due to limited budgets available.

Figure 5.3 shows the change in benefits with the increase in the allocated budgets. Benefits

tend to increase rapidly at low budget levels, then the rate of increase begin to decline at higher

budget levels. This is as expected because the model selects the levels that have the highest benefits

per dollar spent first, then as funds become available it will select the levels with higher overall

benefits but the benefits per dollar may be lower.

59
130

120

110

100

90

80
12 14 16 18 20 22

Budget ($Million)

Figure 5.3 Benefits Under Various Budget Levels

60
6. CONCLUSIONS AND RECOMMENDATIONS

6.1 Summary and Conclusions

1. The analysis described in this research provides a structured method to assist bridge

managers in analyzing bridge maintenance levels of service to attain an optimal routine and

preventive maintenance strategy. The methodology developed implements formal economic

analysis and decision making techniques in comparing different alternatives to reach to the

best possible alternative under given considerations.

2. The development of a structured methodology for determining the maintenance levels of

service strategy is an improvement over the informal and intuitive manner which bridge

maintenance decisions may be made. This will lead to a consistency in the decision making

process.

3. The analysis takes in account deterioration rates and maintenance costs for bridge elements

at different condition ratings, and determines the maintenance alternative with the most

benefits compared to its costs for every bridge element. Techniques for estimating benefits

and costs of various maintenance options are implemented in the analysis.

4. Bridge maintenance level of service decisions are optimized through the use of 0- 1 integer

programming algorithm.

5. The bridge element is used in this research as the unit of analysis. All data are per unit of

bridge element. This allows the consideration of maintenance actions that are specific to one

element instead of the general descriptions, like major repairs or minor repairs that are

currently used. Moreover, it allows the addition of new elements or dividing a current

general element into more distinctive elements providing that maintenance cost and

61
deterioration data can be obtained.

6. Using the bridge element as the unit for analysis makes it possible to test different

maintenance options for that element to determine the long-run effect of applying certain

options and to choose the most appropriate option.

7. The analysis can be used by bridge management agencies as a planning tool that can assist in

long range strategic planning of maintenance policies. In addition, it can be used as a

flagging technique to point out areas of concern and be able to deal with problems before

they happened.

6.2 Recommendations

1. Developing one or more unique function codes for each bridge element will improve greatly

the ability to estimate maintenance costs. Many elements do not have a unique function

code although their conditions are rated by bridge inspectors.

2. The quantity of element units at a specific condition rating should reflect the actual quantity

in the field. The current practice is to record the condition rating of a bridge element as the

worst part of that element. For example if only 20% of an element is at condition rating of 4,

while the rest of the element is at 5 or 6, the whole quantity of the element will be recorded

at condition 4. It is recommended to report the quantity of element units in each condition

rating either by actual quantity units, like square foot, or as a percentage of the whole

element quantity.

3. Deterioration rates and maintenance costs should be examined and revised regularly as more

data becomes available. Maintenance actions and the corresponding increase in condition

rating should be redefined for each bridge element as more knowledge and more new

62
maintenance techniques are developed.

4. Further research is necessary to determine the secondary effect of element deterioration on

other bridge elements. When the condition of an element declines it may affect other parts

of a bridge and accelerate their deterioration. At the same time, improving the condition of

an element may help in the protection of other elements from rapid deterioration. These

indirect or secondary effects are not quantified in this research. A study to determine the

magnitude of these effects is needed and to incorporate these affects into the analysis.

63
7. LIST OF REFERENCES

Abed-Al-Rahim, I. J. and Johnston, D.W. (1991). Analysis of Relationships Affecting Bridge


Deterioration and Improvement, Center for Transportation Engineering Studies, Department of
Civil Engineering, North Carolina State University, Raleigh, NC.

Anderson, D. R. (1984). Maintenance Management Systems, National Cooperative Highway


Research Program, Report No. 110. Transportation Research Board, National Research Council,
Washington, D.C.

Anderson, Lee G. and Settle, R. F. (1977). Benefit-Cost Analysis: A Practical Guide, Lexington
Books, D. C. Heath and Company, Lexington, Massachusetts.

Armstrong, R. D., Kung, D. S., Sinha, P. and Zoltners, A. A. (1983). "A Computational Study of
a Multiple-Choice Knapsack Algorithm," ACM Transactions on Mathematical Software, Vol. 9,
No.2.

ASTM (1990). ASTM Standards on Building Economics, American Society for Testing and
Materials, Philadelphia, PA.

Dyer, M. E., Kayal, N. and Walker, J. (1984). "A Branch and Bound Algorithm for Solving the
Multiple Choice Knapsack Problem," Journal of Computational and Applied Mathematics, Vol.
11, Elsevier Science Publishers B. V., North-Holland.

Fabrycky, W. J. and Blanchard, B. S. (1991). Life-Cycle Cost and Economic Analysis, Prentice
Hall, Englewood Cliffs, New Jersey.

Farid, F., Johnston, D., Chen, C., Laverde, M. and Rihani, B. (1988). Feasibility of Incremental
Benefit-Cost Analysis for Optimal Allocation of Limited Budgets to Maintenance, Rehabilitation
and Replacement of Bridges, Report No. FHWA-DP-71-02, Center for Transportation
Engineering Studies, Department of Civil Engineering, North Carolina State University, Raleigh,
NC.

Federal Highway Administration (1988). Recording and Coding Guide for the Structure
Inventory and Appraisal of the Nation's Bridges, U.S. Department of Transportation,
Washington, D.C.

Golabi, K., Thompson, P., and Hyman, W. (1992). Pontis Technical Manual, A Network
Optimization System for Bridge Improvements and Maintenance, Prepared for Federal Highway
Administration, by Optima, Inc., Cambridge Systematics, Inc., and The Urban Institute,
Washington, D.C.

64
Golabi, K., Thompson, P., and Hyman, W. (1992). Pontis User's Manual, A Network
Optimization System for Bridge Improvements and Maintenance, Prepared for Federal Highway
Administration, by Optima, Inc., Cambridge Systematics, Inc., and The Urban Institute,
Washington, D.C.

Gopal, S. and Majidzadeh, K. (1991). "Application of Markov Decision Process to Level-of-


Service Based Maintenance Systems," Transportation Research Record No. 1304,
Transportation Research Board, National Research Council, Washington, D.C.

Horowitz, E. and Sahni S. (1978). Fundamentals of Computer Algorithms, Computer Science


Press, Inc., Rockville, Maryland.

Hudson, S., Carmichael III, R., Moser, L., Hudson, W., and Wilkes, W. (1987). Bridge
Management Systems, NCHRP Report No. 300, Transportation Research Board, National
Research Council, Washington, D.C.

Kulkarni, R.,Finn, F., Golabi, K., Johnson, R., and Alviti, E. (1980). Maintenance Level of
Service Guidelines, NCHRP Report No. 233, Transportation Research Board, National Research
Council, Washington, D.C.

Kulkarni, R. and Van Til, C. (1984). Manual for the Selection of Optimal Maintenance Level of
Service, NCHRP Report No. 273, Transportation Research Board, National Research Council,
Washington, D.C.

Land, A. H. and Powell S. (1973). Fortran Codes for Mathematical Programming: Linear,
Quadratic and Discrete, John Wiley & Sons, London, UK.

Martello, S. and Toth, P. (1990). Knapsack Problems: Algorithms and Computer


Implementations, John Wiley & Sons, New York.

Morrow, T. K. and Johnston, D. W. (1993). Bridge Maintenance Level of Service Optimization,


Report No. FHWA/NC/94-004, Center for Transportation Engineering Studies, Civil
Engineering Dept., North Carolina State University, Raleigh, NC.

Nash, S. C. and Johnston, D. W. (1985). Level of Service Analysis for Bridge Maintenance
Activities in North carolina, Report No. FHWA/NC/88-003, Research project 86-2, Center for
Transportation Engineering Studies, Department of Civil Engineering, North Carolina State
University, Raleigh, NC.

Naus, R. M. (1978). "The 0-1 Knapsack Problem with Multiple Choice Constraints," European
Journal of Operational Research, Vol. 2.

O'Conner, D. S. and Hayman, W. A. (1989). Bridge Management Systems, FHWA-DP-71-01R


Demonstration project No. 71 U.S. Department of Transportation, Federal Highway
Administration.

65
Sassone, P. G. and Schaffer, W. A. (1987). Cost-Benefit Analysis: A Handbook, Academic Press,
New York.

Sinha, P. and Zoltners, A. (1979). "The Multiple Choice Knapsack Problem," Operations
Research, Vol. 27, No. 3, Operation Research Society of America.

Taha, H. A. (1975). Integer Programming: Theory, Applications and Computations, Academic


Press, New York.

Winston, W. L. (1991). Operations Research: Applications and Algorithms, Second Edition,


PWS-Kent Publication Co., Boston, MA.

66
8. APPENDICES

67
8.1 DEFINITION OF ANALYSIS VARIABLES AND SYMBOLS

BCR = Benefits to Costs Ratio;

BENBKLG = Benefits of improving element units from the backlog;

BENDCLN = Benefits of improving element units that passes the level of service threshold

in a given year;

BENEFIT = Benefits of performing maintenance action on an element unit;

BKLGREC = Backlog recovery rate (in years);

BUDGET = Available budget;

c = A condition rating;

CSTBKLG = Cost of improving element units from the backlog;

CSTDCLN = Cost of improving element units that passes the level of service threshold in a

given year;

DTR = The average time an element will stay at a specific condition rating (in

years);

e = A maintenance element;

ELQN = Quantity of element units;

EX = Extension in service life of a maintenance element;

i = Discount rate (real interest rate);

INCBEN = Incremental benefits;

INCCST = Incremental costs;

j = Level of service;

68
k, k1, k2 = The improved condition state;

LCC = Life cycle cost;

m = Total number of maintenance elements;

MACST = Unit cost of a maintenance action;

n = Time remaining to replacement (in years);

PERPCST = Perpetual replacement cost;

QNBKLGA = Quantity of backlog units to be improved in a given year;

QNDCLNA = Quantity of element units that decline to a given condition rating in a specific

year;

REPCST = Unit replacement cost of an element;

TMNTBEN = Total element maintenance benefits in a year;

TMNTCST = Total element maintenance cost in a year;

TOTBKLG = Total quantity of backlog;

SL = Service life of an element;

X = A decision factor for choosing the level of service;

y = Year;

œ = For all;

0 = Belong to.

69
8.2 MAINTENANCE AND REPLACEMENT COSTS

The maintenance and replacement costs were obtained through consultation with a group of
bridge maintenance experts from the North Carolina Department of Transportation. The group
reviewed data obtained from the research by Morrow and Johnston (1993) and made the necessary
modifications. The costs here are in dollars per unit of quantity for each element.

CONCRETE DECK $/SQ.FT.


9 --- --- --- --- --- ---
9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 20.00 10.00 0.49 5 --- ---
5 30.00 20.00 6.00 1.04 4 ---
4 30.00 20.00 10.00 5.00 1.58 3
3 30.00 30.00 20.00 10.00 5.00 2.12

REPLACEMENT COST: 30.00

TIMBER DECK $/SQ.FT.


9 --- --- --- --- --- ---
9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 7.00 4.00 0.79 5 --- ---
5 9.00 8.00 4.00 2.65 4 ---
4 11.17 11.17 5.60 5.00 3.00 3
3 11.17 11.17 9.00 7.00 4.00 2.50

REPLACEMENT COST: 11.17

70
STEEL PLANK DECK $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 12.58 4.00 1.11 5 --- ---
5 12.58 5.00 4.00 3.40 4 ---
4 12.58 6.85 5.00 4.00 3.00 3
3 12.58 12.58 10.00 8.00 5.00 3.00

REPLACEMENT COST: 12.58

CONCRETE RAIL $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 200.00 50.00 0.84 5 --- ---
5 200.00 100.00 1.92 4 ---
4 200.00 150.00 60.00 3.00 2.00 3
3 200.00 200.00 100.00 4.08 3.00

REPLACEMENT COST: 200.00

TIMBER RAIL $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 25.00 20.00 5.00 0.36 5 --- ---
5 50.00 30.00 10.00 0.72 4 ---
4 50.00 40.00 15.00 1.09 3
3 50.00 50.00 20.00 1.46

REPLACEMENT COST: 50.00

71
ALUMINUM RAIL $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 50.00 20.00 0.12 0.08 5 --- ---
5 100.00 40.00 0.15 0.12 4 ---
4 100.00 50.00 0.16 0.14 3
3 100.00 100.00 0.20 0.15

REPLACEMENT COST: 100.00

STEEL RAIL $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 50.00 20.00 1.00 0.38 5 --- ---
5 100.00 40.00 2.00 0.71 4 ---
4 100.00 50.00 3.00 1.04 3
3 100.00 100.00 4.00 1.36

REPLACEMENT COST: 100.00

STEEL PLATE OR FINGER TYPE EXP. JNT. $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 25.00 15.00 8.43 5 --- ---
5 52.00 30.00 22.82 10.00 4 ---
4 52.00 37.22 31.00 14.00 5.00 3
3 52.00 52.00 41.00 31.00 10.00

REPLACEMENT COST: 52.00

72
MISC. PREFABRICATED EXP. JNT. $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 50.00 25.00 9.14 5 --- ---
5 100.00 50.00 15.75 8.00 4 ---
4 100.00 75.00 25.00 13.00 5.00 3
3 100.00 100.00 50.00 25.00 10.00

REPLACEMENT COST: 100.00

COMPRESSION SEAL EXP. JNT. $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 20.00 18.00 16.00 13.05 5 --- ---
5 26.14 23.00 20.00 16.00 4 ---
4 39.23 35.00 30.00 20.00 15.00 3
3 52.00 52.00 35.00 25.00 20.00 15.00

REPLACEMENT COST: 52.00

STANDARD DECK EXP. JNT. $/L. FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 18.00 18.00 18.00 5 --- ---
5 18.00 18.00 18.00 4 ---
4 18.00 18.00 18.00 3
3 18.00 18.00 18.00

REPLACEMENT COST: 18.00

73
CONCRETE SUPERSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 10.00 5.00 0.34 5 --- ---
5 15.00 8.00 5.00 0.82 4 ---
4 15.00 15.00 8.00 1.30 1.00 3
3 15.00 15.00 12.00 1.79 1.50 1.00

REPLACEMENT COST: 15.00

STEEL SUPERSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 10.00 5.00 2.00 0.34 5 --- ---
5 15.00 8.00 5.00 0.73 4 ---
4 15.00 15.00 8.00 1.12 3
3 15.00 15.00 12.00 1.51

REPLACEMENT COST: 15.00

P/S CONCRETE SUPERSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 10.00 5.00 0.11 5 --- ---
5 15.00 8.00 2.00 0.21 4 ---
4 15.00 15.00 4.00 0.30 3
3 15.00 15.00 5.00 0.40

REPLACEMENT COST: 15.0

74
TIMBER SUPERSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 10.00 5.00 3.00 0.32 5 --- ---
5 20.00 10.00 5.00 1.46 4 ---
4 20.00 20.00 8.00 3.17 2.00 3
3 20.00 20.00 10.00 6.01 3.00 2.00

REPLACEMENT COST: 20.00

TIMBER SUBSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 10.00 5.00 3.00 0.89 5 --- ---
5 20.00 10.00 5.00 2.26 4 ---
4 20.00 20.00 8.00 3.63 3
3 20.00 20.00 10.00 5.00

REPLACEMENT COST: 20.00

CONCRETE PILE SUBSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 15.00 10.00 5.00 0.06 5 --- ---
5 30.00 20.00 8.00 0.19 4 ---
4 30.00 25.00 12.00 0.33 3
3 30.00 30.00 15.00 0.46

REPLACEMENT COST: 30.00

75
STEEL PILE SUBSTRUCTURE $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 15.00 10.00 5.00 0.06 5 --- ---
5 30.00 20.00 8.00 0.12 4 ---
4 30.00 25.00 12.00 0.18 3
3 30.00 30.00 15.00 0.24

REPLACEMENT COST: 30.00

CONCRETE PIERS AND ABUTMENTS $/SQ.FT.

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 15.00 10.00 5.00 0.20 5 --- ---
5 30.00 20.00 8.00 0.44 4 ---
4 30.00 25.00 12.00 0.69 3
3 30.00 30.00 15.00 0.94

REPLACEMENT COST: 30.00

PAINT SYSTEM (STRUCTURAL STEEL) $/1000LB

9 --- --- --- --- --- ---


9 8 --- --- --- --- ---
8 7 --- --- --- ---
7 6 --- --- ---
6 50.00 40.00 33.10 5 --- ---
5 76.38 50.00 40.00 15.00 4 ---
4 119.65 119.65 50.00 20.00 10.00 3
3 163.00 163.00 80.00 50.00 20.00 10.00

REPLACEMENT COST: 163.00

76
8.3 SAMPLE INPUT FILE

INPUT FILE
----------
Discount Rate: 0.05

********************************************************
********************************************************

Number of Maintenance Element: 20


********************************************************
Available Budget: 14000000.
********************************************************
Table 1.0
Average Time Element Remain at Condition Rating Without
Maintenance
********************************************************
Maintenance Average Time at Condition Rating (year)
Element ---------------------------------------
3 4 5 6 7 8 9
--------------------------------------------------------
DECKCONC 4.0 9.2 14.3 13.2 7.3 4.5 1.1
DECKTIMB 5.0 6.1 9.4 10.4 5.4 3.6 1.4
DECKSTPL 2.0 3.7 5.7 5.6 8.2 10.0 1.2
RAILCONC 4.0 9.0 14.0 15.0 10.0 4.0 1.0
RAILTIMB 4.0 4.0 6.0 6.0 5.0 4.0 1.0
RAILALUM 4.0 4.0 6.0 10.0 15.0 20.0 1.0
RAILSTEL 4.0 6.0 9.0 10.0 10.0 10.0 1.0
EXJTSTPL 2.0 2.0 4.0 4.0 5.0 4.0 1.0
EXJTMSDK 2.0 3.0 4.0 6.0 6.0 5.0 1.0
EXJTDKCS 1.0 1.0 3.0 3.0 2.0 2.0 1.0
EXJTSTDK 0.5 1.0 1.0 1.0 1.0 1.0 1.0
SUPRCONC 5.0 18.6 15.2 11.0 6.1 3.9 1.5
SUPRSTEL 4.1 5.8 8.9 10.4 9.2 6.0 1.3
SUPRPDCN 2.5 2.3 4.2 8.3 15.5 8.4 1.4
SUPRTEMB 5.0 6.0 5.8 10.8 5.4 2.4 2.0
SUBSTIMB 4.6 6.5 8.6 7.9 3.7 1.8 1.2
SUBSCNPL 3.0 4.3 9.0 33.7 8.7 6.9 2.3
SUBSSTPL 4.0 3.1 4.1 8.8 11.2 7.3 1.3
SUBSCONC 4.9 9.7 9.8 11.4 8.1 5.7 1.5
PAINTSYS 2.0 3.0 4.0 4.0 5.0 3.0 1.0

77
********************************************************
Table 2.0
Replacement Cost Per Unit of Maintenance Element
********************************************************
Maintenance Cost
Element ($)
--------------------------------------------------------
DECKCONC 30.0
DECKTIMB 11.17
DECKSTPL 12.58
RAILCONC 200.0
RAILTIMB 50.0
RAILALUM 100.0
RAILSTEL 100.0
EXJTSTPL 52.0
EXJTMSDK 100.0
EXJTDKCS 52.0
EXJTSTDK 18.0
SUPRCONC 15.0
SUPRSTEL 15.0
SUPRPDCN 15.0
SUPRTEMB 20.0
SUBSTIMB 20.0
SUBSCNPL 30.0
SUBSSTPL 30.0
SUBSCONC 30.0
PAINTSYS 163.0

********************************************************
Table 3.0
Backlog Recovery Rate (years)
********************************************************
Maintenance
Element Years
--------------------------------------------------------
DECKCONC 10
DECKTIMB 10
DECKSTPL 10
RAILCONC 10
RAILTIMB 10
RAILALUM 10
RAILSTEL 10
EXJTSTPL 5
EXJTMSDK 5
EXJTDKCS 5
EXJTSTDK 5
SUPRCONC 10
SUPRSTEL 10
SUPRPDCN 10
SUPRTEMB 10
SUBSTIMB 10
SUBSCNPL 10
SUBSSTPL 10
SUBSCONC 10
PAINTSYS 10

78
********************************************************
Table 4.0
Quantity of Element Units at Each Condition Rating
********************************************************
Maintenance
Element 3 4 5 6 7 8 9
-----------------\--------\--------\--------\--------\--------\--------\
DECKCONC 429900 4503149 12133245 17962236 11979276 6780329 20526
DECKTIMB 101800 630845 1011784 1250679 1103580 1299193 0
DECKSTPL 1070 37449 82670 254194 332992 663373 0
RAILCONC 2514 33538 160206 604832 691352 426582 3988
RAILTIMB 1062 15158 61824 124530 160402 87122 0
RAILALUM 0 8636 5530 40304 235494 349694 0
RAILSTEL 1086 9756 24344 67422 181722 240668 0
EXJTSTPL 344 3615 1932 3945 1776 977 0
EXJTMSDK 517 6279 5048 8686 16492 21672 0
EXJTDKCS 0 2500 3244 6908 238211 31858 846
EXJTSTDK 9330 170709 108963 118542 124530 80893 396
SUPRCONC 141394 1147239 1258104 2364436 974669 310961 0
SUPRSTEL 296988 1055034 2487047 6715995 11213974 14522316 411228
SUPRPDCN 3086 1026940 837991 2426245 4402860 7772575 318614
SUPRTEMB 78624 291987 879858 852152 397241 151452 0
SUBSTIMB 213000 1623397 2696369 2521351 766706 123173 0
SUBSCNPL 74907 1673190 2291343 3315834 3209023 3763845 20594
SUBSSTPL 109910 707494 1508025 1540635 2524166 4311006 33905
SUBSCONC 433110 4177068 8866706 13937704 14391329 13317748 71692
PAINTSYS 28300 39828 97785 183327 201233 154212 0
************************************************************************
Table 5
Maintenace Costs at Each Condition Level
************************************************************************
DECKCONC
--------
0.0
0.0 0.0
0.0 0.0 0.0
20.0 10.0 0.49 0.0
30.0 20.0 5.0 1.04 0.0
30.0 20.0 10.0 6.0 1.58 0.0
30.0 30.0 20.0 10.0 5.0 2.12 0.0

DECKTIMB
--------
0.0
0.0 0.0
0.0 0.0 0.0
7.0 4.0 0.79 0.0
9.0 8.0 4.0 2.65 0.0
11.0 11.0 5.6 5.0 3.0 0.0
11.17 11.0 9.0 7.0 4.0 2.5 0.0

79
DECKSTPL
--------
0.0
0.0 0.0
0.0 0.0 0.0
12.0 4.0 1.11 0.0
12.0 5.0 4.0 3.4 0.0
12.5 6.85 5.0 4.0 4.0 0.0
12.58 12.50 10.0 8.0 5.0 3.0 0.0

RAILCONC
--------
0.0
0.0 0.0
0.0 0.0 0.0
200.0 50.0 0.84 0.0
200.0 100.0 1.92 0.0 0.0
200.0 150.0 60.0 3.0 2.0 0.0
200.0 200.0 100.0 4.08 3.0 0.0 0.0
RAILTIMB
--------
0.0
0.0 0.0
0.0 0.0 0.0
25.0 20.0 6.0 0.36
50.0 30.0 10.0 0.72 0.0
50.0 40.0 15.0 1.09 0.0 0.0
50.0 50.0 20.0 1.46 0.0 0.0 0.0

RAILALUM
--------
0.0
0.0 0.0
0.0 0.0 0.0
50.0 20.0 0.12 0.08
100.0 40.0 0.15 0.12 0.0
100.0 50.0 0.16 0.14 0.0 0.0
100.0 100.0 0.2 0.15 0.0 0.0 0.0

RAILSTEL
--------
0.0
0.0 0.0
0.0 0.0 0.0
50.0 20.0 1.0 0.38
100.0 40.0 2.0 0.71 0.0
100.0 50.0 3.0 1.04 0.0 0.0
100.0 100.0 4.0 1.36 0.0 0.0 0.0

EXJTSTPL
--------
0.0
0.0 0.0
0.0 0.0 0.0
25.0 15.0 8.43 0.0
52.0 30.0 22.82 10.0 0.0
52.0 37.22 31.0 15.0 5.0 0.0
52.0 51.0 41.0 31.0 10.0 0.0 0.0

80
EXJTMSDK
--------
0.0
0.0 0.0
0.0 0.0 0.0
50.0 25.0 9.14 0.0
100.0 50.0 15.75 8.0 0.0
100.0 75.37 25.0 13.0 5.0 0.0
100.0 100.0 50.0 25.0 10.0 0.0 0.0

EXJTDKCS
--------
0.0
0.0 0.0
0.0 0.0 0.0
20.0 18.0 16.0 13.05
26.14 23.0 20.0 16.0 0.0
39.32 35.0 30.0 20.0 15.0 0.0
52.00 52.0 35.0 25.0 20.0 0.0 0.0
EXJTSTDK
--------
0.0
0.0 0.0
0.0 0.0 0.0
18.0 18.0 18.0 0.0
18.0 18.0 18.0 0.0 0.0
18.0 18.0 18.0 0.0 0.0 0.0
18.0 18.0 18.0 0.0 0.0 0.0 0.0

SUPRCONC
--------
0.0
0.0 0.0
0.0 0.0 0.0
10.0 5.0 0.34 0.0
15.0 8.0 5.0 0.84 0.0
15.0 15.0 8.0 1.3 0.0 0.0
15.0 15.0 12.0 1.79 0.0 0.0 0.0

SUPRSTEL
--------
0.0
0.0 0.0
0.0 0.0 0.0
10.0 5.0 2.0 0.34
15.0 8.0 5.0 0.73 0.0
15.0 15.0 8.0 1.12 0.0 0.0
15.0 15.0 12.0 1.51 0.0 0.0 0.0

SUPRPDCN
--------
0.0
0.0 0.0
0.0 0.0 0.0
10.0 5.0 0.11 0.0
15.0 8.0 2.0 0.21 0.0
15.0 15.0 4.0 0.3 0.0 0.0
15.0 15.0 5.0 0.4 0.0 0.0 0.0
SUPRTEMB
--------
0.0
0.0 0.0

81
0.0 0.0 0.0
10.0 5.0 3.0 0.32
20.0 10.0 5.0 1.46 0.0
20.0 20.0 8.0 3.17 0.0 0.0
20.0 20.0 10.0 6.01 0.0 0.0 0.0
SUBSTIMB
--------
0.0
0.0 0.0
0.0 0.0 0.0
10.0 5.0 3.0 0.89
20.0 10.0 5.0 2.26 0.0
20.0 20.0 8.0 3.63 0.0 0.0
20.0 20.0 10.0 5.0 0.0 0.0 0.0

SUBSCNPL
--------
0.0
0.0 0.0
0.0 0.0 0.0
15.0 10.0 5.0 0.06
30.0 20.0 8.0 0.19 0.0
30.0 25.0 12.0 0.33 0.0 0.0
30.0 30.0 15.0 0.46 0.0 0.0 0.0

SUBSSTPL
--------
0.0
0.0 0.0
0.0 0.0 0.0
15.0 10.0 5.0 0.06
30.0 20.0 8.0 0.12 0.0
30.0 25.0 12.0 0.18 0.0 0.0
30.0 30.0 15.0 0.24 0.0 0.0 0.0

SUBSCONC
--------
0.0
0.0 0.0
0.0 0.0 0.0
15.0 10.0 5.0 0.2
30.0 20.0 8.0 0.44 0.0
30.0 25.0 12.0 0.69 0.0 0.0
30.0 30.0 15.0 0.94 0.0 0.0 0.0
PAINTSYS
--------
0.0
0.0 0.0
0.0 0.0 0.0
50.0 40.0 33.1 0.0
76.38 50.0 40.0 15.0 0.0
119.65 119.0 50.0 20.0 10.0 0.0
163.00 163.0 80.0 50.0 20.0 0.0 0.0

8.4 SAMPLE OUTPUT FILE

IMPROVEMENT IN CONDITION RATING AFTER MAINTENANCE

82
CONDITION RATING BEFORE MAINTENANCE
ELEMENT CR3 CR4 CR5 CR6
************************************************
DECKCONC 5 5 6 7
DECKTIMB 5 5 6 7
DECKSTPL 5 7 8 7
RAILCONC 6 6 7 7
RAILTIMB 6 6 6 6
RAILALUM 7 7 7 7
RAILSTEL 7 7 7 7
EXJTSTPL 5 5 6 7
EXJTMSDK 6 7 7 7
EXJTDKCS 6 6 8 9
EXJTSTDK 9 9 9 9
SUPRCONC 6 6 6 7
SUPRSTEL 6 6 6 6
SUPRPDCN 6 7 7 7
SUPRTEMB 6 6 6 6
SUBSTIMB 6 6 6 6
SUBSCNPL 6 6 6 6
SUBSSTPL 6 6 6 7
SUBSCONC 6 6 6 6
PAINTSYS 5 6 8 8
************************************************

RECOMMENDED LEVEL OF SERVICE BASED ON LIFE CYCLE COST ANALYSIS

ELEMENT LOS CR AFTER MAINT.

DECKCONC 6 7
DECKTIMB 6 7
DECKSTPL 6 7
RAILCONC 6 7
RAILTIMB 4 6
RAILALUM 4 7
RAILSTEL 6 7
EXJTSTPL 4 5
EXJTMSDK 5 7
EXJTDKCS 4 6
EXJTSTDK 3 9
SUPRCONC 6 7
SUPRSTEL 5 6
SUPRPDCN 6 7
SUPRTEMB 5 6
SUBSTIMB 4 6
SUBSCNPL 5 6
SUBSSTPL 5 6
SUBSCONC 5 6
PAINTSYS 4 6

FOR YEAR = 1
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST
DECKCONC 6 7808854.
DECKTIMB 6 1161779.
DECKSTPL 6 232765.
RAILCONC 6 253534.
RAILTIMB 4 13392.
RAILALUM 4 285.

83
RAILSTEL 6 50038.
EXJTSTPL 4 8090.
EXJTMSDK 5 81990.
EXJTDKCS 4 31620.
EXJTSTDK 3 3106350.
SUPRCONC 6 762061.
SUPRSTEL 5 1017211.
SUPRPDCN 6 1737840.
SUPRTEMB 5 734885.
SUBSTIMB 4 2056313.
SUBSCNPL 5 161734.
SUBSSTPL 5 69461.
SUBSCONC 5 1576128.
PAINTSYS 4 625160.
TOTAL COST 21489490.

COST TO ACHEIVE EACH LEVEL OF SERVICE

ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 L.O.S.6

DECKCONC 2662310. 3590274. 5581938. 7808854.


DECKTIMB 454388. 615964. 943807. 1161779.
DECKSTPL 51140. 91770. 287545. 232765.
RAILCONC 16226. 47859. 139008. 253534.
RAILTIMB 5687. 13392. 23843. 32528.
RAILALUM 432. 285. 831. 2755.
RAILSTEL 6936. 12448. 25124. 50038.
EXJTSTPL 18750. 8090. 17470. 14548.
EXJTMSDK 54900. 65525. 81990. 127767.
EXJTDKCS 62500. 31620. 75906. 2432790.
EXJTSTDK 3106350. 2609460. 3174156. 3708684.
SUPRCONC 135714. 338266. 580914. 762061.
SUPRSTEL 319516. 517131. 1017211. 1712421.
SUPRPDCN 178721. 1198982. 1320730. 1737840.
SUPRTEMB 339721. 703622. 734885. 913363.
SUBSTIMB 1355265. 2056313. 2658499. 3036875.
SUBSCNPL 182437. 151441. 161734. 274593.
SUBSSTPL 57411. 85823. 69461. 1203039.
SUBSCONC 445500. 1050667. 1576128. 2355225.
PAINTSYS 322120. 625160. 2623370. 2308320.
TOTAL 9776025. 13814093. 21094551. 30129779.

UNDER THE TOTAL BUDGET OF: 14000000.


THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST
DECKCONC 4 3590274.
DECKTIMB 3 454388.
DECKSTPL 3 51140.
RAILCONC 6 253534.
RAILTIMB 5 23843.
RAILALUM 6 2755.
RAILSTEL 6 50038.
EXJTSTPL 3 18750.

84
EXJTMSDK 6 127767.
EXJTDKCS 3 62500.
EXJTSTDK 3 3106350.
SUPRCONC 4 338266.
SUPRSTEL 5 1017211.
SUPRPDCN 3 178721.
SUPRTEMB 3 339721.
SUBSTIMB 3 1355265.
SUBSCNPL 6 274593.
SUBSSTPL 5 69461.
SUBSCONC 6 2355225.
PAINTSYS 3 322120.
TOTAL COST 13991921.

FOR YEAR = 2
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE

ELEMENT L.O.S. COST


DECKCONC 6 8883038.
DECKTIMB 6 1342458.
DECKSTPL 6 279663.
RAILCONC 6 241191.
RAILTIMB 4 12396.
RAILALUM 4 321.
RAILSTEL 6 45507.
EXJTSTPL 4 9970.
EXJTMSDK 5 77749.
EXJTDKCS 4 35160.
EXJTSTDK 3 1994922.
SUPRCONC 6 818698.
SUPRSTEL 5 1078988.
SUPRPDCN 6 2060600.
SUPRTEMB 5 771405.
SUBSTIMB 4 2160930.
SUBSCNPL 5 179730.
SUBSSTPL 5 80430.
SUBSCONC 5 1630088.
PAINTSYS 4 846300.

TOTAL COST 22549544.

COST TO ACHEIVE EACH LEVEL OF SERVICE

ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 L.O.S.6

DECKCONC 2418730. 3975296. 6322680. 8883038.


DECKTIMB 457152. 686160. 1053295. 1342458.
DECKSTPL 57060. 132350. 315225. 279663.
RAILCONC 3758. 34512. 119210. 241191.
RAILTIMB 6405. 12396. 29014. 37284.
RAILALUM 183. 321. 802. 2957.
RAILSTEL 2164. 10651. 22555. 45507.
EXJTSTPL 12140. 9970. 18255. 16922.
EXJTMSDK 31050. 57375. 77749. 140439.
EXJTDKCS 27025. 35160. 996245. 2022515.
EXJTSTDK 1994922. 2657664. 3298896. 3073806.
SUPRCONC 119228. 322789. 597208. 818698.
SUPRSTEL 309343. 487122. 1078988. 1965476.
SUPRPDCN 135769. 1224347. 1441875. 2060600.

85
SUPRTEMB 442931. 752135. 771405. 990384.
SUBSTIMB 1404325. 2160930. 2877060. 3342403.
SUBSCNPL 122401. 143054. 179730. 337180.
SUBSSTPL 64180. 75462. 80430. 1383028.
SUBSCONC 270222. 907463. 1630088. 2537826.
PAINTSYS 396580. 846300. 2692290. 2564640.

TOTAL 8275568. 14531458. 23603002. 32086015.

UNDER THE TOTAL BUDGET OF: 14000000.


THE RECOMMENDED LEVEL OF SERVICE

ELEMENT L.O.S. COST

DECKCONC 4 3975296.
DECKTIMB 3 457152.
DECKSTPL 4 132350.
RAILCONC 6 241191.
RAILTIMB 6 37284.
RAILALUM 6 2957.
RAILSTEL 6 45507.
EXJTSTPL 6 16922.
EXJTMSDK 5 77749.
EXJTDKCS 4 35160.
EXJTSTDK 3 1994922.
SUPRCONC 3 119228.
SUPRSTEL 5 1078988.
SUPRPDCN 3 135769.
SUPRTEMB 3 442931.
SUBSTIMB 3 1404325.
SUBSCNPL 6 337180.
SUBSSTPL 5 80430.
SUBSCONC 6 2537826.
PAINTSYS 4 846300.

TOTAL COST 13999467.

FOR YEAR = 3
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE

ELEMENT L.O.S. COST


DECKCONC 6 9341198.
DECKTIMB 6 1557086.
DECKSTPL 6 325560.
RAILCONC 6 252975.
RAILTIMB 4 12667.
RAILALUM 4 283.
RAILSTEL 6 47694.
EXJTSTPL 4 10125.
EXJTMSDK 5 87363.
EXJTDKCS 4 307050.
EXJTSTDK 3 2167344.
SUPRCONC 6 925178.
SUPRSTEL 5 1193636.
SUPRPDCN 6 2482441.
SUPRTEMB 5 817395.
SUBSTIMB 4 2252196.
SUBSCNPL 5 153271.
SUBSSTPL 5 89737.

86
SUBSCONC 5 1587979.
PAINTSYS 4 941860.
TOTAL COST 24553038.

COST TO ACHEIVE EACH LEVEL OF SERVICE

ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 L.O.S.6


DECKCONC 2179770. 3999116. 6835574. 9341198.
DECKTIMB 468272. 758474. 1195693. 1557086.
DECKSTPL 43935. 153220. 337985. 325560.
RAILCONC 2342. 24912. 105364. 252975.
RAILTIMB 2686. 12667. 32337. 36366.
RAILALUM 61. 283. 707. 3073.
RAILSTEL 1584. 9255. 20168. 47694.
EXJTSTPL 5460. 10125. 26445. 31626.
EXJTMSDK 24650. 49200. 87363. 163924.
EXJTDKCS 6750. 307050. 1529351. 2226713.
EXJTSTDK 2167344. 2986380. 2948094. 1984500.
SUPRCONC 122415. 355507. 664411. 925178.
SUPRSTEL 278763. 456429. 1193636. 2174599.
SUPRPDCN 115334. 1327696. 1618080. 2482441.
SUPRTEMB 516361. 799899. 817395. 1090184.
SUBSTIMB 1446340. 2252196. 3137176. 3722812.
SUBSCNPL 64419. 111446. 153271. 319407.
SUBSSTPL 66267. 67796. 89737. 1515630.
SUBSCONC 86174. 734098. 1587979. 2300713.
PAINTSYS 311560. 941860. 3175880. 2713340.

TOTAL 7910486. 15357609. 25556646. 33215017.

UNDER THE TOTAL BUDGET OF: 14000000.


THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST

DECKCONC 4 3999116.
DECKTIMB 3 468272.
DECKSTPL 3 43935.
RAILCONC 6 252975.
RAILTIMB 5 32337.
RAILALUM 6 3073.
RAILSTEL 6 47694.
EXJTSTPL 4 10125.
EXJTMSDK 4 49200.
EXJTDKCS 3 6750.
EXJTSTDK 3 2167344.
SUPRCONC 4 355507.
SUPRSTEL 6 2174599.
SUPRPDCN 3 115334.
SUPRTEMB 3 516361.
SUBSTIMB 3 1446340.
SUBSCNPL 6 319407.
SUBSSTPL 5 89737.
SUBSCONC 5 1587979.
PAINTSYS 3 311560.

87
TOTAL COST 13997645.

FOR YEAR = 4
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST
DECKCONC 6 9791173.
DECKTIMB 6 1825641.
DECKSTPL 6 399853.
RAILCONC 6 240346.
RAILTIMB 4 11105.
RAILALUM 4 230.
RAILSTEL 6 50204.
EXJTSTPL 4 13140.
EXJTMSDK 5 110019.
EXJTDKCS 4 699385.
EXJTSTDK 3 2275128.
SUPRCONC 6 1060942.
SUPRSTEL 5 1165819.
SUPRPDCN 6 2793286.
SUPRTEMB 5 877585.
SUBSTIMB 4 2376717.
SUBSCNPL 5 112911.
SUBSSTPL 5 96751.
SUBSCONC 5 1714937.
PAINTSYS 4 1178800.

TOTAL COST 26793972.

COST TO ACHEIVE EACH LEVEL OF SERVICE

ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 L.O.S.6


DECKCONC 1940810. 4024953. 7539844. 9791173.
DECKTIMB 486048. 833623. 1377085. 1825641.
DECKSTPL 68780. 192770. 390195. 399853.
RAILCONC 881. 14376. 88587. 240346.
RAILTIMB 3809. 11105. 37271. 42630.
RAILALUM 46. 230. 637. 3240.
RAILSTEL 1272. 7737. 18220. 50204.
EXJTSTPL 3650. 13140. 45360. 53663.
EXJTMSDK 19175. 54975. 110019. 200773.
EXJTDKCS 382125. 699385. 2145499. 3039872.
EXJTSTDK 2275128. 2610432. 1889514. 4992300.
SUPRCONC 108640. 361370. 730190. 1060942.
SUPRSTEL 41854. 307182. 1165819. 2077060.
SUPRPDCN 108900. 1481305. 1859949. 2793286.
SUPRTEMB 567969. 805426. 877585. 1222026.
SUBSTIMB 1484135. 2376717. 3461406. 4215290.
SUBSCNPL 19709. 68649. 112911. 280727.
SUBSSTPL 64904. 62079. 96751. 1610471.
SUBSCONC 88481. 655724. 1714937. 2660860.
PAINTSYS 493320. 1178800. 3260470. 2840360.

TOTAL 8159637. 15759976. 26922250. 39400716.

88
UNDER THE TOTAL BUDGET OF: 14000000.
THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST
DECKCONC 4 4024953.
DECKTIMB 3 486048.
DECKSTPL 3 68780.
RAILCONC 6 240346.
RAILTIMB 5 37271.
RAILALUM 6 3240.
RAILSTEL 6 50204.
EXJTSTPL 4 13140.
EXJTMSDK 4 54975.
EXJTDKCS 3 382125.
EXJTSTDK 3 2275128.
SUPRCONC 4 361370.
SUPRSTEL 4 307182.
SUPRPDCN 3 108900.
SUPRTEMB 3 567969.
SUBSTIMB 3 1484135.
SUBSCNPL 6 280727.
SUBSSTPL 5 96751.
SUBSCONC 6 2660860.
PAINTSYS 3 493320.

TOTAL COST 13997424.

FOR YEAR = 5
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE

ELEMENT L.O.S. COST


DECKCONC 6 10532469.
DECKTIMB 6 2178619.
DECKSTPL 6 498386.
RAILCONC 6 216123.
RAILTIMB 4 9887.
RAILALUM 4 166.
RAILSTEL 6 52451.
EXJTSTPL 4 13385.
EXJTMSDK 5 164897.
EXJTDKCS 4 1220855.
EXJTSTDK 3 1489662.
SUPRCONC 6 1232927.
SUPRSTEL 5 1356413.
SUPRPDCN 6 3195688.
SUPRTEMB 5 960273.
SUBSTIMB 4 2547189.
SUBSCNPL 5 80506.
SUBSSTPL 5 103950.
SUBSCONC 5 1668969.
PAINTSYS 4 1434200.
TOTAL COST 28957017.

COST TO ACHEIVE EACH LEVEL OF SERVICE

89
ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 L.O.S.6
DECKCONC 1701855. 4052138. 8093396. 10532469.
DECKTIMB 509384. 928887. 1613835. 2178619.
DECKSTPL 93380. 238225. 459000. 498386.
RAILCONC 0. 7359. 72806. 216123.
RAILTIMB 3672. 9887. 41394. 49507.
RAILALUM 27. 166. 558. 3400.
RAILSTEL 916. 6003. 16001. 52451.
EXJTSTPL 2740. 13385. 92885. 107073.
EXJTMSDK 13700. 62475. 164897. 315474.
EXJTDKCS 683175. 1220855. 3866450. 5701750.
EXJTSTDK 1489662. 1496790. 4603140. 6598062.
SUPRCONC 95156. 368824. 816456. 1232927.
SUPRSTEL 35668. 431580. 1356413. 2507674.
SUPRPDCN 110756. 1675570. 2187346. 3195688.
SUPRTEMB 604029. 826286. 960273. 1401791.
SUBSTIMB 1519365. 2547189. 3888129. 4877675.
SUBSCNPL 7175. 30645. 80506. 226308.
SUBSSTPL 60523. 57733. 103950. 1678541.
SUBSCONC 42014. 466379. 1668969. 3006916.
PAINTSYS 663460. 1434200. 3402930. 3013540.

TOTAL 7636658. 15874575. 33489333. 47394376.

UNDER THE TOTAL BUDGET OF: 14000000.


THE RECOMMENDED LEVEL OF SERVICE
ELEMENT L.O.S. COST

DECKCONC 4 4052138.
DECKTIMB 3 509384.
DECKSTPL 3 93380.
RAILCONC 6 216123.
RAILTIMB 6 49507.
RAILALUM 6 3400.
RAILSTEL 6 52451.
EXJTSTPL 4 13385.
EXJTMSDK 4 62475.
EXJTDKCS 3 683175.
EXJTSTDK 3 1489662.
SUPRCONC 3 95156.
SUPRSTEL 4 431580.
SUPRPDCN 3 110756.
SUPRTEMB 3 604029.
SUBSTIMB 3 1519365.
SUBSCNPL 6 226308.
SUBSSTPL 5 103950.
SUBSCONC 6 3006916.
PAINTSYS 3 663460.
TOTAL COST 13986600.

90
8.5 PROGRAM CODE

C
C MAIN PROGRAM FOR OPTIMIZING BRIDGE MAINTENANCE LEVELS OF
C SERVICE. PREPARED BY JEBREEN M. JEBREEN
C
C
C
INTEGER E, M, Y, Z, J, C, K1, K2, BEST(40,9),ELQN(21,40,9),
1 BKLGREC(40),QNDCLN(40,9),QNBKLG(40,9),LOS(40),
2 QNDCLNA(40,9),TOTBKLG(40,9),QNBKLGA(40,9),QNMNT(40,9,9),
3 QNUP(40,9,9),NEWQN(21,40,9,9),QNDCMNT(40,9,9),
4 PINCUM(200),RECLOS(40),CNK(40)
DOUBLE PRECISION I, MACST(40,9,9), DTR(40,9), REPCST(40),B,
1 PERPCST(40), N(40,9), INCBEN(40,9,9,9),
2 INCCST(40,9,9,9), BCR(40,9,9,9), SL(40), EX(40,9,9),
3 LCC(40,9,9), NETBEN(40,9),MAINTBEN(40,9),COST(40,9),
4 TOTCST(40,9),CSTDCLN(40,9),CSTBKLG(40,9),TOCSDCLN(21,9),
5 TOCSBKLG(21,9),TOTANCST(21,9), TMNTCST(21,40,9),
6 BENDCLN(40,9),TMNTBEN(21,40,9),X(200), A(200),ZINC,ZLP,
7 TCBSTLS(21),BENBKLG(40,9)
CHARACTER ELNAME(40)*8
OPEN ( UNIT = 5, FILE = 'INP606.DAT', STATUS = 'OLD',
1 ACCESS= 'SEQUENTIAL',FORM= 'FORMATTED')
OPEN ( UNIT = 6, FILE = 'OUTP829.DAT', STATUS = 'OLD')

C
C
C PURPOSE:
C TO DETERMINE THE OPTIMUM LEVEL OF SERVICE FOR BRIDGE
C MAINTENANCE DECISIONS
C
C PARAMETERS:
C I DISCOUNT RATE
C M TOTAL NUMBER OF MAINTENANCE ELEMENTS
C B AVAILABLE BUDGET
C ELNAME AN ARRAY OF ELEMENT NAMES
C DTR AN ARRAY OF THE AVERAGE LENGTH OF TIME AN ELEMENT
C STAYS AT ACONDITION RATING
C REPCST AN ARRAY OF ELEMENT UNIT REPLACEMENT COSTS
C BKLGREC BACKLOG RECOVERY RATE
C ELQN QUANTITY OF ELEMENT UNITS AT A CONDITION RATING
C MACST MAINTENANCE ACTION UNIT COST
C SL MAINTENANCE ELEMENT SERVICE LIFE
C PERPCST PERPETUAL ELEMENT UNIT REPLACEMENT COST
C N
C EX EXTENSION IN SERVICE LIFE DUE TO MAINTENANCE
C C CURRENT CONDITION RATING
C K1,K2 IMPROVED CONDITION RATING
C J LEVEL OF SERVICE
C INCBEN INCREMINTAL BENEFITS
C INCCST INCREMINTAL COSTS
C BCR BENEFITS TO COSTS RATIO
C BEST IMPROVED CONDITION RATING ASSOCIATED WITH THE C
MAINTENANCE
C ACTION THAT IS CHOSEN TO BE BEST FOR AN ELEMENT AT
C A SPECIFIC CONDITION RATING
C NETBEN BENEFIT FROM APPLYING A MAINTENANCE ACTION
C COST UNIT COST OF THE CHOSEN MAINTENANCE ACTION
C LCC LIFE CYCLE COST OF APPLYING A MAINTENANCE ACTION
C LOS LEVEL OF SERVICE

91
C Y NUMBER OF YEARS
C Z A VARIABLE TO ENUMERATE THE OPTIMIZATION VARIABLES
C NEWQN THE UPDATED QUANTITY OF ELEMENT UNITS
C TMNTCST TOTAL MAINTENANCE COST UNDER A SPECIFIC LEVEL OF SERVICE
C TMNTBEN TOTAL MAINTENANCE BENEFITS UNDER A SPECIFIC LEVEL OF
C SERVICE
C TOTBKLG TOTAL QUANTITY OF BACKLOG FOR A GIVEN ELEMENT
C CSTBKLG COST OF IMPROVING BACKLOG UNITS
C BENBKLG BENEFITS OF IMPROVING BACKLOG UNITS
C QNMNT QUANTITY OF ELEMENT UNITS IMPROVED TO A BETTER CONDITION
C PINCUM THE IDENTITY OF THE VARIABLR THAT HAS THE VALUE ONE
C IN THE INCUMBENT SOLUTION
C CNK NUMBER OF LEVELS OF SERVICE FOR AN ELEMENT
C RECLOS OPTIMUM MAINTENANCE ELEMENT LEVEL OF SERVICE
C SUMRECLS TOTAL COST OF PERFORMING MAINTENANCE WORK AT THE OPTIMUM
C LEVEL OF SERVICE
C SUMBENLS TOTAL BENEFIT OF PERFORMING MAINTENANCE WORK AT THE
C OPTIMUM LEVEL OF SERVICE
C
C
C SUBROUTINES CALLED:
C - LOSINPUT
C - LOSPARAM
C - MBNCST
C - MCK
C

C
C TO INPUT DATA
C

CALL LOSINPUT(I,M,B,ELNAME,DTR,REPCST,
+ BKLGREC,ELQN,MACST)

C
C TO CALCULATE REQUIRED PARAMETERS
C
CALL LOSPARAM(M,I,DTR,REPCST,SL,PERPCST,N,EX)

C
C THIS STATMENT WILL CALCULATE THE INCRIMINTAL BENEFIT TO COST
C RATIO AND THEN CALCULATE THE LIFE CYCLE COST OF
C THE CHOSEN MAINTENACE ACTIONS.
C
WRITE (6,9010)
DO 30 E = 1,M
DO 20 C = 3,6
K1 = C
DO 10 K2 = K1+1,9
IF (MACST(E,C,K1) .EQ. 0.0) THEN
K1=K2
ELSE
INCBEN(E,C,K1,K2)=PERPCST(E)*((1/(1+I)**N(E,K1)) -
+ (1/(1+I)**N(E,K2)))
INCCST(E,C,K1,K2)=MACST(E,C,K2)-MACST(E,C,K1)
IF (INCCST(E,C,K1,K2) .EQ. 0.0) THEN
BCR(E,C,K1,K2) = 2.0
ELSE
BCR(E,C,K1,K2) = INCBEN(E,C,K1,K2)/
+ INCCST(E,C,K1,K2)
ENDIF
C WRITE (6,9003) E, C, K1, K2, INCBEN(E,C,K1,K2),

92
C + INCCST(E,C,K1,K2), BCR(E,C,K1,K2)
IF (BCR(E,C,K1,K2) .GT. 1.0 ) K1 = K2
ENDIF
10 CONTINUE
BEST(E,C) = K1
NETBEN(E,C)=PERPCST(E)*(1/(1+I)**N(E,C)-
+ 1/(1+I)**(N(E,C)+EX(E,C,K1)))
COST(E,C)= MACST(E,C,K1)
C WRITE (6,9004) E, C, K1
C WRITE (6,9007) NETBEN(E,C)
20 CONTINUE
WRITE (6,9011) ELNAME(E),BEST(E,3),BEST(E,4),
+ BEST(E,5),BEST(E,6)
30 CONTINUE
C WRITE (6,9021)

DO 50 E= 1,M
DO 40 C= 3,6
LCC(E,C,BEST(E,C))= MACST(E,C,BEST(E,C))*((1+I)**
+ EX(E,C,BEST(E,C))/((1+I)**EX(E,C,BEST(E,C))-1))
IF (LOS(E) .EQ. 0) LOS(E)=C
IF (LCC(E,C,BEST(E,C)).LT. LCC(E,LOS(E),
+ BEST(E,LOS(E)))) THEN
LOS(E)=C
ENDIF
40 CONTINUE

C WRITE (6,9022) ELNAME(E), LOS(E), BEST(E,LOS(E))

50 CONTINUE
C
C THIS WILL CALCULATE THE QUANTITY OF ELEMENT UNITS THAT WILL TRANSFER TO
C THE NEXT CONDITON RATING IN A YEAR, AND THE QUANTITY OF BACKLOG UNITS.
C THEN IT WILL CALCULATE THE TOTAL BENIFITS AND COSTS OF
C MAINTENANCE ACTIONS.
C

DO 90 Y=1,5
Z=1

C
C TO CALCULATE THE QUANTITIES TO BE MAINTAINED AND THE COSTS
C AND BENEFITS OF MAINTENANCE.
C

CALL MBNCST(ELQN,DTR,Y,BKLGREC,COST,NETBEN,
1 BEST,ELNAME,M,NEWQN,TMNTCST,TMNTBEN,TOTBKLG,
2 CSTBKLG,BENBKLG,QNMNT,LOS,Z,A,X,CNK)

C
C TO SOLVE THE MULTIPLE-CHOICE KNAPSACK PROBLEM
C
CALL MCK(M,CNK,X,A,B,PINCUM)

MOR=0
WRITE (6,9103)
WRITE (6,9147) B
SUMRECLS=0.0
SUMBENLS=0.0

93
DO 60 E=1,M
MINU=PINCUM(E)-MOR
IF ((CNK(E)-MINU) .EQ. 0) THEN
RECLOS(E) = 6
ELSE IF ((CNK(E)-MINU) .EQ. 1) THEN
RECLOS(E) = 5
ELSE IF ((CNK(E)-MINU) .EQ. 2) THEN
RECLOS(E) = 4
ELSE
RECLOS(E) = 3

ENDIF
MOR = MOR +CNK(E)
WRITE (6,9142) ELNAME(E),RECLOS(E),TMNTCST(Y,E,RECLOS(E))
+ ,TMNTBEN(Y,E,RECLOS(E))
SUMRECLS=SUMRECLS+TMNTCST(Y,E,RECLOS(E))
SUMBENLS=SUMBENLS+TMNTBEN(Y,E,RECLOS(E))
60 CONTINUE
WRITE (6,9146)SUMRECLS, SUMBENLS

DO 80 E=1,M
DO 70 C=3,9
ELQN(Y+1,E,C)=NEWQN(Y+1,E,RECLOS(E),C)
70 CONTINUE

C WRITE(6,9148) ELNAME(E), (ELQN(Y+1,E,C), C=3,9)

80 CONTINUE

90 CONTINUE

9003 FORMAT (X, I2, X, I2, 2X,I2,2X,I2,


+ F11.6, F11.6 , F11.6)

9004 FORMAT (X , I2, X, I2, 31H THE MOST EFFECTIVE ALTERNATIVE


+,12H IS FOR CR= , I2)

9007 FORMAT (16H NET BENEFITS = , F12.6,/)

9021 FORMAT (//,49H RECOMMENDED LEVEL OF SERVICE BASED ON LIFE CYCLE


+,15H COST ANALYSIS ,//,
+44H ELEMENT LOS CR AFTER MAINT. ,/)
9022 FORMAT (A8,7X,I2,12X,I2)
9103 FORMAT (///)
9142 FORMAT(A8,8X,I1,9X,F10.0,4X,F10.0)
9146 FORMAT (/,11HTOTAL ,13X,F10.0,4X,F10.0)
9147 FORMAT (28H UNDER THE TOTAL BUDGET OF: ,2X,F10.0,/
+ 35H THE RECOMMENDED LEVEL OF SERVICE ,//,
+ 47H ELEMENT L.O.S. COST BENEFIT,/)
9148 FORMAT (A8,X,7(X,I8))
9010 FORMAT (44H CONDITION RATING BEFORE MAINTENANCE ,/,
+ 48H ELEMENT CR3 CR4 CR5 CR6 ,/)
9011 FORMAT (A8,4(8X,I2))
END

94
SUBROUTINE LOSINPUT(I,M,B,ELNAME,DTR,REPCST,
+ BKLGREC,ELQN,MACST)
C
C PURPOSE:
C TO INPUT DATA FOR ALL VARIABLES OF THE PROGRAM
C
INTEGER E, M, Y, Z, J, C, K1, K2, BEST(40,9),ELQN(21,40,9),
1 BKLGREC(40),QNDCLN(40,9),QNBKLG(40,9),LOS(40),
2 QNDCLNA(40,9),TOTBKLG(40,9),QNBKLGA(40,9),QNMNT(40,9,9),
3 QNUP(40,9,9),NEWQN(21,40,9,9),QNDCMNT(40,9,9),
4 PINCUM(200),RECLOS(40),CNK(40)
DOUBLE PRECISION I, MACST(40,9,9), DTR(40,9), REPCST(40),B,
1 PERPCST(40), N(40,9), INCBEN(40,9,9,9),
2 INCCST(40,9,9,9), BCR(40,9,9,9), SL(40), EX(40,9,9),
3 LCC(40,9,9), NETBEN(40,9),MAINTBEN(40,9),COST(40,9),
4 TOTCST(40,9),CSTDCLN(40,9),CSTBKLG(40,9),TOCSDCLN(21,9),
5 TOCSBKLG(21,9),TOTANCST(21,9), TMNTCST(21,40,9),
6 BENDCLN(40,9),TMNTBEN(21,40,9),X(200), A(200),ZINC,ZLP,
7 TCBSTLS(21),BENBKLG(40,9)
CHARACTER ELNAME(40)*8

C
C FIRST READ STATMENT IS FOR READING THE NUMBER OF ELEMENTS(M),
C THE INTEREST RATE (I), AND THE AVAILABLE BUDGET (B)
C

READ (5,9002)
READ (5,9021) I
READ (5,9002)
READ (5,9022) M
READ (5,9001)
READ (5,9028) B

C
C THE NEXT STATMENT WILL READ THE DETERIORATION RATE AND THE QUANTITY
C OF ELEMENT UNITS AT EACH CONDITION RATING FROM 3 TO 9.THEN IT WILL
C READ THE MAINTENANCE ELEMENT REPLACEMENT COST AND BACKLOG RECOVERY RATE.
C ELEMENT UNITS AT CONDITION RATING LESS THAN 3 ARE CONSIDERED AT
C CONDITION RATING 3.
C
READ (5,9009)
DO 10 E = 1,M
READ (5,9023) ELNAME(E) , (DTR(E,C), C = 3,9)

C WRITE (6,9023) ELNAME(E) , (DTR(E,C), C = 3,9)

10 CONTINUE
READ (5,9007)
DO 20 E=1,M
READ (5,9024) REPCST(E)
20 CONTINUE
READ (5,9007)
DO 30 E=1,M
READ (5,9025) BKLGREC(E)
30 CONTINUE

READ (5,9007)
DO 40 E=1,M

95
READ (5,9026) (ELQN(1,E,C), C=3,9)
C WRITE (6,9026) (ELQN(1,E,C), C=3,9)
40 CONTINUE

C
C THIS STATMENT WILL READ THE MAINTENANCE COST FOR ALL THE
C ELEMENTS AT EACH CONDITION RATING.
C
READ (5,9006)
DO 60 E = 1,M
DO 50 C = 9,3,-1
READ (5,9027) ( MACST(E,C,K1), K1 = 9,3,-1)
C WRITE (6,9027) ( MACST(E,C,K1), K1 = 9,3,-1)
50 CONTINUE
READ (5,9002)
60 CONTINUE

RETURN
9001 FORMAT (/)
9002 FORMAT (//)
9006 FORMAT (//////)
9007 FORMAT (///////)
9009 FORMAT (/////////)
9021 FORMAT (15X,F5.3)
9022 FORMAT (31X,I2)
9023 FORMAT (A8,4X, 7(2X,F4.1))
9024 FORMAT (31X,F6.2)
9025 FORMAT (20X,I2)
9026 FORMAT (9X, 7(X,I8))
9027 FORMAT (F6.2, 6(X,F6.2))
9028 FORMAT (18X,F10.0)
END

SUBROUTINE LOSPARAM(M,I,DTR,REPCST,SL,PERPCST,N,EX)

C
C PURPOSE:
C TO CALCULATE THE REQUIRED PARAMETERS OF THE PROBLEM
C

INTEGER E, M, Y, Z, J, C, K1, K2, BEST(40,9),ELQN(21,40,9)


1 ,BKLGREC(40),QNDCLN(40,9),QNBKLG(40,9),LOS(40),
2 QNDCLNA(40,9),TOTBKLG(40,9),QNBKLGA(40,9),QNMNT(40,9,9),
3 QNUP(40,9,9),NEWQN(21,40,9,9),QNDCMNT(40,9,9),
4 PINCUM(200),RECLOS(40),CNK(40)
DOUBLE PRECISION I, MACST(40,9,9), DTR(40,9), REPCST(40),B,
1 PERPCST(40), N(40,9), INCBEN(40,9,9,9),
2 INCCST(40,9,9,9), BCR(40,9,9,9), SL(40), EX(40,9,9),
3 LCC(40,9,9), NETBEN(40,9),MAINTBEN(40,9),COST(40,9),
4 TOTCST(40,9),CSTDCLN(40,9),CSTBKLG(40,9),TOCSDCLN(21,9),
5 TOCSBKLG(21,9),TOTANCST(21,9), TMNTCST(21,40,9)
6 ,BENDCLN(40,9),TMNTBEN(21,40,9),X(200), A(200),ZINC,ZLP,
7 TCBSTLS(21),BENBKLG(40,9)
CHARACTER ELNAME(40)*8
C
C CLEAR THE PARAMETERS
C
DO 120 E =1,M
SL(E) = 0.0
DO 110 C =3,9

96
N(E,C) = 0.0
DO 100 K1 =3,9
EX(E,C,K1) = 0.0
100 CONTINUE
110 CONTINUE
120 CONTINUE

C
C THIS STATMENT WILL CALCULATE THE SERVICE LIFE OF EACH ELEMENT
C AND THEN WILL CALCULATE THE PERPUTUAL REPLACEMENT COST.
C
DO 20 E = 1,M
DO 10 C = 3,9
SL(E) = SL(E) + DTR (E,C)
10 CONTINUE
PERPCST(E) = REPCST(E) * ((1+I)**SL(E)/((1+I)**SL(E) - 1))
20 CONTINUE
C
C THIS STATMENT WILL CALCULATE THE TIME IT WILL TAKE AN ELEMENT TO
C REACH THE END OF ITS SERVICE LIFE.
C

DO 50 E = 1,M
DO 40 K1 = 3,9
DO 30 C = 3,K1
N(E,K1) = N(E,K1) + DTR(E,C)
30 CONTINUE
40 CONTINUE
50 CONTINUE

C
C THIS STATMENT WILL CALCULATE THE EXTENSION IN SERVICE LIFE DUE TO
C MAINTENANCE ACTION.
C

DO 90 E = 1,M
DO 80 C = 3,8
DO 70 K1 = C,9
IF (C .EQ. K1) THEN
EX(E,C,K1)= 1.0
ELSE
DO 60 K2 = C+1,K1
EX(E,C,K1) = EX(E,C,K1) + DTR(E,K2)
60 CONTINUE
ENDIF
70 CONTINUE
80 CONTINUE
90 CONTINUE

RETURN

END
SUBROUTINE MBNCST(ELQN,DTR,Y,BKLGREC,COST,NETBEN,
1 BEST,ELNAME,M,NEWQN,TMNTCST,TMNTBEN,TOTBKLG,
2 CSTBKLG,BENBKLG,QNMNT,LOS,Z,A,X,CNK)
C
C PURPOSE:
C TO DETERMINE THE COSTS AND BENEFITS OF APPLYING

97
C THE DIFFERENT LEVELS OF SERVICE, AND TO UPDATE
C QUANTITY OF ELEMENT UNITS FOR THE NEXT YEAR
C
C PARAMETERS:
C QNDCLNA QUANTITY OF ELEMENT UNITS PASSING THROUGH
C THE LEVEL OF SERVICE THRESHOLD IN A YEAR
C QNBKLGA QUANTITY OF BACKLOG UNITS TO BE IMPROVED IN
C A GIVEN YEAR
C QNDCMNT QUANTITY OF ELEMENT UNITS THAT PASSES THROUGH
C THE LEVEL OF SERVICE THRESHOLD AND IMPROVED
C IN A GIVEN YEAR
C QNUP QUANTITY OF ELEMENT UNITS UPGRADED TO A SPECIFIC
C CONDITION RATING
C TOTANCST TOTAL ANNUAL COST OF IMPROVEMENT UNDER A SPECIFIC
C LEVEL OF SERVICE
C TCBSTLS TOTAL ANNUAL COST OF IMPROVEMENT IF THE BEST LEVELS
C OF SERVICE ARE IMPLEMENTED
C
INTEGER E, M, Y, Z, J, C, K1, K2, BEST(40,9),ELQN(21,40,9)
1 ,BKLGREC(40),QNDCLN(40,9),QNBKLG(40,9),LOS(40),
2 QNDCLNA(40,9),TOTBKLG(40,9),QNBKLGA(40,9),QNMNT(40,9,9),
3 QNUP(40,9,9),NEWQN(21,40,9,9),QNDCMNT(40,9,9),
4 PINCUM(200),RECLOS(40),CNK(40)
DOUBLE PRECISION I, MACST(40,9,9), DTR(40,9), REPCST(40),B,
1 PERPCST(40), N(40,9), INCBEN(40,9,9,9),
2 INCCST(40,9,9,9), BCR(40,9,9,9), SL(40), EX(40,9,9),
3 LCC(40,9,9), NETBEN(40,9),MAINTBEN(40,9),COST(40,9),
4 TOTCST(40,9),CSTDCLN(40,9),CSTBKLG(40,9),TOCSDCLN(21,9),
5 TOCSBKLG(21,9),TOTANCST(21,9), TMNTCST(21,40,9)
6 ,BENDCLN(40,9),TMNTBEN(21,40,9),X(200), A(200),ZINC,ZLP,
7 TCBSTLS(21),BENBKLG(40,9)
CHARACTER ELNAME(40)*8

C
C CLEAR PARAMETERS
C
DO 30 E=1,M
CNK(E)=0
DO 20 J=3,6
TOTBKLG(E,J)=0
CSTBKLG(E,J)=0.0
BENBKLG(E,J)=0.0
DO 10 C=3,9
QNUP(E,C,J)=0
QNMNT(E,C,J)=0
10 CONTINUE
20 CONTINUE
30 CONTINUE

DO 60 E=1,M
DO 50 J=3,6

C
C CALCULATE QUANTITY OF ELEMENT UNITS DECLINE TO
C A LOWER CONDITION IN A GIVEN YEAR.
C
QNDCLNA(E,J)= ELQN(Y,E,J+1)/DTR(E,(J+1))

C
C CALCULATE THE TOTAL BACKLOG

98
C
DO 40 C=3,J
TOTBKLG(E,J)= TOTBKLG(E,J)+ELQN(Y,E,C)
40 CONTINUE
C
C CALCULATE QUANTITY OF BACKLOG THAT SHOULD BE
C IMPROVED IN A GIVEN YEAR.
C

IF (BKLGREC(E) .LE. 0) BKLGREC(E)=1


QNBKLGA(E,J)=TOTBKLG(E,J)/BKLGREC(E)
C
C CALCULATE THE COST AND BENEFIT OF IMPROVING
C ELEMENT QUANTITIES THAT CROSSED THE THRESHOLD
C OF THE LEVEL OF SERVICE IN A GIVEN YEAR.
C
CSTDCLN(E,J)= QNDCLNA(E,J)*COST(E,J)
BENDCLN(E,J)=QNDCLNA(E,J)*NETBEN(E,J)

C
C UPDATE THE QUANTITY OF ELEMENT UNITS UPGRADED
C TO A BETTER CONDITION
C
QNDCMNT(E,J,J)=QNDCLNA(E,J)
QNUP(E,BEST(E,J),J)=QNUP(E,BEST(E,J),J)+QNDCLNA(E,J)

C
C CALCULATE THE BACKLOG UNITS THAT SHOULD BE IMPROVED FOR
C EACH CONDITION RATING. THEN CALCULATE THE COST AND
C BENEFIT OF IMPROVEMENT, AND UPDATE THE QUANTITY OF
C UPGRADED ELEMENT UNITS.
C
C=3
DOWHILE (QNBKLGA(E,J) .GT. 0)
IF (QNBKLGA(E,J) .GT. ELQN(Y,E,C)) THEN
CSTBKLG(E,J)= CSTBKLG(E,J)+ELQN(Y,E,C)*COST(E,C)
BENBKLG(E,J)=BENBKLG(E,J)+ELQN(Y,E,C)*NETBEN(E,C)
QNBKLGA(E,J)= QNBKLGA(E,J)-ELQN(Y,E,C)
QNMNT(E,C,J)=ELQN(Y,E,C)
QNUP(E,BEST(E,C),J)= QNUP(E,BEST(E,C),J)+ELQN(Y,E,C)
ELSE
CSTBKLG(E,J)= CSTBKLG(E,J)+QNBKLGA(E,J)*COST(E,C)
BENBKLG(E,J)=BENBKLG(E,J)+QNBKLGA(E,J)*NETBEN(E,C)
QNMNT(E,C,J)=QNBKLGA(E,J)
QNUP(E,BEST(E,C),J)=QNUP(E,BEST(E,C),J)+QNBKLGA(E,J)
QNBKLGA(E,J)= 0
ENDIF
C=C+1
ENDDO

C
C CALCULATE THE TOTAL MAINTENANCE COST AND BENEFIT
C FOR EACH ELEMENT AND FOR THE ALL ELEMENTS.
C
TMNTCST(Y,E,J)=CSTBKLG(E,J)+CSTDCLN(E,J)

99
TMNTBEN(Y,E,J)=BENBKLG(E,J)+BENDCLN(E,J)
TOTANCST(Y,J)=TOTANCST(Y,J)+TMNTCST(Y,E,J)
IF (TMNTCST(Y,E,J) .GT. 1.0) THEN
A(Z)=TMNTCST(Y,E,J)
X(Z)=TMNTBEN(Y,E,J)
Z=Z+1
CNK(E)=CNK(E)+1
ENDIF
50 CONTINUE
BKLGREC(E)=BKLGREC(E)-1
60 CONTINUE
WRITE (6,9044) Y
TCBSTLS(Y)=0.0
DO 70 E=1,M
WRITE (6,9045) ELNAME(E),LOS(E),TMNTCST(Y,E,LOS(E))
TCBSTLS(Y)=TCBSTLS(Y)+TMNTCST(Y,E,LOS(E))
70 CONTINUE
WRITE (6,9046) TCBSTLS(Y)
WRITE (6,9036)
WRITE (6,9038)
DO 80 E=1,M
WRITE (6,9041) ELNAME(E),(TMNTCST(Y,E,J), J = 3,6)
80 CONTINUE

WRITE (6,9033) (TOTANCST(Y,J), J=3,6)


WRITE (6,9003)

C WRITE (6,9037)
C WRITE (6,9038)
C DO 90 E=1,M
C WRITE (6,9041) ELNAME(E), (TMNTBEN(Y,E,J) ,J = 3,6)
C90 CONTINUE

C
C UPDATE THE QUANTITY OF ELEMENT UNITS FOR THE
C NEXT YEAR.
C

DO 120 E=1,M
DO 110 J=3,6
DO 100 C=3,9
IF (C .EQ. 3) THEN
NEWQN(Y+1,E,J,C)=ELQN(Y,E,C)+(ELQN(Y,E,C+1)
+ -QNMNT(E,C+1,J))/DTR(E,C+1)+QNUP(E,C,J)
+ -QNMNT(E,C,J)-QNDCMNT(E,C,J)
ELSE IF (C .EQ. 9) THEN
NEWQN(Y+1,E,J,C)=ELQN(Y,E,C)+QNUP(E,C,J)
+ -ELQN(Y,E,C)/DTR(E,C)
ELSE
NEWQN(Y+1,E,J,C)=ELQN(Y,E,C)+(ELQN(Y,E,C+1)
+ -QNMNT(E,C+1,J))/DTR(E,C+1)+QNUP(E,C,J)-
+ QNMNT(E,C,J)-(ELQN(Y,E,C)-
+ QNMNT(E,C,J))/DTR(E,C)-QNDCMNT(E,C,J)
ENDIF
100 CONTINUE
110 CONTINUE
120 CONTINUE

RETURN
9003 FORMAT (///)

100
9033 FORMAT (/,8H TOTAL ,4(4X,F10.0))
9036 FORMAT (///, 38H COST TO ACHEIVE EACH LEVEL OF SERVICE ,/)
9037 FORMAT (/, 45H BENIFTS FROM APPLYING EACH LEVEL OF SERVICE ,/)
9038 FORMAT (50H ELEMENT L.O.S.3 L.O.S.4 L.O.S.5 ,
+14H L.O.S.6 ,/)
9041 FORMAT(A8, 4(4X,F10.0))
9044 FORMAT (///,12H FOR YEAR = ,I2,/,
+45H THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF,
+8H SERVICE,//,30H ELEMENT L.O.S. COST )
9045 FORMAT (A8,6X,I1,9X,F10.0)
9046 FORMAT (/,11HTOTAL COST ,13X,F10.0)
END

SUBROUTINE MCK(M,CNK,C,A,B,PINCUM)
C
C THIS SUBROUTINE IS AND RELATED SUBROUTINE IS WRITTEN BY M. E.
C DYER, J. WALKER AND N. M. W. KAYAL (1984). IT IS MADE AVAILABLE
C BY PROFESSOR MARTIN E. DYER FOR TEACHING AND RESEARCH PURPOSES
C ONLY. IT WAS MODIFIED BY J. JEBREEN (1995) TO BE A PART OF THE
C RESEARCH ON OPTIMIZING BRIDGE MAINTENANCE LEVELS OF SERVICE.
C
INTEGER DCMPLC,DEPTH,PBASIC,PNEXT,PPRED,PEGSTR,PSUCC,PSET,M,
1 CNK,PINCUM,PLAST,PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR
CHARACTER DETECT*5
DOUBLE PRECISION A,B,C,FSLOPE,BSLOPE,BIGNUM,TOL,SLACK,
1 SUMCJ,ZLP,LAMBDA,DELTA,VZERO,ZINC,ZBAR
PARAMETER (MAXM = 1600 , MAXN = 8000)
DIMENSION A(MAXN),C(MAXN),PBASIC(MAXM),PNEXT(MAXN),
1 PSUCC(MAXN),PPRED(MAXN),PLAST(MAXN),CNK(40
2 ),FSLOPE(MAXM),BSLOPE(MAXM),PFHEAP(MAXM),PBHEAP(MAXM),
3 PHEAPF(MAXM),PHEAPB(MAXM),PINCUM(MAXM),PSET(MAXN)

C
C
C PURPOSE:
C TO DETERMINE AN OPTIMAL SOLUTION (IF IT EXISTS) TO A GUB KNAPSACK
C PROBLEM
C
C
C PARAMETERS:
C ALL PARAMETERS USED WITHIN SUBROUTINE PARAMETER LISTS ARE DESCRIBED
C IN THE LISTING OF THE ASSOCIATED SUBROUTINE
C
C
C SUBROUTINES CALLED:
C SETUP
C SOLVLP
C BANDB
C
C
C REFERENCE:
C M. E. DYER,N. KAYAL AND J. WALKER
C TEESSIDE POLYTECHNIC
C MATHEMATECS REPORT No. TPMR 83-8
C
C
C A BRANCH AND BOUND ALGORITHM FOR SOLVING THE MULTIPLE-CHOICE
C KNAPSACK PROBLEM
C
C

101
C
C
CALL SETUP(A,B,C,M,CNK,N,PBASIC,PNEXT,PINCUM
1 ,PEGSTR,PSUCC,PPRED,PLAST,FSLOPE
2 ,BSLOPE,PFHEAP,PBHEAP,PHEAPF,PHEAPB,BIGNUM,TOL,SLACK,
3 SUMCJ,ZLP,KFRACT,QPRIME,QSTAR,DETECT,PSET)
C
C
IF(DETECT .EQ. ' TRUE') STOP
C
C
CALL SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,M,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZLP,SUMCJ,
2 DELTA,SLACK,VZERO,KFRACT,DETECT,INITAL)
C
C
IF(DETECT .EQ. ' TRUE') STOP
C
C

CALL BANDB(PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR,KFRACT,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZLP,SUMCJ,SLACK,DELTA,VZERO,PLAST,
3 PNEXT,DCMPLC,PINCUM,M,ZINC,ITERAT,NGNRAT,
4 DEPTH,PEGSTR,PSET)

RETURN
END

SUBROUTINE SETUP(A,B,C,M,CNK,N,PBASIC,PNEXT,PFIRST
1 ,PEGSTR,PSUCC,
2 PPRED,PLAST,FSLOPE,BSLOPE,PFHEAP,PBHEAP,PHEAPF,
3 PHEAPB,BIGNUM,TOL,SLACK,SUMCJ,ZINITL,KFRACT,
4 QPRIME,QSTAR,DETECT,PSET)
C
C
C
C
C PURPOSE:
C TO INPUT DATA AND CHECK PARAMETERS ARE WITHIN 'ALLOWABLE' RANGE
C TO ESTABLISH SUCCESSOR LINKING POINTERS IN EACH GUB SET
C TO ESTABLISH SORT POINTERS IN EACH GUB SET
C TO ESTABLISH IP UNDOMINATED POINTERS IN EACH GUB SET
C TO ESTABLISH LP UNDOMINATED POINTERS IN EACH GUB SET
C TO ESTABLISH AN INITIAL BASIC DUAL FEASIBLE SOLUTION
C
C
C PARAMETERS:
C A(.) THE ARRAY OF RESOURCE CONSTRAINT COEFFICIENTS
C B THE LIMITING VALUE OF THE RESOURCE CONSTRAINT
C C(.) THE ARRAY OF OBJECTIVE FUNCTION COEFFICIENTS
C M THE NUMBER OF GUB SETS
C N THE NUMBER OF BINARY VARIABLES
C DCMPLC THE NUMBER OF DECIMAL PLACES TO WHICH THE REAL ( DOUBLE
C PRECISION ) DATA IS TO BE INPUT
C PBASIC(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE BASIC VARIABLE
C IN EACH GUB SET)
C PNEXT(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE SUCCESSOR
C VARIABLE (WITHIN A GUB SET) OF A VARIABLE IN AN IP LIST)
C PFIRST(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE FIRST BINARY
C VARIABLE IN EACH GUB SET)
C PEGSTR A VARIABLE TO INDICATE THE STRATEGY TO BE USED IN
C ATTEMPTING TO PEG SOME BINARY VARIABLES TO ZERO. THUS

102
C PEGSTR = 0 ( OR LESS THAN ) INDICATES AN ATTEMPT WILL
C BE MADE TO PEG SOME BINARY VARIABLES TO ZERO
C ONLY AT THE DETERMINATION OF FIRST IP INCUMBENT
C SOLUTION
C PEGSTR = 1 ( OR GREATER THAN )INDICATES AN ATTEMPT WILL BE
C MADE TO PEG SOME BINARY VARIABLES TO ZERO AT
C EACH NODE
C PSUCC(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE SUCCESSOR
C VARIABLE (WITHIN A GUB SET) OF A VARIABLE IN AN LP LIST)
C PPRED(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE PREDECESSOR
C VARIABLE (WITHIN A GUB SET) OF A VARIABLE IN AN LP LIST)
C PLAST(.) AN ARRAY OF POINTERS ( THE IDENTITY OF THE PREDECESSOR
C VARIABLE (WITHIN A GUB SET) OF A VARIABLE IN AN IP LIST)
C FSLOPE(.) AN ARRAY OF THE FORWARD SLOPES ASSOCIATED WITH A BASIC
C DUAL FEASIBLE SOLUTION
C BSLOPE(.) AN ARRAY OF THE BACKWARD SLOPES ASSOCIATED WITH A BASIC
C DUAL FEASIBLE SOLUTION
C PFHEAP(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE GUB SET IN THE
C FORWARD HEAP)
C PBHEAP(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE GUB SET IN THE
C BACKWARD HEAP)
C PHEAPF(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE LOCATION OF THE
C GUB SET IN THE FORWARD HEAP)
C PHEAPB(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE LOCATION OF THE
C GUB SET IN THE BACKWARD HEAP)
C BIGNUM THE LARGEST(DOUBLE PRECISION)NUMBER AVAILABLE ON COMPUTER
C TOL A SMALL POSITIVE REAL (DOUBLE PRECISION) NUMBER USED FOR
C THE INEQUALITY TEST OF TWO REALS.
C SLACK = B - SUM OF A(.) COEFFICIENTS OF BASIC VARIABLES
C SUMCJ = SUM OF C(.) COEFFICIENTS OF BASIC VARIABLES
C ZINITL THE OBJECTIVE FUNCTION VALUE OF INITIAL BASIC DUAL
C FEASIBLE SOLUTION
C KFRACT THE IDENTITY OF THE FRACTIONAL GUB SET
C QPRIME THE IDENTITY OF THE 'SMALL' FRACTIONAL VARIABLE
C QSTAR THE IDENTITY OF THE 'LARGE' FRACTIONAL VARIABLE
C WITH A( QPRIME ) LESS THAN A( QSTAR )
C DETECT A VARIABLE TO INDICATE WHETHER THE PROGRAM SHOULD BE
C ABORTED.THUS
C DETECT = 'TRUE' THE PROGRAM WILL BE ABORTED
C DETECT = 'FALSE' THE PROGRAM WILL NOT BE ABORTED
C PSET(.) AN ARRAY OF POINTERS (THE IDENTITY OF THE GUB SET)
C
C
C SUBROUTINES CALLED:
C INPUT
C ASORT
C IPLINK
C IBASIS
C
C
C REMARKS:
C WITHIN THIS SUROUTINE PBASIC ARRAY IS USED FOR TWO PURPOSES:
C - TO POINT TO THE LAST VARIABLE IN EACH GUB SET
C - TO POINT TO THE BASIC VARIABLE IN EACH GUB SET
C
C
INTEGER DCMPLC,PBASIC,PNEXT,PEGSTR,PSUCC,PPRED,PSET,CNK,
1 PFIRST,PLAST,PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR
DOUBLE PRECISION A,B,C,FSLOPE,BSLOPE,BIGNUM,TOL,SLACK,
1 SUMCJ,ZINITL
CHARACTER SORTRQ*5,DOMREQ*5,DETECT*5
DIMENSION A(200),C(200),PBASIC(200),PNEXT(200),CNK(40),
1 PSUCC(200),PPRED(200),PLAST(200),FSLOPE(200),
2 BSLOPE(200),PFHEAP(200),

103
2 PBHEAP(200),PHEAPF(200),PHEAPB(200),PFIRST(200),PSET(200)
C
C
DETECT = 'FALSE'
C
C TO INPUT DATA
C
C
CALL INPUT(M,CNK,N,C,A,B,SORTRQ,PEGSTR,LEVEL,
1 PFIRST,DOMREQ,PBASIC,DETECT,TOL,BIGNUM,PNEXT,PLAST,
2 PPRED,PSUCC,PSET)
C
C
IF (DETECT .EQ. ' TRUE') RETURN
C
C SORTING REQUIRED ?
C
C
C
IF (SORTRQ .EQ. ' TRUE') CALL ASORT(A,PFIRST,PBASIC,M,PNEXT,PLAST,
1 DOMREQ)
C
C
C
C IP/LP LINKAGE REQUIRED ?
C
C
C
IF (DOMREQ .EQ. ' TRUE') CALL IPLINK(PNEXT,PLAST,A,C,M,PFIRST,
1 PBASIC,PSUCC,PPRED,TOL)
C
C
C TO FIND AN INITIAL BASIC DUAL FEASIBLE SOLUTION
C
C
C
CALL IBASIS(A,C,BIGNUM,FSLOPE,BSLOPE,B,SLACK,SUMCJ,PFHEAP,PBHEAP,
1 PHEAPF,PHEAPB,PSUCC,PBASIC,M,TOL,PPRED,KFRACT,QPRIME,
2 QSTAR,ZINITL,PFIRST,DETECT)
C
C
RETURN
END

SUBROUTINE SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,
1 PSUCC,PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM
2 ,TOL,ZBARND,SUMCJ,DELTA,SLACK,VZERO,KFRACT,
3 DETECT,ITERAT)
C
C
C
C
C PURPOSE:
C TO SOLVE THE LP OF THE 'CURRENT' SUBPROBLEM
C
C
C PARAMETERS:
C LAMBDA THE OPTIMAL SLOPE OF THE 'CURRENT' SUBPROBLEM
C ZBARND THE OBJECTIVE FUNCTION VALUE OF THE OPTIMAL SOLUTION
C TO THE CURRENT SUBPROBLEM
C DELTA = A( QSTAR ) - A( QPRIME )
C VZERO THE VALUE OF THE 'SMALL' FRACTIONAL VARIABLE
C ITERAT THE ACCUMULATED NUMBER OF ITERATIONS TO SOLVE THE LP'S

104
C
C
C SUBROUTINE CALLED:
C DUAL1
C DUAL2
C
C
C REMARKS:
C -------
C
C
CHARACTER DETECT*5
INTEGER PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,FREE
DOUBLE PRECISION A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,SUMCJ,
1 DELTA,SLACK,VZERO
DIMENSION A(200),C(200),PFHEAP(200),PBHEAP(200),PBASIC(200),
1 PHEAPF(200),PHEAPB(200),
1 PSUCC(200),PPRED(200),FSLOPE(200),BSLOPE(200)
C
C
IF (SLACK .GE. -TOL) THEN
C
C
C
CALL DUAL1(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,
1 PSUCC,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,
2 ZBARND,SUMCJ,DELTA,SLACK,VZERO,KFRACT,ITERAT)
C
C
C
ELSE
C
C
C
CALL DUAL2(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,
2 ZBARND,SUMCJ,DELTA,SLACK,VZERO,KFRACT,DETECT,ITERAT)
C
C
C
ENDIF
RETURN
END

SUBROUTINE BANDB(PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR,KFRACT,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBAR,SUMCJ,SLACK,DELTA,VZERO,PLAST,
3 PNEXT,DCMPLC,PINCUM,M,ZINC,ITERAT,
4 NGNRAT,DEPTH,PEGSTR,PSET)
C
C
C
C
C PURPOSE:
C TO HANDLE THE BRANCH AND BOUND ALGORITHM
C TO STORE THE INFORMATION OF THE SUBPROBLEMS GENERATED
C
C
C PARAMETERS:
C ZBAR THE OBJECTIVE FUNCTION VALUE OF OPTIMAL SOLUTION TO THE
C INITIAL LP PROBLEM
C PINCUM(.) AN ARRAY OF POINTERS (]THE IDENTITY OF THE VARIABLE THAT
C HAS THE VALUE ONE IN THE INCUMBENT SOLUTION)

105
C ZINC THE OBJECTIVE FUNCTION VALUE OF THE INCUMBENT SOLUTION
C NGNRAT THE NUMBER OF NODES GENERATED
C DEPTH MAXIMUM DEPTH OF TREE GENERATED
C
C SUBROUTINES CALLED:
C - BRNCH
C - TRACK
C - ROUND
C - UPDATE
C - PEGTO0
C - INSTAT
C - SINGLE
C
C
C REMARKS:
C -------
C
C
INTEGER FREE,PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR,PBASIC,PSUCC
1 ,PPRED,DCMPLC,PINCUM,FIX,GUBSET,STEM,DEPTH,BRANCH,
2 PLAST,PNEXT,PEG,ZERO,POINT,PEGSTR,PSET
PARAMETER (MAXNOD = 1500,MAXN = 8000)
CHARACTER DETECT*5
DOUBLE PRECISION SLACK,A,C,SUMCJ,Z,DELTA,VZERO,FSLOPE,BSLOPE,TOL,
1 BIGNUM,LAMBDA,ZINC,SLOPE,WAIVE,ONE,ZBAR,ZMAX,ZLB
DIMENSION PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),
1 PBASIC(200),PPRED(200),PSUCC(200),A(200),C(200),FSLOPE(200),
2 BSLOPE(200),FIX(MAXNOD),
2 GUBSET(MAXNOD),BRANCH(MAXNOD),SLOPE(MAXNOD),PLAST(200),
3 PNEXT(200),PEG(MAXN),POINT(0:MAXNOD),
4 PINCUM(200),PSET(200)
C
C
C
C INITIALISE THE VARIABLES
C

POINT(0) = 20000
ITERAT = 0
ZERO = 0
ZINC = -BIGNUM
NGNRAT = 0
Z = ZBAR
STEM = 1
ISTEM = 0
NODE = 0
FREE = M
DEPTH = 0
WAIVE = 1.0 ** (-DCMPLC) - TOL
ONE = 1.0 - TOL
C
C TO PEG VARIABLES AT ROOT
C
C

CALL PEGTO0(PBASIC,PSUCC,PPRED,PLAST,PNEXT,ZERO,PFHEAP,PBHEAP,
1 PHEAPF,PHEAPB,A,C,TOL,BIGNUM,FSLOPE,BSLOPE,LAMBDA,
2 M,QPRIME,QSTAR,SLACK,DELTA,SUMCJ,KFRACT,ZINC,
3 PINCUM,Z,FREE,PEG)
C
C

10 NODE = NODE +1
NGNRAT = NGNRAT + 1

106
IF (NODE .GT. MAXNOD) THEN
PRINT 9000,NODE,MAXNOD
RETURN
ENDIF
C
C TERMINATE BRANCH ?
C
FIX( NODE ) = STEM
IF (Z - ZINC .GE. WAIVE .AND. DETECT .EQ. 'FALSE') THEN
C
C LP SOLVES IP ?
C
IF (VZERO .LT. ONE) THEN
C
C
C CALCULATE 'CURRENT' LOWER BOUND AND UPDATE INCUMBENT VALUE IF
C REQUIRED OR CALL PEGGING ROUTINE
C
C
IF (PEGSTR .GT. 0) THEN
C
C

CALL PEGTO0(PBASIC,PSUCC,PPRED,PLAST,PNEXT,ZERO,PFHEAP,
1 PBHEAP,PHEAPF,PHEAPB,A,C,TOL,BIGNUM,FSLOPE,
2 BSLOPE,LAMBDA,M,QPRIME,QSTAR,SLACK,DELTA,
3 SUMCJ,KFRACT,ZINC,PINCUM,Z,FREE,PEG)
C
C
ELSE
C
C

CALL ROUND(A,C,QPRIME,QSTAR,PNEXT,SLACK,DELTA,TOL,SUMCJ,
1 ZLB,JB)
C
C

IF (ZLB .GT. ZINC) THEN


C
C

CALL SINGLE(M,SLACK,PBASIC,A,C,KFRCT,JFRACT,SUMCJ,
1 ZMAX,PLAST,TOL,BIGNUM)
C
C

IF (ZMAX .LT. ZLB) THEN


ZMAX = ZLB
KFRCT = KFRACT
JFRACT = JB
ENDIF
C
C
CALL UPDATE(KFRCT,ZMAX,ZINC,PBASIC,PINCUM,M,JFRACT)
C
C
ENDIF
ENDIF
C
C

107
C STORE INFORMATION OF 'CURRENT ' NODE
C
GUBSET ( NODE ) = KFRACT
POINT(NODE) = ZERO
BRANCH( NODE ) = QSTAR
SLOPE( NODE ) = LAMBDA
C
C BRANCH
C
STEM = 1
CALL BRNCH(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,Z,SUMCJ,SLACK,DELTA,VZERO,PLAST,
3 PNEXT,STEM,KFRACT,I)
C
C

ITERAT = ITERAT + I
GO TO 10
ELSE
C
C

CALL UPDATE(KFRACT,Z,ZINC,PBASIC,PINCUM,M,QPRIME)
C
C

ENDIF
ENDIF
DETECT = 'FALSE'
C
C BACKTRACK
C
IF (NODE .GT. DEPTH) DEPTH = NODE
20 IF (NODE .GT. 1) THEN
C
C
CALL TRACK(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,Z,SUMCJ,SLACK,DELTA,VZERO,PLAST,
3 PNEXT,NODE,STEM,KFRACT,SLOPE,BRANCH,GUBSET)
C
C
IF (STEM .EQ. 1) THEN
STEM = ISTEM
C
C BRANCH TO OTHER BRANCH
C
C
CALL BRNCH(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,Z,SUMCJ,SLACK,DELTA,VZERO,PLAST,
3 PNEXT,STEM,KFRACT,I)
C
C
ITERAT = ITERAT + I
GO TO 10
ELSE
C
C
IF (PEGSTR .GT. 0) CALL INSTAT(POINT,NODE,ZERO,PEG,PSUCC,
1 PPRED,PLAST,PNEXT,PSET,PBASIC,A,C,BIGNUM,
2 PBHEAP,PHEAPB,BSLOPE,PFHEAP,PHEAPF,FSLOPE

108
3 ,TOL)
C
C
STEM = FIX( NODE )
C
C BACKTRACK
C
GO TO 20
ENDIF
ENDIF
RETURN
9000 FORMAT(' ERROR- THE CURRENT DEPTH OF TREE IS',I6,' WHICH IS ',
1 'GREATER THAN ALLOWABLE LIMIT',I6)
END
SUBROUTINE INPUT(M,CNK,N,C,A,B,SORTRQ,PEGSTR,
1 LEVEL,PFIRST,DOMREQ,PEND,DETECT,TOL,BIGNUM,PNEXT
2 ,PLAST,PPRED,PSUCC,PSET)
C
C
C
C
C PURPOSE:
C TO INPUT THE DATA FOR A GUB KNAPSACK PROBLEM
C TO CHECK WHETHER THE PARAMETERS DEFINING THE 'SIZE' OF THE GUB
C KNAPSACK PROBLEM ARE WITHIN THE 'ALLOWABLE' LIMITS
C
C
C PARAMETERS:
C SORTRQ A VARIABLE TO INDICATE IF THE RESOURCE CONSTRAINT
C COEFFICIENTS WITHIN EACH GUB SET ARE REQUIRED TO BE
C SORTED INTO NON DESCENDING ORDER. THUS
C SORTRQ = 'TRUE' INDICATES A SORT IS REQUIRED
C SORTRQ = 'FALSE' INDICATES A SORT IS NOT REQUIRED AND IT
C IS ASSUMED THAT THE RESOURCE CONSTRAINT
C COEFFICIENTS WITHIN EACH GUBSET ARE
C INPUT IN NON DESCENDING ORDER
C LEVEL A VARIABLE TO INDICATE THE LEVEL OF DETAIL TO BE OUTPUT
C FROM 'SONE' SUBROUTINE'.(SEE SUBROUTINE SONE)
C DOMREQ A VARIABLE TO INDICATE IF IP AND LP LINKAGE IS REQUIRED
C DOMREQ = 'TRUE' INDICATES LINKAGE IS REQUIRED
C DOMREQ = 'FALSE' INDICATES NO LINKAGE IS REQUIRD AND IT
C IS ASSUMED THAT WITHIN EACH GUB SET NO VARIABLE
C IS IP OR LP DOMINATED
C NOTE THAT IF A SORT OF THE RESOURCE CONSTRAINT
C COEFFICIENTS IS REQUIRED THEN DOMREQ IS SET TO
C 'TRUE' AUTOMATICALLY
C PEND(.) AN ARRAY OF POINTERS ( THE IDENTITY OF THE LAST BINARY
C VARIABLE IN EACH GUB SET )
C
C
C SUBROUTINES CALLED:
C ------
C
C
C REMARKS:
C THE SUCCESSOR,SORT,IP AND LP LINKING POINTER SYSTEMS ARE
C INITIALISED ON THE ASSUMPTION THAT SORTING,IP LINKAGE AND
C LP LINKAGE WILL NOT BE REQUIRED
C
C
INTEGER DCMPLC,PEGSTR,PFIRST,FIRST,PEND,CNK,PNEXT,
1 PLAST,PSUCC,PPRED,PSET
DOUBLE PRECISION C,A,B,TOL,BIGNUM

109
CHARACTER SORTRQ*5,DETECT*5,DOMREQ*5
PARAMETER ( MAXDCP = 5 , MAXM = 1600 , MAXN = 8000 )
DIMENSION C(200),A(200),PFIRST(200),PEND(200),CNK(40),
1 PNEXT(200),PLAST(200),PSUCC(200),PPRED(200),PSET(200)
C
C
C
C ASSIGN CONSTANTS
C
TOL = 1.0D-6
BIGNUM = 1.0D20
C
C
IF ( M .LT. 2 .OR. M .GT. MAXM ) THEN
DETECT = 'TRUE'
PRINT 9020 , MAXM
RETURN
ENDIF
C
C LOOP OVER EACH GUB SET WHOSE DATA IS TO BE INPUT
C
N = 0
DO 20 K = 1 , M
C
MAXCNK = MAXN - N - 2 * ( M - K )
IF ( CNK(K) .LT. 2 .OR. CNK(K) .GT. MAXCNK ) THEN
DETECT = 'TRUE'
PRINT 9030 , K , MAXCNK
RETURN
ENDIF
C
C SET POINTERS TO THE IDENTITY OF THE FIRST AND LAST BINARY
C VARIABLE IN THE K TH GUB SET
C
FIRST = N + 1
N = N + CNK(K)
PFIRST( K ) = FIRST
PEND( K ) = N
C
C
C SET IP , LP AND SET POINTERS
C
DO 10 J = FIRST , N
JP1 = J + 1
JM1 = J - 1
PNEXT( J ) = JP1
PSUCC( J ) = JP1
PLAST( J ) = JM1
PPRED( J ) = JM1
PSET(J) = K
10 CONTINUE
PNEXT( N ) = 0
PSUCC( N ) = 0
PLAST( FIRST ) = 0
PPRED( FIRST ) = 0
20 CONTINUE
C
C
C INPUT THE SORT INDICATOR
C
SORTRQ = 'TRUE'
C
C INPUT THE DOMINANCE INDICATOR

110
C
DOMREQ = 'TRUE'
C
C INPUT THE PEGGING STRATEGY INDICATOR
C
PEGSTR = 1
C
C
RETURN
9000 FORMAT(I5)
9010 FORMAT(' ERROR:THE NUMBER OF DECIMAL PLACES IS OUTSIDE THE ALLOWAB
+LE RANGE 0 TO ',I5)
9020 FORMAT(' ERROR: THE NUMBER OF GUB SETS IS OUTSIDE THE ALLOWABLE RAN
+GE 2 TO ',I5)
9030 FORMAT(' ERROR:THE CARDINALITY OF THE GUB SET ',I5,' IS OUTSIDE TH
+E ALLOWABLE',/,' RANGE 2 TO ',I5)
9040 FORMAT(8X,4(5X,F9.0))
9050 FORMAT(F10.0)
9060 FORMAT(A5)
END

SUBROUTINE ASORT(A,PFIRST,PEND,M,PNEXT,PLAST,DOMREQ)
C
C
C
C
C
C PURPOSE:
C TO SORT THE RESOURCE CONSTRAINT COEFFICIENTS WITHIN
C EACH GUB SET INTO NON-DECREASING ORDER TO APPROPRIATELY
C MODITY THE IP/LP LINKAGE POINTERS
C
C
C
C SUBROUTINE CALLED:
C HEAPFY
C ADJUST
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.HEAPSORT C
PAGE69
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER PFIRST,PEND,PLAST,PNEXT,FIRST
CHARACTER DOMREQ*5
DOUBLE PRECISION A
DIMENSION A(200),PFIRST(200),PEND(200),PNEXT(200),PLAST(200)
C
C
DOMREQ = ' TRUE'
DO 50 K = 1 , M
C
C STORE IN PNEXT(PFIRST(K):PNEXT(PEND(K)) THE IDENTITY OF
C THE VARIABLES TO BE SORTED
C
FIRST = PFIRST( K )
LASTP = PEND( K )

111
DO 10 J = FIRST , LASTP
PNEXT( J ) = J
10 CONTINUE
C
C TRANSFER THE ELEMENTS INTO A HEAP
C
C
CALL HEAPFY(A,FIRST,LASTP,PNEXT)
C
C
C
C INTERCHANGE THE NEW MAXIMUM WITH THE ELEMENT AT THE
C END OF THE TREE AND REFORM THE HEAP
C
DO 20 LAST = LASTP ,FIRST + 1 , -1
J = PNEXT( LAST )
PNEXT( LAST ) = PNEXT( FIRST )
PNEXT( FIRST ) = J
LASTM1 = LAST - 1
C
C
CALL ADJUST(A,PNEXT,LASTM1,FIRST,FIRST)
C
C
20 CONTINUE
C
C SET POINTERS OF SORTED IP LIST
C
PFIRST( K ) = J
PLAST( J ) = 0
DO 30 JA = FIRST + 1 , LASTP
JB = PNEXT( JA )
PLAST( JB ) = J
J = JB
30 CONTINUE
PEND( K ) = J
PNEXT( J ) = 0
40 JA = PLAST( J )
IF (JA .NE. 0) THEN
PNEXT( JA ) = J
J = JA
GO TO 40
ENDIF
50 CONTINUE
RETURN
END
SUBROUTINE IPLINK(PNEXT,PLAST,A,C,M,PFIRST,PEND,PSUCC,PPRED,TOL)
C
C
C
C
C PURPOSE:
C TO DELETE IP-DOMINATED VARIABLES AND ESTABLISH IP-LINKAGE.
C TO DELETE LP-DOMINATED VARIABLES AND ESTABLISH LP-LINKAGE.
C
C
C
C SUBROUTINES CALLED:
C LPLINK
C
C
C REMARKS:
C ------

112
C
C
INTEGER PNEXT,PLAST,FIRST,PFIRST,PEND,PSUCC,PPRED
DOUBLE PRECISION A,C,CMIN,CJC,TOL
DIMENSION A(200),C(200),PNEXT(200),PLAST(200),PFIRST(200)
1 ,PEND(200),PSUCC(200),PPRED(200)
C
C
DO 30 K = 1, M
FIRST = PFIRST( K )
LAST = PEND( K )
JB = FIRST
CMIN = C( JB )
10 JC = PNEXT( JB )
IF (JC .NE. 0) THEN
20 CJC = C( JC )
IF (CJC .GT. CMIN) THEN
IF (A( JC ) .GT. A( JB )) THEN
C
C VARIABLE JB IS IP UNDOMINATED AND,THEREFORE,REMAINS
C
CMIN = CJC
JB = JC
C
C CHOOSE NEXT VARIABLE
C
GO TO 10
ELSE
C
C VARIABLE JB IS IP DOMINATED AND,THEREFORE,DELETED
C
JB = PLAST( JB )
PLAST( JC ) = JB
CMIN = CJC
IF (JB .NE. 0) THEN
PNEXT( JB ) = JC
JB = JC
C
C CHOOSE NEXT VRAIABLE
C
GO TO 10
ELSE
FIRST = JC
JB = JC
C
C CHOOSE NEXT VARIABLE
C
GO TO 10
ENDIF
ENDIF
ELSE
C
C VARIABLE JC IS IP DOMINATED AND,THEREFORE,DELETED
C
JC = PNEXT(JC)
PNEXT( JB ) = JC
IF (JC .NE. 0) THEN
PLAST( JC ) = JB
C
C NEW VARIBALE DOMINATED?
C
GO TO 20
ENDIF
ENDIF

113
ENDIF
LAST = JB
PFIRST( K ) =FIRST
PEND( K ) = LAST
IF (FIRST .EQ. LAST) THEN
PRINT 9000,K,LAST
ELSE
C
C DELETE LP DOMINATED VARIABLES AND ESTABLISH LP LINKAGE
C
C
C
CALL LPLINK(PNEXT,PSUCC,PPRED,FIRST,LAST,A,C,TOL)
C
C
ENDIF
PNEXT( LAST ) = 0
PSUCC( LAST ) = 0
PLAST( FIRST ) = 0
PPRED( FIRST ) = 0
30 CONTINUE
RETURN
9000 FORMAT(' WARNING-THE GUB SET',I4,' HAS ONLY ONE IP/LP ',
1 'UNDOMINATED VARIABLE WHOSE INDEX IS',I4)
END

SUBROUTINE IBASIS(A,C,BIGNUM,FSLOPE,BSLOPE,B,SLACK,SUMCJ,PFHEAP,
1 PBHEAP,PHEAPF,PHEAPB,PSUCC,PBASIC,M,TOL,PPRED,
2 KFRACT,QPRIME,QSTAR,ZINITL,PFIRST,DETECT)
C
C
C
C
C PURPOSE:
C TO TEST FOR FEASIBILITY
C TO FIND AN INITIAL BASIC DUAL FEASIBLE SOLUTION FOR THE INITIAL LP
C
C
C
C SUBROUTINES CALLED:
C SFSPHP
C SBSPHP
C HEAPFS
C HEAPBS
C
C
C REMARKS:
C ------
C
C
INTEGER PFIRST,PSUCC,PPRED,PBASIC,PFHEAP,PBHEAP,PHEAPF,PHEAPB,
1 QPRIME,QSTAR
CHARACTER DETECT*5
DOUBLE PRECISION SUM,BOVERM,B,SLACK,V,A,C,BIGNUM,TOL,AVERAG,SLOAP,
1 SUMCJ,FSLOPE,BSLOPE,ZINITL
DIMENSION PFIRST(200),PSUCC(200),PPRED(200),PBASIC(200),
1 PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),
2 A(200),C(200),FSLOPE(200),BSLOPE(200)
C
C
SUMCJ = 0.0
SLACK = B
DO 10 K = 1 , M
SLACK = SLACK - A( PFIRST( K ) )

114
10 CONTINUE
C
C TO TEST FOR FEASIBILITY
C
IF (SLACK .LT. -TOL) THEN
DETECT = ' TRUE'
PRINT 9000
RETURN
ENDIF
SUM = 0.0
BOVERM = (B - SLACK) / M
DO 30 K = 1 , M
JB = PFIRST( K )
V = A( JB ) + BOVERM
20 JC = PSUCC( JB )
C
C LAST VARIABLE IN LP LIST ?
C
IF (JC .NE. 0) THEN
IF (A( JC ) .LT. V) THEN
JB = JC
C
C GO TO NEXT VARIABLE IN LP LIST
C
GO TO 20
ELSE
SUM = SUM + C( JC ) - C( JB ) / (A( JC ) - A( JB ))
ENDIF
ENDIF
30 CONTINUE
AVERAG = SUM / M
C
C LOOP TO SET BASIC VARIABLES
C
DO 50 K = 1 , M
JA = PFIRST( K )
JB = JA
40 JC = PSUCC( JB )
C
C LAST VARIABLE IN LP LIST ?
C
IF (JC .NE. 0) THEN
SLOAP = (C( JC ) - C( JB )) / (A( JC ) - A( JB ))
IF (SLOAP - AVERAG .GT. TOL) THEN
JB = JC
C
C GO TO NEXT VARIABLE IN LP LIST
C
GO TO 40
ENDIF
ENDIF
SLACK = SLACK + A( JA ) - A( JB )
SUMCJ = SUMCJ + C( JB )
PBASIC( K ) = JB
50 CONTINUE
C
C SET SLOPES AND CORRESPONDING POINTERS
C
DO 60 K = 1 , M
JB = PBASIC( K )
C
C
CALL SFSPHP(C,A,FSLOPE( K ),JB,PSUCC( JB ),BIGNUM)

115
C
C
C
CALL SBSPHP(C,A,BSLOPE( K ),JB,PPRED( JB ),BIGNUM)
C
C
PFHEAP( K ) = K
PHEAPF( K ) = K
PBHEAP( K ) = K
PHEAPB( K ) = K
60 CONTINUE
C
C HEAPIFY THE SLOPES
C
C
CALL HEAPFS(M,PFHEAP,FSLOPE,PHEAPF,TOL)
C
C
C
CALL HEAPBS(M,PBHEAP,BSLOPE,PHEAPB,TOL)
C
C
C
C ADJUST THE SOLUTION TO BECOME DUAL FEASIBLE
C
IF (SLACK .GT. -TOL) THEN
C
C
C
KFRACT = PFHEAP( 1 )
QPRIME = PBASIC( KFRACT )
QSTAR = PSUCC( QPRIME )
ZINITL = SUMCJ + SLACK * FSLOPE( KFRACT )
C
C
C
ELSE
C
C
C
KFRACT = PBHEAP( 1 )
QSTAR = PBASIC( KFRACT )
QPRIME = PPRED( QSTAR )
ZINITL = SUMCJ + SLACK * BSLOPE( KFRACT )
C
C
C
ENDIF
RETURN
9000 FORMAT(' THE PROBLEM IS INFEASIBLE')
END
SUBROUTINE DUAL1(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,
1 PSUCC,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,
2 ZBARND,SUMCJ,DELTA,SLACK,VZERO,KFRACT,ITERAT)
C
C
C
C
C PURPOSE:
C TO SOLVE THE LP OF THE SUBPROBLEM STARTING WITH NON-NEGATIVE SLACK
C
C
C PARAMETERS:

116
C FREE THE 'CURRENT' NUMBER OF 'UNSUSPENDED' GUB SETS
C
C
C SUBROUTINE CALLED:
C SIFTUP
C PSHDWN
C SFSPHP
C
C
C REMARKS:
C ------
C
C
INTEGER PFHEAP,QPRIME,QSTAR,PBASIC,ENTRY,PBHEAP,PHEAPF,PHEAPB,
1 PSUCC,FREE
DOUBLE PRECISION A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,SUMCJ,
1 DELTA,SLACK,VZERO
DIMENSION A(200),C(200),PFHEAP(200),PBASIC(200),PBHEAP(200),
1 PHEAPF(200),PHEAPB(200),PSUCC(200),FSLOPE(200),BSLOPE(200)
C
C
ITERAT = 0
10 KFRACT = PFHEAP( 1 )
LAMBDA = FSLOPE( KFRACT )
QPRIME = PBASIC( KFRACT )
C
C FORWARD HEAP EMPTY ?
C
IF (LAMBDA .EQ. -BIGNUM) THEN
ZBARND = SUMCJ
VZERO = 1.0
RETURN
ELSE
C
C PIVOT FORWARD AND UPDATE HEAPS
C
ITERAT = ITERAT + 1
QSTAR = PSUCC( QPRIME )
DELTA = A( QSTAR ) - A( QPRIME )
SLACK = SLACK - DELTA
SUMCJ = SUMCJ + C( QSTAR ) - C( QPRIME )
BSLOPE( KFRACT ) = LAMBDA
ENTRY = PHEAPB( KFRACT )
KEY = PBHEAP( 1 )
PHEAPB( KFRACT ) = 1
PHEAPB( KEY ) = ENTRY
PBHEAP( 1 ) = KFRACT
PBHEAP( ENTRY ) = KEY
C
C
CALL SIFTUP(PBHEAP,PHEAPB,BSLOPE,KEY,BSLOPE( KEY ),ENTRY,TOL)
C
C
PBASIC( KFRACT ) = QSTAR
C
C
CALL SFSPHP(C,A,FSLOPE( KFRACT ),QSTAR,PSUCC( QSTAR ),BIGNUM)
C
C
C
CALL PSHDWN(FREE,1,PFHEAP,FSLOPE,PHEAPF,KFRACT,FSLOPE(
1 KFRACT ),TOL)
C
C

117
C
C OPTIMAL SOLUTION ACHIEVED ?
C
IF (SLACK .LT. -TOL) THEN
ZBARND = SUMCJ + SLACK * LAMBDA
VZERO = SLACK / (-DELTA)
RETURN
ELSE
C
C CHOOSE NEXT CANDIDATE SET
C
GO TO 10
ENDIF
ENDIF
END

SUBROUTINE DUAL2(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,
2 TOL,ZBARND,SUMCJ,DELTA,SLACK,VZERO,KFRACT,
3 DETECT,ITERAT)
C
C
C
C
C PURPOSE:
C TO SOLVE THE LP OF THE SUBPROBLEM STARTING WITH NEGATIVE SLACK
C
C
C
C SUBROUTINE CALLED:
C SFTDWN
C PUSHUP
C SBSPHP
C
C
C REMARKS:
C ------
C
C
INTEGER PBHEAP,QPRIME,QSTAR,PBASIC,ENTRY,PFHEAP,PHEAPF,PHEAPB,
1 PPRED,FREE
CHARACTER DETECT*5
DOUBLE PRECISION A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,SUMCJ,
1 DELTA,SLACK,DEFICT,VZERO
DIMENSION A(200),C(200),PFHEAP(200),PBHEAP(200),PHEAPF(200),
1 PHEAPB(200),PPRED(200),FSLOPE(200),BSLOPE(200),PBASIC(200)
C
C
ITERAT = 0
10 KFRACT = PBHEAP( 1 )
LAMBDA = BSLOPE( KFRACT )
C
C BACKWARD HEAP EMPTY ?
C
IF (LAMBDA .EQ. BIGNUM) THEN
DETECT = ' TRUE'
RETURN
ELSE
QSTAR = PBASIC( KFRACT )
QPRIME = PPRED( QSTAR )
DELTA = A( QSTAR ) - A( QPRIME )
DEFICT = SLACK + DELTA
C
C OPTIMAL SOLUTION ACHIEVED ?

118
C
IF (DEFICT .GE. -TOL) THEN
ZBARND = SUMCJ + SLACK * LAMBDA
VZERO = SLACK / (-DELTA )
RETURN
ELSE
C
C PIVOT BACKWARD
C
ITERAT = ITERAT + 1
FSLOPE( KFRACT ) = LAMBDA
ENTRY = PHEAPF( KFRACT )
KEY = PFHEAP( 1 )
PFHEAP( 1 ) = KFRACT
PHEAPF( KFRACT ) = 1
PFHEAP( ENTRY ) = KEY
PHEAPF( KEY ) = ENTRY
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KEY,FSLOPE( KEY ),ENTRY,
1 TOL)
C
C
PBASIC( KFRACT ) = QPRIME
C
C
CALL SBSPHP(C,A,BSLOPE( KFRACT ),QPRIME,PPRED( QPRIME ),
1 BIGNUM)
C
C
C
CALL SFTDWN(FREE,1,PBHEAP,BSLOPE,PHEAPB,KFRACT,BSLOPE(
1 KFRACT ),TOL)
C
C
SLACK = DEFICT
SUMCJ = SUMCJ + C( QPRIME ) - C( QSTAR )
C
C CHOOSE NEXT CANDIDATE SET
C
GO TO 10
ENDIF
ENDIF
END

SUBROUTINE PEGTO0(PBASIC,PSUCC,PPRED,PLAST,PNEXT,ZERO,PFHEAP,
1 PBHEAP,PHEAPF,PHEAPB,A,C,TOL,BIGNUM,FSLOPE,
2 BSLOPE,LAMBDA,M,QPRIME,QSTAR,SLACK,DELTA,SUMCJ,
3 KFRACT,ZINC,PINCUM,ZBARND,FREE,PEG)
C
C
C
C
C PURPOSE:
C TO ATTEMPT TO DETERMINE AN IMPROVED LOWER BOUND
C TO ATTEMPT TP PEG SOME IP UNDOMINATED VARIABLES
C
C
C PARAMETERS:
C PEG(.) AN ARRAY OF POINTERS(THE IDENTITY OF THE VARIABLE PEGGED
C TO ZERO)
C
C
C SUBROUTINE CALLED:

119
C ROUND
C SINGLE
C UPDATE
C LPLINK
C PSHDWN
C SFTDWN
C SBSPHP
C SFSPHP
C
C
C REMARKS:
C FORWARD AND BACKWARD HEAPS ARE UPDATED WHEN SLOPES CHANGE
C
C
INTEGER PBASIC,PSUCC,PPRED,PLAST,PNEXT,ZERO,PFHEAP,PBHEAP,PHEAPF,
1 PHEAPB,QPRIME,QSTAR,PINCUM,FREE,PEG
DOUBLE PRECISION A,C,DIFF,TOL,BIGNUM,VALUE1,VALUE2,FSLOPE,BSLOPE,
1 LAMBDA,SLACK,DELTA,ZINC,ZLB,SUMCJ,ZBARND,ZMAX
DIMENSION A(200),C(200),PBASIC(200),PSUCC(200),PPRED(200),
1 PLAST(200),PNEXT(200),PFHEAP(200),PBHEAP(200),PHEAPF(200),
2 PHEAPB(200),FSLOPE(200),BSLOPE(200),PINCUM(200),PEG(200)
C
C
C
C ATTEMPT TO DETERMINE AN IMPROVED LOWER BOUND
C
C
C
CALL ROUND(A,C,QPRIME,QSTAR,PNEXT,SLACK,DELTA,TOL,SUMCJ,ZLB,JB)
C
C
IF (ZLB .GT. ZINC) THEN
C
C
CALL SINGLE(M,SLACK,PBASIC,A,C,KFRCT,JFRACT,SUMCJ,ZMAX,
1 PLAST,TOL,BIGNUM)
C
C
IF (ZMAX .LT. ZLB) THEN
ZMAX = ZLB
KFRCT = KFRACT
JFRACT = JB
ENDIF
C
C
CALL UPDATE(KFRCT,ZMAX,ZINC,PBASIC,PINCUM,M,JFRACT)
C
C
C
C INCUMBENT LARGER THAN 'CURRENT' LP VALUE'
C
IF (ZBARND - ZINC .LT. TOL) RETURN
ENDIF
C
C ATTEMPT TO PEG SOME IP UNDOMINATED VARIABLES TO ZERO
C
DIFF = ZINC - ZBARND + TOL
DO 110 K = 1 , M
IF (PHEAPF(K) .GT. FREE) GO TO 110
JBASIS = PBASIC( K )
C
C EXAMINE VARIABLES TO THE 'LEFT' OF THE BASIC VARIABLE
C
JIP2 = JBASIS

120
VALUE1 = C( JIP2 ) - LAMBDA * A( JIP2 )
10 JLP2 = JIP2
JLP1 = PPRED( JLP2 )
IF (JLP1 .NE. 0) THEN
20 JIP1 = PLAST( JIP2 )
30 VALUE2 = C( JIP1 ) - LAMBDA * A( JIP1 )
C
C PEG X( JIP1 ) TO ZERO ?
C
IF (VALUE2 - VALUE1 .LE. DIFF )THEN
ZERO =ZERO + 1
C
C UPDATE POINTERS AND RE-ESTABLISH LP LINKAGE
C
IF (JIP1 .EQ. JLP1) THEN
PLAST( JIP2 ) =0
PPRED( JIP2 ) =0
PEG(ZERO) = -JIP1
C
C
IF (JIP2 .NE. JLP2) CALL LPLINK(PNEXT,PSUCC,PPRED,
1 JIP2,JLP2,A,C,TOL)
C
C
C
C UPDATE BACKWARD HEAP
C
GO TO 50
ENDIF
PEG(ZERO) = JIP1
C
C CHOOSE PREVIOUS IP UNDOMINATED VARIABLE AND UPDATE IP
C POINTERS
C
JIP1 = PLAST( JIP1 )
PLAST( JIP2 ) = JIP1
PNEXT( JIP1 ) = JIP2
C
C X( JIP1 ) PEGGED TO ZERO ?
C
GO TO 30
ELSEIF(JIP1 .EQ. JLP1) THEN
C
C SET IP DOMINATING VARIABLE TO FIRST UP UNDOMINATED
C VARIABLE
C
JIP2 = JLP1
GO TO 10
ELSE
C
C SET IP UNDOMINATED VARIABLE TO PREVIOUS IP UNDOMINATED
C VARIABLE
C
JIP2 = JIP1
GO TO 20
ENDIF
ENDIF
C
C UPDATING BACKWARD HEAP REQUIRED?
C
50 IF (JLP2 .EQ. JBASIS) THEN
C
C
CALL SBSPHP(C,A,BSLOPE(K),JLP2,PPRED( JLP2 ),BIGNUM)

121
C
C
C
CALL SFTDWN(FREE,PHEAPB( K ),PBHEAP,BSLOPE,PHEAPB,K,BSLOPE
1 ( K ),TOL)
C
C
ENDIF
C
C EXAMINE VARIABLES TO THE 'RIGHT' OF THE BASIC VARIABLE
C
JIP1 = JBASIS
60 JLP1 = JIP1
JLP2 = PSUCC( JLP1 )
IF (JLP2 .NE.0) THEN
70 JIP2 = PNEXT( JIP1 )
80 VALUE2 = C( JIP2 ) - LAMBDA * A(JIP2 )
C
C PEG X( JIP2 ) TO ZERO?
C
IF (VALUE2 - VALUE1 .LE. DIFF) THEN
ZERO = ZERO + 1
IF (JIP2 .EQ. JLP2) THEN
PEG(ZERO) = -JIP2
C
C UPDATE POINTERS AND RE-ESTABLISH LP LINKAGE IF REQUIRED
C
PNEXT( JIP1 ) = 0
PSUCC( JIP1 ) = 0
C
C
IF (JIP1 .NE. JLP1) CALL LPLINK(PNEXT,PSUCC,PPRED,
1 JLP1,JIP1,A,C,TOL)
C
C
C UPDATE FORWARD HEAP
C
GO TO 100
ENDIF
PEG(ZERO) = JIP2
C
C CHOOSE NEXT IP UNDOMINATED VARIABLE AND UPDATE IP POINTERS
C
JIP2 = PNEXT( JIP2 )
PNEXT( JIP1 ) = JIP2
PLAST( JIP2 ) = JIP1
C
C X( JIP2 ) PEGGED TO ZERO ?
C
GO TO 80
ELSEIF (JIP2 .EQ. JLP2) THEN
C
C SET IP UNDOMINATED VARIABLE TO SECOND LP UNDOMINATED
C VARIABLE
C
JIP1 = JLP2
GO TO 60
ELSE
C
C SET FIRST IP DOMINATING VARIABLE TO SECOND IP DOMINATING
C VARIABLE
C
JIP1 = JIP2
GO TO 70

122
ENDIF
ENDIF
C
C UPDATING FORWARD HEAP REQUIRED ?
C
100 IF (JLP1 .EQ. JBASIS) THEN
C
C
CALL SFSPHP(C,A,FSLOPE( K ),JLP1 ,PSUCC( JLP1 ),BIGNUM)
C
C
C
CALL PSHDWN(FREE,PHEAPF( K ),PFHEAP,FSLOPE,PHEAPF,K,FSLOPE
1 ( K ),TOL)
C
C
ENDIF
110 CONTINUE
RETURN
END

SUBROUTINE INSTAT(POINT,NODE,ZERO,PEG,PSUCC,PPRED,PLAST,PNEXT,
1 PSET,PBASIC,A,C,BIGNUM,PBHEAP,PHEAPB,BSLOPE,
2 PFHEAP,PHEAPF,FSLOPE,TOL)
C
C
C
C
C PURPOSE:
C TO RE-INSTATE 0-1 VARIABLES PEGGED TO ZERO
C
C
C PARAMETERS:
C POINT(.) AN ARRAY OF POINTERS(THE POSITION OF LAST 0-1 VARIABLE
C PEGGED TO ZERO)
C NODE THE NUMBER OF 'ACTIVE' NODES
C ZERO A POINTER TO THE IDENTITY OF THE LAST VARIABLE PEGGED TO
C ZERO
C
C
C SUBROUTINES CALLED:
C -------
C
C
C REMARKS:
C ------
C
C
INTEGER POINT,ZERO,PEG,PSUCC,PPRED,PLAST,PNEXT,PBASIC,PBHEAP,
1 PHEAPB,PFHEAP,PHEAPF,PSET
DOUBLE PRECISION A,C,BIGNUM,BSLOPE,FSLOPE,TOL,LAMBDA
DIMENSION POINT(0:200),PEG(200),PSUCC(200),PPRED(200),
1 PLAST(200),PNEXT(200),PBASIC(200),A(200),C(200),PBHEAP(200)
2 ,PHEAPB(200),BSLOPE(200),PFHEAP(200),PHEAPF(200),
3 FSLOPE(200),PSET(200)
C
C
IZERO = POINT(NODE-1)+1
IF (IZERO .LE. ZERO) THEN
DO 10 INS = ZERO , IZERO , -1
JB = PEG(INS)
IF (JB .LT. 0) THEN
JB = -JB
JC = PSUCC(JB)

123
KEY = PSET(JB)
IF (JC .NE. 0) THEN
PLAST(PNEXT(JB)) = JB
PPRED(JC) = JB
ENDIF
IF (JC .EQ. PBASIC(KEY)) THEN
C
C
CALL SBSPHP(C,A,LAMBDA,JC,JB,BIGNUM)
C
C
C
CALL SIFTUP(PBHEAP,PHEAPB,BSLOPE,KEY,LAMBDA,PHEAPB
1 (KEY),TOL)
C
C
BSLOPE(KEY) = LAMBDA
ENDIF
JC = PPRED(JB)
IF (JC .NE. 0) THEN
PNEXT(PLAST(JB)) = JB
PSUCC(JC) = JB
IF (JC .EQ. PBASIC(KEY)) THEN
C
C
CALL SFSPHP(C,A,LAMBDA,JC,JB,BIGNUM)
C
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KEY,LAMBDA,
1 PHEAPF(KEY),TOL)
C
C
FSLOPE(KEY) = LAMBDA
ENDIF
ENDIF
ELSE
JC = PNEXT(JB)
PLAST(JC) = JB
JC = PLAST(JB)
PNEXT(JC) = JB
ENDIF
10 CONTINUE
ZERO = IZERO - 1
ENDIF
RETURN
END

SUBROUTINE BRNCH(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,STEM,KFRACT,ITERAT)
C
C
C
C
C PURPOSE:
C TO HANDLE THE BRANCHING PHASE OF THE BRANCH AND BOUND ROUTINE
C
C
C PARAMETERS:
C STEM A VARIABLE TO INDICATE THE STATUS OF THE 'CURRENT' C
BRANCH.THUS
C STEM = 1 INDICATES IT IS A ONE BRANCH

124
C STEM = 0 INDICATES IT IS A ZERO BRANCH
C
C
C SUBROUTINES CALLED:
C - BRNCH0
C - BRNCH1
C
C
C REMARKS:
C -------
C
C
INTEGER PNEXT,PLAST,PSUCC,PPRED,QPRIME,QSTAR,FREE,PFHEAP,PBHEAP,
1 PHEAPF,PHEAPB,PBASIC,STEM
CHARACTER DETECT*5
DOUBLE PRECISION A,C,TOL,BIGNUM,FSLOPE,BSLOPE,SLACK,DELTA,SUMCJ,
1 LAMBDA,ZBARND,VZERO
DIMENSION PNEXT(200),PLAST(200),PSUCC(200),PPRED(200),PFHEAP(200)
1 ,PBHEAP(200),PHEAPF(200),PHEAPB(200),PBASIC(200),A(200),C(200)
2 ,FSLOPE(200),BSLOPE(200)
C
C
C
C BRANCH THROUGH ONE OR ZERO
C
IF (STEM .EQ. 1) THEN
C
C

CALL BRNCH1(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 KFRACT,ITERAT)
C
C

ELSE
C
C
CALL BRNCH0(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,KFRACT,ITERAT)
C
C

ENDIF

RETURN
END
SUBROUTINE TRACK(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,NODE,STEM,KFRACT,SLOPE,BRANCH,GUBSET)
C
C
C
C
C PURPOSE:
C TO HANDLE THE BACKTRACKING PHASE OF THE BRANCH AND BOUND ROUTINE
C

125
C
C PARAMETERS:
C SLOPE AN ARRAY USED TO STORE THE OPTIMAL SLOPES OF SUBPROBLEMS
C BRANCH AN ARRAY USED TO STORE THE LARGER FRACTIONAL VARIABLE
C OF SUBPROBLEMS GENERATED
C GUBSET AN ARRAY USED TO STORE THE FRACTIONAL GUB SET OF EACH
C GENERATED SUBPROBLEM
C
C
C SUBROUTINES CALLED:
C - TRACK1
C - TRACK0
C
C
C REMARKS:
C -------
C
C
INTEGER FREE,PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR,PBASIC,PSUCC
1 ,PPRED,STEM,PLAST,PNEXT,BRANCH,GUBSET
CHARACTER DETECT*5
DOUBLE PRECISION SLACK,A,C,SUMCJ,ZBARND,DELTA,VZERO,FSLOPE,BSLOPE,
1 TOL,BIGNUM,LAMBDA,SLOPE
DIMENSION PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),
1 PBASIC(200),PPRED(200),PSUCC(200),A(200),C(200),FSLOPE(200),
2 BSLOPE(200),PNEXT(200),PLAST(200),BRANCH(200),SLOPE(200),
3 GUBSET(200)
C
C
NODE = NODE - 1
LAMBDA = SLOPE( NODE )
C
C TO BACKTRACK THROUGH ONE OR ZERO
C
IF (STEM .EQ. 1) THEN
C
C
CALL TRACK1(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 KFRACT)
C
C
ELSE
QSTAR = BRANCH( NODE )
KFRACT = GUBSET( NODE )
C
C
CALL TRACK0(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,KFRACT)
C
C
ENDIF
RETURN
END

SUBROUTINE HEAPFY(A,FIRST,LAST,PNEXT)
C
C
C
C
C TO HEAPIFY THE ELEMENTS OF A(FIRST:LAST)

126
C
C
C PARAMETERS:
C FIRST THE IDENTITY OF THE FIRST BINARY VARIABLE TO BE INCLUDED
C IN THE HEAP
C LAST THE IDENTITY OF THE LAST BINARY VARIABLE TO BE INCLUDED
C IN THE HEAP
C
C
C SUBROUTINES CALLED:
C ADJUST
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.HEAPIFY PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER FIRST,PNEXT
DOUBLE PRECISION A
DIMENSION A(200),PNEXT(200)
C
C
MIDPNT = (FIRST + LAST - 1) * 0.5
DO 10 IND = MIDPNT , FIRST , -1
C
C
CALL ADJUST(A,PNEXT,LAST,IND,FIRST)
C
C
10 CONTINUE
RETURN
END

SUBROUTINE ADJUST(A,PNEXT,LAST,IND,FIRST)
C
C
C
C
C PURPOSE:
C TO PUSH DOWN THE ELEMENT A(PNEXT(IND)) AND REFORM THE HEAP
C
C
C PARAMETERS:
C IND THE IDENTITY OF THE POSITION IN THE HEAP TO BE
C PUSHED DOWN
C
C
C SUBROUTINES CALLED:
C ------
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.ADJUST C
PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE

127
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER PNEXT,FATHER,RCHILD,FIRST
DOUBLE PRECISION A,VFTHER,VLCHLD,VRCHLD
DIMENSION PNEXT(200),A(200)
C
C
INDEX = IND
FATHER = PNEXT( INDEX )
VFTHER = A( FATHER )
10 INDTWO = 2*INDEX - FIRST + 1
IF (INDTWO .LE. LAST) THEN
LCHILD = PNEXT( INDTWO )
VLCHLD = A( LCHILD )
IF (INDTWO .LT. LAST) THEN
RCHILD = PNEXT( INDTWO + 1 )
VRCHLD = A( RCHILD )
C
C COMPARE LEFT AND RIGHT CHILD
C
IF (VRCHLD .GT. VLCHLD) THEN
C
C INDTWO POINTS TO THE LARGER CHILD
C
VLCHLD = VRCHLD
LCHILD = RCHILD
INDTWO = INDTWO + 1
ENDIF
ENDIF
IF (VLCHLD .GT. VFTHER) THEN
C
C MOVE THE LARGER CHILD UP A LEVEL
C
PNEXT( INDEX ) = LCHILD
INDEX = INDTWO
GO TO 10
ENDIF
ENDIF
PNEXT( INDEX ) = FATHER
RETURN
END
SUBROUTINE LPLINK(PNEXT,PSUCC,PPRED,FIRST,LAST,A,C,TOL)
C
C
C
C
C PURPOSE:
C TO DELETE LP-DOMINATED VARIBLES FROM IP LIST AND ESTABLISH LP
C LINKAGE
C
C
C
C SUBROUTINES CALLED:
C ------
C
C
C REMARKS;
C ------
C
C
INTEGER FIRST,PSUCC,PNEXT,PPRED

128
DOUBLE PRECISION A,C,THETAB,THETBC,TOL,DIFF
DIMENSION PNEXT(200),PSUCC(200),PPRED(200),A(200),C(200)
C
C
JA = FIRST
JB = PNEXT( JA )
PSUCC( JA ) = JB
PPRED( JB ) = JA
IF (JB .EQ. LAST) RETURN

JC = PNEXT( JB )
THETAB = (C( JB ) - C( JA )) / (A( JB ) - A( JA ))
10 THETBC = (C( JC ) - C( JB )) / (A( JC ) - A( JB ))
DIFF = THETAB - THETBC

IF (DIFF .LT. -TOL) THEN

IF (JA .EQ. FIRST) THEN


JB = JC
PSUCC( JA ) = JC
PPRED( JC ) = JA
THETAB = (C( JB ) - C( JA )) / (A( JB ) - A( JA ))
ELSE

JB = JA
JA = PPRED( JA )
THETAB = (C( JB ) - C( JA )) / (A( JB ) - A( JA ))

GO TO 10
ENDIF

ELSEIF (DIFF .LT. TOL) THEN

PSUCC( JA ) = JC
PPRED( JC ) = JA
JB = JC
ELSE

PSUCC( JB ) = JC
PPRED( JC ) = JB
JA = JB
JB = JC
THETAB = THETBC

ENDIF
IF (JC .NE. LAST) THEN
JC = PNEXT( JC )
C
C NEXT VARIABLE LP DOMINATED?
C
GO TO 10

ENDIF
RETURN
END

129
SUBROUTINE SFSPHP(C,A,SLOAP,JA,JB,BIGNUM)
C
C
C
C
C PURPOSE:
C TO SET THE FORWARD SLOPE BETWEEN VARIABLES JA AND JB
C
C
C PARAMETERS:
C SLOAP THE VALUE OF THE FORWARD SLOPE
C JA THE IDENTITY OF THE BASIC VARIABLE
C JB THE IDENTITY OF THE SUCCESSOR OF JA
C
C
C SUBROUTINES CALLED:
C ------
C
C
DOUBLE PRECISION C,A,SLOAP,BIGNUM
DIMENSION C(200),A(200)
C
C
IF (JB .EQ. 0) THEN
SLOAP = -BIGNUM
ELSE
SLOAP = (C( JB ) - C( JA )) / (A( JB ) - A( JA ))
ENDIF
RETURN
END

SUBROUTINE SBSPHP(C,A,SLOAP,JB,JA,BIGNUM)
C
C
C
C
C PURPOSE:
C TO SET THE BACKWARD SLOPE BETWEEN VARIABLES JA AND JB
C
C
C
C SUBROUTINES CALLED:
C ------
C
C
DOUBLE PRECISION C,A,SLOAP,BIGNUM
DIMENSION C(200),A(200)
C
C
IF (JA .EQ. 0) THEN
SLOAP = BIGNUM
ELSE
SLOAP = (C( JB )- C( JA )) / (A( JB ) - A( JA ))
ENDIF
RETURN
END
SUBROUTINE HEAPFS(M,PFHEAP,FSLOPE,PHEAPF,TOL)
C
C
C
C
C PURPOSE:
C TO HEAPIFY THE ELEMENTS OF FSLOPE

130
C
C
C SUBROUTINES CALLED:
C PSHDWN
C
C
C REFERENCE
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.HEAPIFY C
PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER PFHEAP,PHEAPF
DOUBLE PRECISION FSLOPE,TOL
DIMENSION PFHEAP(200),FSLOPE(200),PHEAPF(200)
C
C
DO 10 K = M/2, 1 , -1
C
C
CALL PSHDWN(M,K,PFHEAP,FSLOPE,PHEAPF,K,FSLOPE(K),TOL)
C
C
10 CONTINUE
RETURN
END

SUBROUTINE HEAPBS(M,PBHEAP,BSLOPE,PHEAPB,TOL)
C
C
C
C
C PURPOSE:
C TO HEAPIFY THE ELEMENTS OF BSLOPE
C
C
C SUBROUTINES CALLED:
C SFTDWN
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.HEAPIFY C
PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER PBHEAP,PHEAPB
DOUBLE PRECISION BSLOPE,TOL
DIMENSION PBHEAP(200),BSLOPE(200),PHEAPB(200)
C
C
DO 10 K = M/2, 1 , -1
C
C

131
CALL SFTDWN(M,K,PBHEAP,BSLOPE,PHEAPB,K,BSLOPE(K),TOL)
C
C
10 CONTINUE
RETURN
END

SUBROUTINE SIFTUP(PBHEAP,PHEAPB,BSLOPE,CHILD,VCHILD,INDEX,TOL)
C
C
C
C PURPOSE:
C TO PUSH UP THE (INDEX)TH ENTRY OF THE BACKWARD HEAP AND REFORM IT
C
C
C PARAMETERS:
C CHILD THE IDENTITY OF THE GUB SET TO BE PUSHED UP
C VCHILD THE VALUE OF THE SLOPE TO BE PUSHED UP
C INDEX THE IDENTITY OF THE POSITION IN HEAP TO BE PUSHED UP
C
C
C SUBROUTINE CALLED:
C ------
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.INSERT C
PAGE 63
C
C
C REMARKS:
C THIS SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENT THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER ENTRY,HALFEN,PARENT,PBHEAP,PHEAPB,CHILD
DOUBLE PRECISION VPARNT,BSLOPE,DIFF,VCHILD,TOL
DIMENSION BSLOPE(200),PBHEAP(200),PHEAPB(200)
C
C
ENTRY = INDEX
10 IF (ENTRY .NE. 1) THEN
HALFEN = ENTRY / 2
PARENT = PBHEAP( HALFEN )
VPARNT = BSLOPE( PARENT )
DIFF = VCHILD - VPARNT
IF (DIFF .LT. -TOL) THEN
PBHEAP( ENTRY ) = PARENT
PHEAPB( PARENT ) = ENTRY
ENTRY = HALFEN
GO TO 10
ELSE
IF (DIFF .LT. TOL) THEN
IF (CHILD .GT. PARENT) THEN
PBHEAP( ENTRY ) = PARENT
PHEAPB( PARENT ) = ENTRY
ENTRY = HALFEN
GO TO 10
ENDIF
ENDIF
ENDIF
ENDIF
PBHEAP( ENTRY ) = CHILD

132
PHEAPB( CHILD ) = ENTRY
RETURN
END

SUBROUTINE PSHDWN(MAXIND,IND,PFHEAP,FSLOPE,PHEAPF,FATHER,VFTHER,
1 TOL)
C
C
C
C
C PURPOSE:
C TO PUSH DOWN THE INDTH ENTRY AND REFORM THE FORWARD HEAP
C
C
C PARAMETERS:
C
C
C MAXIND THE 'CURRENT' DIMENSION OF FSLOPE(.)
C FATHER = PFHEAP( IND )
C VFTHER = FSLOPE( FATHER )
C
C
C SUBROUTINES OR FUNCTIONS CALLED:
C DABS
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.ADJUST C
PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER PFHEAP,PHEAPF,FATHER,RCHILD
DOUBLE PRECISION FSLOPE,TOL,VFTHER,VLCHLD,VRCHLD,VDIFF
DIMENSION PFHEAP(200),PHEAPF(200),FSLOPE(200)
C
C
INDEX = IND
10 INDTWO = 2*INDEX
IF (INDTWO .LE. MAXIND) THEN
LCHILD = PFHEAP( INDTWO )
VLCHLD = FSLOPE( LCHILD )
IF (INDTWO .LT. MAXIND) THEN
RCHILD = PFHEAP ( INDTWO + 1 )
VRCHLD = FSLOPE( RCHILD )
VDIFF = VLCHLD - VRCHLD
IF (VDIFF .LT. -TOL .OR. (DABS( VDIFF ) .LE. TOL .AND.
1 LCHILD .GT. RCHILD)) THEN
INDTWO = INDTWO + 1
LCHILD = RCHILD
VLCHLD = VRCHLD
ENDIF
ENDIF
VDIFF = VFTHER - VLCHLD
IF (VDIFF .LT.-TOL .OR. (DABS( VDIFF ) .LE. TOL .AND. FATHER .
1 GT. LCHILD))THEN
PFHEAP( INDEX ) = LCHILD
PHEAPF( LCHILD ) = INDEX
INDEX = INDTWO

133
GO TO 10
ENDIF
ENDIF
PFHEAP( INDEX ) = FATHER
PHEAPF( FATHER ) = INDEX
RETURN
END
SUBROUTINE SFTDWN(MAXIND,IND,PBHEAP,BSLOPE,PHEAPB,FATHER,VFTHER,
1 TOL)
C
C
C
C
C PURPOSE:
C TO PUSH DOWN THE INDTH ENTRY AND REFORM THE BACKWARD HEAP
C
C
C SUBROUTINES OR FUNCTIONS CALLED:
C DABS
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.ADJUST C
PAGE 67
C
C
C REMARKS:
C THE SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
C
INTEGER PBHEAP,PHEAPB,FATHER,RCHILD
DOUBLE PRECISION BSLOPE,TOL,VFTHER,VRCHLD,VLCHLD,VDIFF
DIMENSION PBHEAP(200),PHEAPB(200),BSLOPE(200)
C
C
INDEX = IND
10 INDTWO = 2*INDEX
IF (INDTWO .LE. MAXIND) THEN
LCHILD = PBHEAP( INDTWO )
VLCHLD = BSLOPE( LCHILD )
IF (INDTWO .LT. MAXIND) THEN
RCHILD = PBHEAP( INDTWO + 1)
VRCHLD = BSLOPE( RCHILD )
VDIFF = VLCHLD - VRCHLD
IF (VDIFF .GT. TOL .OR. (DABS( VDIFF ) .LE. TOL .AND. LCHILD
1 .LT. RCHILD)) THEN
INDTWO = INDTWO + 1
LCHILD = RCHILD
VLCHLD = VRCHLD
ENDIF
ENDIF
VDIFF = VFTHER - VLCHLD
IF (VDIFF .GT. TOL .OR. (DABS( VDIFF ) .LE. TOL .AND. FATHER.
1 LT. LCHILD)) THEN
PBHEAP( INDEX ) = LCHILD
PHEAPB( LCHILD ) = INDEX
INDEX = INDTWO
GO TO 10
ENDIF
ENDIF

134
PBHEAP( INDEX ) = FATHER
PHEAPB( FATHER ) = INDEX
RETURN
END
SUBROUTINE PUSHUP(PFHEAP,PHEAPF,FSLOPE,CHILD,VCHILD,INDEX,TOL)
C
C
C
C PURPOSE:
C TO PUSH UP THE (INDEX)TH ENTRY OF THE FORWARD HEAP AND REFORM IT
C
C
C SUBROUTINE CALLED:
C ------
C
C
C REFERENCE:
C E.HOROWITZ AND S.SAHNI:FUNDAMENTALS OF COMPUTER ALGORITHMS.INSERT C
PAGE 63
C
C
C REMARKS:
C THIS SUBROUTINE IS SIMILAR TO THAT CONTAINED IN REFERENCE WITH THE
C DIFFERENCE THAT THE POINTERS ARE INTERCHANGED RATHER THAN THE
C ARRAY ELEMENTS
C
C
INTEGER ENTRY,HALFEN,PARENT,PFHEAP,PHEAPF,CHILD
DOUBLE PRECISION VPARNT,FSLOPE,DIFF,VCHILD,TOL
DIMENSION FSLOPE(200),PFHEAP(200),PHEAPF(200)
C
C
ENTRY = INDEX
10 IF (ENTRY .NE. 1) THEN
HALFEN = ENTRY / 2
PARENT = PFHEAP( HALFEN )
VPARNT = FSLOPE( PARENT )
DIFF = VPARNT - VCHILD
IF (DIFF .LT. -TOL) THEN
PFHEAP( ENTRY ) = PARENT
PHEAPF( PARENT ) = ENTRY
ENTRY = HALFEN
GO TO 10
ELSE
IF (DIFF .LT. TOL) THEN
IF (PARENT .GT. CHILD )THEN
PFHEAP( ENTRY ) = PARENT
PHEAPF( PARENT ) = ENTRY
ENTRY = HALFEN
GO TO 10
ENDIF
ENDIF
ENDIF
ENDIF
PFHEAP( ENTRY ) = CHILD
PHEAPF( CHILD ) = ENTRY
RETURN
END
SUBROUTINE ROUND(A,C,QPRIME,QSTAR,PNEXT,SLACK,DELTA,TOL,SUMCJ,
1 ZLB,JB)
C
C

135
C
C
C PURPOSE:
C TO FIND THE 'CURRENT' LOWER BOUND
C
C
C PARAMETERS:
C ZLB THE VALUE OF THE LOWER BOUND
C JB THE IDENTITY OF THE VARIABLE IN THE FRACTIONAL GUB SET
C THAT YIELD THE LOWER BOUND
C
C
C SUBROUTINES CALLED:
C ------
C
C
C REMARKS.
C ------
C
C
INTEGER QPRIME,PNEXT,QSTAR
DOUBLE PRECISION A,C,GAP,SLACK,DELTA,TOL,ZLB,SUMCJ
DIMENSION A(200),C(200),PNEXT(200)
C
C
JB = QPRIME
GAP = SLACK + DELTA
10 JC = PNEXT( JB )
GAP = GAP + A( JB ) - A( JC )
IF (GAP .GE. -TOL) THEN
JB = JC
C
C CHOOSE NEXT IP-UNDOMINATED VARIABLE
C
GO TO 10
ENDIF
ZLB = SUMCJ - C( QSTAR ) + C( JB )
RETURN
END

SUBROUTINE SINGLE(M,SLACK,PBASIC,A,C,KFRCT,JFRACT,SUMCJ,ZMAX,
1 PLAST,TOL,BIGNUM)
C
C
C
C
C PURPOSE:
C TO FIND A SHARPER LOWER BOUND,IF POSSIBLE
C
C
C PARAMETERS:
C JFRACT THE IDENTITY OF THE VARIABLE THAT YIELD THE LOWER BOUND
C ZMAX VALUE OF THE LOWER BOUND
C
C
C SUBROUTINES CALLED:
C -------
C
C
C REMARKS:
C ------
C
C
C REFERENCE:

136
C BALAS E. AND MARTIN C.:
C PIVOT AND COMPLEMENT-A HEURISTIC FOR 0-1 PROGRAMMING,MANAGEMENT
C SCIENCE,VOL.26,No.1,1980,PAGE 86-96
C
C
INTEGER PBASIC,PLAST
DOUBLE PRECISION A,C,SLACK,GAP,SUMCJ,ZMAX,ZSUM,TOL,BIGNUM
DIMENSION A(200),C(200),PLAST(200),PBASIC(200)
ZMAX = -BIGNUM
DO 20 K = 1 , M
JBASIS = PBASIC(K)
GAP = SLACK
JB = JBASIS
10 JA = PLAST(JB)
IF (JA .NE. 0) THEN
GAP = GAP + A(JB) - A(JA)
IF (GAP .LT. -TOL) THEN
JB = JA
GO TO 10
ELSE
ZSUM = SUMCJ - C(JBASIS) + C(JA)
IF (ZSUM .GT. ZMAX) THEN
ZMAX = ZSUM
KFRCT = K
JFRACT = JA
ENDIF
ENDIF
ENDIF
20 CONTINUE
RETURN
END

SUBROUTINE UPDATE(KFRACT,ZLB,ZINC,PBASIC,PINCUM,M,JB)
C
C
C
C
C PURPOSE:
C TO UPDATE THE INCUMBENT SOLUTION
C
C
C SUBROUTINE CALLED:
C ------
C
C
C REMARKS:
C ------
C
C
INTEGER PBASIC,PINCUM
DOUBLE PRECISION ZLB,ZINC
DIMENSION PBASIC( 100 ),PINCUM( 100 )
C
C
DO 10 K = 1 , M
PINCUM( K ) = PBASIC( K )
10 CONTINUE
PINCUM( KFRACT ) = JB
ZINC = ZLB
RETURN
END

SUBROUTINE BRNCH0(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,

137
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,KFRACT,ITERAT)
C
C
C
C
C PURPOSE:
C TO BRANCH THROUGH ONE BY DELETING THE FRACTIONAL GUB SET
C TO SOLVE THE RESULTING LP/MCK
C
C
C SUBROUTINES CALLED:
C - LPLINK
C - SFTDWN
C - SOLVLP
C - SBSPHP
C - SFSPHP
C - PUSHUP
C
C
C REMARKS:
C -------
C
C
INTEGER PNEXT,PLAST,PSUCC,PPRED,QPRIME,QSTAR,FREE,PFHEAP,PBHEAP,
1 PHEAPF,PHEAPB,PBASIC
CHARACTER DETECT*5
DOUBLE PRECISION A,C,TOL,BIGNUM,FSLOPE,BSLOPE,SLACK,DELTA,SUMCJ,
1 LAMBDA,ZBARND,VZERO
DIMENSION PNEXT(200),PLAST(200),PSUCC(200),PPRED(200),
1 PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),PBASIC(200),
2 A(200),C(200),FSLOPE(200),BSLOPE(200)
C
C
C DELETE X( QSTAR ) AND UPDATE THE HEAPS
C
JB = PSUCC( QSTAR )
JA = PLAST( QSTAR )
JC = PNEXT( QSTAR )
PNEXT( JA ) = JC
IF (JB .NE. 0 ) THEN
PLAST( JC ) = JA
ELSE
PSUCC( JA ) = 0
JB = JA
ENDIF
C
C
IF (JB .NE. QPRIME ) CALL LPLINK(PNEXT,PSUCC,PPRED,QPRIME,JB,A,C,
1 TOL)
C
C

PBASIC( KFRACT ) = QPRIME


C
C

CALL SBSPHP(C,A,LAMBDA,QPRIME,PPRED(QPRIME),BIGNUM)
C
C
C

138
CALL SFTDWN(FREE,1,PBHEAP,BSLOPE,PHEAPB,KFRACT,LAMBDA,TOL)
C
C
BSLOPE( KFRACT ) = LAMBDA
C

CALL SFSPHP(C,A,LAMBDA,QPRIME,PSUCC( QPRIME ),BIGNUM)


C
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KFRACT,LAMBDA,PHEAPF(KFRACT),TOL)
C
C
FSLOPE( KFRACT ) = LAMBDA
SLACK = SLACK + DELTA
SUMCJ = SUMCJ + C( QPRIME ) - C( QSTAR )
C
C TO SOLVE THE RESULTING LP/MCK
C
C

CALL SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,
2 SUMCJ,DELTA,SLACK,VZERO,KFRACT,DETECT,ITERAT)
C
C

RETURN
END
SUBROUTINE BRNCH1(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 KFRACT,ITERAT)
C
C
C
C
C PURPOSE:
C TO DELETE THE FRACTIONAL GUB SET BY BRANCHING THROUGH ONE
C TO SOLVE THE RESULTING LP/MCK
C
C
C SUBROUTINES OR FUNCTIONS CALLED:
C - SOLVLP
C - SFTDWN
C - PSHDWN
C - SIFTUP
C - PUSHUP
C - DABS
C
C REMARKS:
C -------
C
C
INTEGER PHEAPF,PFHEAP,FREE,PBHEAP,PHEAPB,QPRIME,QSTAR,PBASIC,PSUCC
1 ,PPRED
CHARACTER DETECT*5
DOUBLE PRECISION FSLOPE,BSLOPE,A,C,TOL,BIGNUM,DIFF,LAMBDA,ZBARND,
1 SUMCJ,DELTA,SLACK,VZERO
DIMENSION PHEAPF(200),PFHEAP(200),PBHEAP(200),PHEAPB(200),

139
1 PBASIC(200),PSUCC(200),PPRED(200),FSLOPE(200),BSLOPE(200),
2 A(200),C(200)
C
C
C
C NUMBER OF FREE GUB SETS EQUALS ONE ?
C
IF (FREE .EQ. 1) THEN
FREE = 0
DETECT = ' TRUE'
RETURN
ENDIF
C
C DELETE THE FRACTIONAL GUB SET AND UPDATE THE HEAPS
C
INDEX = PHEAPF( KFRACT )
KEY = PFHEAP( FREE )
PHEAPF( KFRACT ) = FREE
PFHEAP( FREE ) = KFRACT
PHEAPF( KEY ) = INDEX
PFHEAP( INDEX ) = KEY
KEE = PBHEAP( FREE )
PHEAPB( KFRACT ) = FREE
PBHEAP( FREE ) = KFRACT
PHEAPB( KEE ) = 1
PBHEAP( 1 ) = KEE
LAMBDA = FSLOPE( KEY )
FREE = FREE - 1
IF (INDEX .EQ. 1) THEN
C
C
CALL PSHDWN(FREE,INDEX,PFHEAP,FSLOPE,PHEAPF,KEY,LAMBDA,TOL)
C
C
ELSE
INDBY2 = INDEX / 2
KEY1 = PFHEAP( INDBY2 )
DIFF = FSLOPE( KEY1 ) - LAMBDA
IF (DIFF .GT. TOL .OR. (DABS( DIFF ) .LE. TOL .AND. KEY1 .LT.
1 KEY)) THEN
C
C
CALL PSHDWN(FREE,INDEX,PFHEAP,FSLOPE,PHEAPF,KEY,
1 LAMBDA,TOL)
C
C
ELSE
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KEY,LAMBDA,INDEX,TOL)
C
C
ENDIF
ENDIF
C
C
CALL SFTDWN(FREE,1,PBHEAP,BSLOPE,PHEAPB,KEE,BSLOPE(KEE),TOL)
C
C
C SOLVE THE RESULTING LP/MCK
C
C
CALL SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,

140
2 SUMCJ,DELTA,SLACK,VZERO,KFRACT,DETECT,ITERAT)
C
C
RETURN
END
SUBROUTINE TRACK0(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 PLAST,PNEXT,KFRACT)
C
C
C
C
C PURPOSE:
C TO BACKTRACK THROUGH ZERO BY REINSTATING THE FRACTIONAL VARIABLE
C TO SOLVE THE RESULTING LP/MCK
C
C
C SUBROUTINES CALLED:
C - SIFTUP
C - PUSHUP
C - SFTDWN
C - PSHDOWN
C - SOLVLP
C - SFSPHP
C
C
C REMARKS:
C ------
C
C
INTEGER QPRIME,QSTAR,PSUCC,PPRED,PNEXT,PLAST,PBASIC,FREE,PFHEAP,
1 PBHEAP,PHEAPF,PHEAPB

CHARACTER DETECT*5
DOUBLE PRECISION SUMCJ,SLACK,DELTA,ZBARND,VZERO,TOL,BIGNUM,FSLOPE,
2 BSLOPE,A,C,LAMBDA
DIMENSION PSUCC(200),PPRED(200),PNEXT(200),PLAST(200),PBASIC(200),
1 PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),FSLOPE(200),
2 BSLOPE(200),A(200),C(200)
C
C
C REINSTATING THE FRACTIONAL VARIABLE AND UPDATING THE HEAPS
C
QPRIME = PPRED( QSTAR )
JB = PSUCC( QSTAR )
JC = PNEXT( QSTAR )
PSUCC( QPRIME ) = QSTAR
PNEXT( PLAST( QSTAR ) ) = QSTAR
IF (JC .NE. 0) THEN
PLAST( JC ) = QSTAR
PPRED( JB ) = QSTAR
ENDIF
JC = PBASIC( KFRACT )
SUMCJ = SUMCJ + C( QSTAR ) - C( JC )
SLACK = SLACK - A( QSTAR ) + A( JC )
PBASIC( KFRACT ) = QSTAR
IF (BSLOPE( KFRACT ) - LAMBDA .GT. -TOL) THEN
C
C
CALL SIFTUP(PBHEAP,PHEAPB,BSLOPE,KFRACT,LAMBDA,PHEAPB(KFRACT),
1 TOL)
C

141
C
ELSE
C
C
CALL SFTDWN(FREE,PHEAPB(KFRACT),PBHEAP,BSLOPE,PHEAPB,KFRACT,
1 LAMBDA,TOL)
C
C
ENDIF
BSLOPE( KFRACT ) = LAMBDA
C
C
CALL SFSPHP(C,A,LAMBDA,QSTAR,JB,BIGNUM)
IF (FSLOPE( KFRACT ) - LAMBDA .GT. TOL) THEN
C
C
CALL PSHDWN(FREE,PHEAPF(KFRACT),PFHEAP,FSLOPE,PHEAPF,KFRACT,
1 LAMBDA,TOL)
C
C
ELSE
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KFRACT,LAMBDA,PHEAPF(KFRACT),
1 TOL)
C
C
ENDIF
FSLOPE( KFRACT ) = LAMBDA
C
C TO SOLVE THE RESULTING LP/MCK
C
C
CALL SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,
2 SUMCJ,DELTA,SLACK,VZERO,KFRACT,DETECT,ITERAT)
C
C
RETURN
END
SUBROUTINE TRACK1(PFHEAP,PBHEAP,PHEAPF,PHEAPB,FREE,QPRIME,QSTAR,
1 PBASIC,PSUCC,PPRED,DETECT,FSLOPE,BSLOPE,A,C,TOL,
2 BIGNUM,LAMBDA,ZBARND,SUMCJ,SLACK,DELTA,VZERO,
3 KFRACT)
C
C
C
C
C PURPOSE:
C TO BACKTRACK THROUGH ONE BY REINSTATING THE FRACTIONAL GUB SET
C TO SOLVE THE RESULTING LP/MCK
C
C
C SUBROUTINES CALLED:
C - SIFTUP
C - PUSHUP
C - SOLVLP
C - SBSPHP
C
C
C REMARKS:
C -------
C

142
C
INTEGER FREE,PFHEAP,PBHEAP,PHEAPF,PHEAPB,QPRIME,QSTAR,PBASIC,PSUCC
1 ,PPRED
CHARACTER DETECT*5
DOUBLE PRECISION SLACK,A,C,SUMCJ,ZBARND,DELTA,VZERO,FSLOPE,BSLOPE,
1 TOL,BIGNUM,LAMBDA
DIMENSION PFHEAP(200),PBHEAP(200),PHEAPF(200),PHEAPB(200),
1 PBASIC(200),PPRED(200),PSUCC(200),A(200),C(200),FSLOPE(200),
2 BSLOPE(200)
C
C
C REINSTATE THE FRACTIONAL GUB SET AND UPDATE THE HEAPS
C
FREE = FREE +1
KFRACT = PFHEAP( FREE )
QSTAR = PBASIC( KFRACT )
QPRIME = PPRED( QSTAR )
PBASIC( KFRACT ) = QPRIME
SLACK = SLACK + A( QSTAR ) - A( QPRIME )
SUMCJ = SUMCJ + C( QPRIME ) - C( QSTAR )
C
C
CALL SBSPHP(C,A,BSLOPE(KFRACT),QPRIME,PPRED(QPRIME),BIGNUM)
C
C
C
CALL SIFTUP(PBHEAP,PHEAPB,BSLOPE,KFRACT,BSLOPE(KFRACT),FREE,TOL)
C
C
C
CALL PUSHUP(PFHEAP,PHEAPF,FSLOPE,KFRACT,LAMBDA,FREE,TOL)
C
C
FSLOPE( KFRACT ) = LAMBDA
C
C SOLVE THE RESULTING LP/MCK
C
C
C
CALL SOLVLP(PFHEAP,QPRIME,QSTAR,PBASIC,PBHEAP,PHEAPF,PHEAPB,PSUCC,
1 PPRED,FREE,A,C,LAMBDA,FSLOPE,BSLOPE,BIGNUM,TOL,ZBARND,
2 SUMCJ,DELTA,SLACK,VZERO,KFRACT,DETECT,ITERAT)
C
C
RETURN
END

143

You might also like