$TITLE Ramsey Model of Optimal Economic Growth $OFFUPPER * * This formulation is described in 'GAMS/MINOS: Three examples' * by Alan S. Manne, Department of Operations Research, Stanford * University, May 1986. * * The optimal objective value is 2.4875 * * References: * F P Ramsey: A Mathematical Theory of Saving, Economics Journal, * December 1928. * B Murtagh and M Saunders: A Projected Lagrangian Algorithm * and its Implementation for Sparse Nonlinear Constraints, * Mathematical Programming Study 16, pp 84-117, 1982, * Section 5.12 Economic Growth Model *--------------------------------------------------------------------- * The planning horizon covers the years from 1990 (TFIRST) to 2000 * (TLAST). The intervening asterisk indicates that this set includes * all the integers between these two values. This first statement is * the only one that needs to be changed if one wishes to examine a * different planning horizon. *--------------------------------------------------------------------- SETS T TIME PERIODS /1990*2000/ TFIRST(T) FIRST PERIOD TLAST(T) LAST PERIOD *--------------------------------------------------------------------- * Data may also be entered in the form of SCALAR(S), as illustrated * below. *--------------------------------------------------------------------- SCALARS BET DISCOUNT FACTOR /.95 / B CAPITAL'S VALUE SHARE /.25 / G LABOR GROWTH RATE /.03 / AC ABSORPTIVE CAPACITY RATE /.15/ K0 INITIAL CAPITAL /3.00 / I0 INITIAL INVESTMENT /.05 / C0 INITIAL CONSUMPTION /.95 / A OUTPUT SCALING FACTOR PARAMETERS BETA(T) DISCOUNT FACTOR AL(T) OUTPUT-LABOR SCALING VECTOR; *----------------------------------------------------------------------- * The following statements show how we may avoid entering information * about the planning horizon in more than one place. Here the symbol * "$" means "such that"; "ORD" defines the ordinal position in a set; * "CARD" defines the cardinality of the set. Thus, TFIRST is * determined by the first member included in the set; and TLAST by the * cardinality (the last member) of the set. * This seems like a roundabout way to do things, but is useful if we * want to be able to change the length of the planning horizon by * altering a single entry in the input data. The same programming style * is employed when we calculate the present-value factor BETA(T) and the * output-labor vector AL(T). *----------------------------------------------------------------------- TFIRST(T) = YES$(ORD(T) EQ 1); TLAST(T) = YES$(ORD(T) EQ CARD(T)); DISPLAY TFIRST, TLAST; BETA(T) = BET**ORD(T); BETA(TLAST) = BETA(TLAST)/(1-BET); *----------------------------------------------------------------------- * BETA(TLAST), the last period's utility discount factor, is calculated * by summing the infinite geometric series from the horizon date onward. * Because of the logarithmic form of the utility function, the * post-horizon consumption growth term may be dropped from the maximand. *----------------------------------------------------------------------- A = (C0+I0)/K0**B; AL(T) = A*(1+G)**((1-B)*(ORD(T)-1)); DISPLAY BETA, AL; VARIABLES K(T) CAPITAL STOCK (TRILLION RUPEES) C(T) CONSUMPTION (TRILLION RUPEES PER YEAR) I(T) INVESTMENT (TRILLION RUPEES PER YEAR) UTILITY *---------------------------------------------------------------------* * Note that variables and equations cannot be identified by the same * name. That is why the capital stock variables are called K(T), and * the capital balance equations are KK(T). *---------------------------------------------------------------------* EQUATIONS CC(T) CAPACITY CONSTRAINT (TRILLION RUPEES PER YEAR) KK(T) CAPITAL BALANCE (TRILLION RUPEES) TC(T) TERMINAL CONDITION (PROVIDES FOR POST-TERMINAL GROWTH) UTIL DISCOUNTED LOG OF CONSUMPTION: OBJECTIVE FUNCTION ; *---------------------------------------------------------------------* CC(T).. AL(T)*K(T)**B =E= C(T) + I(T); KK(T+1).. K(T+1) =E= K(T) + I(T); TC(TLAST).. G*K(TLAST) =L= I(TLAST); UTIL.. UTILITY =E= SUM(T, BETA(T)*LOG(C(T))); *----------------------------------------------------------------------- * Instead of requiring that "ALL" of these constraints are to be * included, we specify that the RAMSEY model consists of each of the * four individual constraint types. If, for example, we omit TC, we can * check the sensitivity of the solution to this terminal condition. *----------------------------------------------------------------------- MODEL RAMSEY /CC, KK, TC, UTIL/; *----------------------------------------------------------------------- * The following statements represent lower bounds on the individual * variables K(T), C(T) and I(T); a fixed value for the initial period's * capital stock, K(TFIRST); and upper bounds (absorptive capacity * constraints) on I(T). Bounds are required for K and C because * LOG(C(T)) and K(T)**B are defined only for positive values of C and K *----------------------------------------------------------------------- K.LO(T) = K0; C.LO(T) = C0; I.LO(T) = I0; K.FX(TFIRST) = K.LO(TFIRST); I.UP(T) = I0*((1+AC)**(ORD(T)-1)); *----------------------------------------------------------------------- SOLVE RAMSEY MAXIMIZING UTILITY USING NLP;