Ramsey Model of Optimal Economic Growth
TomSym implementation of GAMS Example (RAMSEY,SEQ=63)
This formulation is described in GAMS/MINOS: Three examples by Alan S. Manne, Department of Operations Research, Stanford University, May 1986.
Ramsey, F P, A Mathematical Theory of Saving. Economics Journal (1928).
Murtagh, B, and Saunders, M A, A Projected Lagrangian Algorithm and its Implementation for Sparse Nonlinear Constraints. Mathematical Programming Study 16 (1982), 84-117.
The optimal objective value is 2.4875
t: time periods
time = (1:11)'; tfirst = time(1); tlast = time(end); bet = 0.95; % discount factor b = 0.25; % capital's value share g = 0.03; % labor growth rate ac = 0.15; % absorptive capacity rate k0 = 3; % initial capital i0 = 0.05; % initial investment c0 = 0.95; % initial consumption % Discount factor beta = bet.^(1:11)'; beta(end) = beta(end)/(1-bet); % 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. % Output-labor scaling vector a = (c0+i0)/k0^b; alt = a*(1+g).^((1-b)*((1:11)'-1)); % Capital stock, consumption and investment toms 11x1 kt ct it % Capacity constraint eq1 = {alt.*kt.^b == ct + it}; % Capital balance eq2 = {kt(2:end) == kt(1:end-1)+it(1:end-1)}; % Terminal condition (provides for post-terminal growth) eq3 = {g*kt(end) <= it(end)}; % Objective obj = sum(beta.*log(ct)); % Bounds cbnd = {kt >= k0; ct >= c0; it >= i0 it <= i0*((1+ac).^(time-1))}; cbndinit = {kt(1) == k0}; solution = ezsolve(-obj,{eq1, eq2, eq3, cbnd, cbndinit});
Problem type appears to be: con ===== * * * =================================================================== * * * TOMLAB - Tomlab Optimization Inc. Development license 999001. Valid to 2010-02-05 ===================================================================================== Problem: --- 1: Problem 1 f_k -2.487468640885963200 sum(|constr|) 0.000000002655946463 f(x_k) + sum(|constr|) -2.487468638230016600 f(x_0) 0.974572593363459920 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 11 GradEv 9 ConstrEv 9 ConJacEv 9 Iter 7 MinorIter 32 CPU time: 0.031250 sec. Elapsed time: 0.031000 sec.