Professional Documents
Culture Documents
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
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
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
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
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
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
iv
5.2.2 Optimum Levels of Service ............................................................. 51
5.2.3 Selecting Levels of Service Under Limited Budgets....................... 55
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
vi
LIST OF FIGURES
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
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
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
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
set of levels of service that maximize the value received of maintenance activities subject to the
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
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.
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.
needed. The system will assist transportation agencies in employing maintenance level of service
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
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 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
4
2. LITERATURE REVIEW
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:
5
accidents as an attribute to the consideration (Safety).
Steps 7 through 9 are for the development of resource data and value judgment:
each attribute is constructed and used to measure the effect of alternate levels of
9. Assess desirability for each level of each attribute. This step is done by a group of
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
Steps 10 through 12 are for running the program and interpreting the results:
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
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.
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
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
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
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
! 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
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.
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
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
Where:
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
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
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
1 in
ir 1 (2.1)
1 f
The relation between nominal and real interest rate can be represented as:
Where:
f = Inflation rate.
13
3. ANALYSIS PROCEDURES
The following sections will describe the steps taken in order to perform an economic
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
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.
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
The rating is done through an inspection of the bridge, which is performed biennially for all
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
16
9
Time (years)
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:
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
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
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
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
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
20
9
8
Improvement in Condition
7
2
Extension in Service Life
1
0
Time (years)
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
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)
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 )
Where:
1 1
INCBEN ( e ,c ,k1,k 2 ) PERPCST( e ) [ ] (3.4)
(1 i ) n1
(1 i ) n2
Where:
k1
n1 DTR( e ,c )
c3
k2
n2 = j DTR( e , c )
c=3
Incremental cost is the difference between maintenance cost of the two options:
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
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
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
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
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
(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
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 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
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:
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:
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:
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
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).
TMNTCST( y , e , j)
= CSTBKLG( e , j)
+ CSTDCLN( e , j)
(3.13)
Where:
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
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:
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
BENDCLN(e, j)
= QNDCLN(e, j)
* BENEFIT(e, j)
(3.15)
Where:
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:
29
Now, the total benefit obtained from applying a specific level of service can be determined
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
and
30
X(e,j) = 0 or 1 (3.21)
where:
j = Level of service;
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
The analysis can be performed for various budget values to examine the effect of increased
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
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
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
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)
j3
Because the decision factor in this problem can only take values of 0 or 1, this problem is a binary
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.
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
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 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
(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
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
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
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.
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
The algorithm by Dyer et al. is chosen for this research. The computer code was kindly
35
4.3 Description of Dyer Algorithm
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
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
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
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
30 E
25 C D
20
A
15
10
0
0 4 8 12 16 20 24 28 32 36
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
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
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.
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.
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
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
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.
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
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.
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
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
44
Table 5.3 Quantity of Element Units at Each Condition Rating
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
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 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
46
Table 5.4 Average Time Elements Remain at Condition Rating
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
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
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.
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
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
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
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
50
Table 5.5 Improvement in Condition Rating After Maintenance
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
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
52
Table 5.7 Average Annual Cost to Achieve Optimum Level of Service
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
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
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
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
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
57
Table 5.10 Five year Average Recommended L.O.S. Under Different Budgets
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
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
59
130
120
110
100
90
80
12 14 16 18 20 22
Budget ($Million)
60
6. CONCLUSIONS AND RECOMMENDATIONS
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
analysis and decision making techniques in comparing different alternatives to reach to the
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
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
7. The analysis can be used by bridge management agencies as a planning tool that can assist in
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
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
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.
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
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.
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.
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.
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.
66
8. APPENDICES
67
8.1 DEFINITION OF ANALYSIS VARIABLES AND SYMBOLS
BENDCLN = Benefits of improving element units that passes the level of service threshold
in a given year;
c = A condition rating;
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;
j = Level of service;
68
k, k1, k2 = The improved condition state;
QNDCLNA = Quantity of element units that decline to a given condition rating in a specific
year;
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.
70
STEEL PLANK DECK $/SQ.FT.
71
ALUMINUM RAIL $/L. FT.
72
MISC. PREFABRICATED EXP. JNT. $/L. FT.
73
CONCRETE SUPERSTRUCTURE $/SQ.FT.
74
TIMBER SUPERSTRUCTURE $/SQ.FT.
75
STEEL PILE SUBSTRUCTURE $/SQ.FT.
76
8.3 SAMPLE INPUT FILE
INPUT FILE
----------
Discount Rate: 0.05
********************************************************
********************************************************
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
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
************************************************
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.
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
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.
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.
FOR YEAR = 3
THE COST TO ACHEIVE THE RECOMMENDED LEVEL OF SERVICE
86
SUBSCONC 5 1587979.
PAINTSYS 4 941860.
TOTAL COST 24553038.
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.
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.
FOR YEAR = 5
THE COST TO ACHEIVE THE RECOMMENDED 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.
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
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
80 CONTINUE
90 CONTINUE
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)
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
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
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
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
CALL SINGLE(M,SLACK,PBASIC,A,C,KFRCT,JFRACT,SUMCJ,
1 ZMAX,PLAST,TOL,BIGNUM)
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
JB = JA
JA = PPRED( JA )
THETAB = (C( JB ) - C( JA )) / (A( JB ) - A( JA ))
GO TO 10
ENDIF
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
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 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