copyright by qiuying lai 2018

85
Copyright by Qiuying Lai 2018

Upload: others

Post on 20-Apr-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Copyright by Qiuying Lai 2018

Copyright

by

Qiuying Lai

2018

Page 2: Copyright by Qiuying Lai 2018

The Thesis Committee for Qiuying Lai

Certifies that this is the approved version of the following thesis:

Macroscale Modeling Linking Energy and Economics:

Tests of Investment Choices

APPROVED BY

SUPERVISING COMMITTEE:

Carey W. King

Eric Kemp-Benedict

Michael P. Marder

Supervisor:

Page 3: Copyright by Qiuying Lai 2018

Macroscale Modeling Linking Energy and Economics:

Tests of Investment Choices

by

Qiuying Lai

Thesis

Presented to the Faculty of the Graduate School of

The University of Texas at Austin

in Partial Fulfillment

of the Requirements

for the Degree of

Master of Science in Energy and Earth Resources

The University of Texas at Austin

May 2018

Page 4: Copyright by Qiuying Lai 2018

iv

Acknowledgements

I would like to acknowledge Dr. Carey W. King from the University of Texas at

Austin (UT Austin) for his patient guidance and support. And I appreciate the academic

support from Dr. Michael P. Marder from UT Austin and Dr. Eric Kemp-Benedict from

the Stockholm Environment Institute. Last but not least, Mr. Richard J. Chuchla, Ms. Smith

Jessica and all the EER Program fellows have my sincere gratitude for providing the

favorable environment and the timely help in my study and life.

I would like to thank my family for their unconditional love, supporting me

materially and spiritually.

Page 5: Copyright by Qiuying Lai 2018

v

Abstract

Macroscale Modeling Linking Energy and Economics:

Tests of Investment Choices

Qiuying Lai, M.S.E.E.R.

The University of Texas at Austin, 2018

Supervisor: Carey W. King

Natural resources, especially energy, play a significant role in human society, from

economics to politics. A number of models has been built in the past to study the

relationship between natural resources and macroeconomics. These include biophysical

models for population and natural resource use, which omit many important economic

factors, such as debt, wages and employment. On the other hand there are economic models

of debt, employment, Gross Domestic Product and other such variables, but these omit

considerations of energy and natural resources. The goal of this study is to further develp

a model that links biophysical and economic fundamentals within a cohesive framework.

Based on the “HANDY” biophysical model and the Goodwin economic model, a

merged model has been developed to simulate the dynamics of an integrated system

associating natural resources and economics. This merged model focuses on the

relationship between energy consumption and macroeconomic structure. It has two

industry sectors – resource extraction and goods production. Both sectors produce output

that is consumed by households, and the goods sector also produces investment goods that

Page 6: Copyright by Qiuying Lai 2018

vi

are allocated to each sector. In order to better understand how the different investment

strategies influence the physical flows of resources as well as economic growth, several

simulations for investment by firms have been tested in this study. The simulations make

predictions for population, natural resources, economic output, debt and other economic

variables. They reveal the impact of concerning investment and show that our merged

model provides the means to explore questions on this topic.

Page 7: Copyright by Qiuying Lai 2018

vii

Table of Contents

List of Tables ....................................................................................................... viii

List of Figures ........................................................................................................ ix

Chapter 1: Introduction and Background .................................................................1

1.1. Research Questions ................................................................................1

1.2. Energy Development and Consumption ................................................2

1.3. Economic Theory ...................................................................................6

1.3.1. Keynesian and Post-Keynesian Economics .................................6

1.3.2. Production Functions ...................................................................8

1.4. The Relationship of Energy Consumption and Economics .................10

Chapter 2: Methods ................................................................................................12

2.1. Biophysical Models .............................................................................12

2.2. Economic Models ................................................................................19

2.3. Merged Macro-Model ..........................................................................26

2.4. A two-sector model with different Investment Choices ......................27

Chapter 3: Results and Discussions .......................................................................38

3.1. Compare the models with and without debts .........................................38

3.2. Simulations of different investment ratio ..............................................42

Chapter 4: Conclusion............................................................................................45

Appendix ................................................................................................................46

1. Parameters ............................................................................................46

2. Initial conditions for variables .............................................................48

3. Code version 1 .....................................................................................50

4. Code version 2 .....................................................................................64

References ..............................................................................................................74

Page 8: Copyright by Qiuying Lai 2018

viii

List of Tables

Table 1. Variables and parameters of Predator-Prey Model ..................................13

Table 2. Variables and parameters of HANDY .....................................................15

Table 3. Variables and parameters of Keen’s 2013 model ....................................23

Table 4. Factors of the intermediate demands .......................................................28

Table 5. Stock-Flow Consistency ..........................................................................30

Table 6. Table of parameters .................................................................................47

Table 7. Initial conditions for variables .................................................................49

Page 9: Copyright by Qiuying Lai 2018

ix

List of Figures

Figure 1. Time series of living standards indicators: (a) global child mortality; (b)

literate and illiterate world population; (c) world population living in

extreme poverty; (d) projected world population by level of education)

(Roser, 2017).......................................................................................4

Figure 2. World energy consumption by energy source (EIA, 2017) ......................5

Figure 3. US Primary Energy Consumption by Source (EIA, 2017) ......................6

Figure 4. Experiment results for the Egalitarian Society of HANDY:

(a) 66.67 10 ; (b) 51.66 10 ; (c) 52.66 10 ; (d)

53.66 10 (Motesharrei et al., 2014) ...................................16

Figure 5. Experiment results for the Equitable Society of HANDY:

(a) 68.33 10 , (b) 52.20 10 , (c) 53.00 10 ,

(d) 54.33 10 (Motesharrei et al., 2014) .............................17

Figure 6. Experiment results for the Unequal Society of HANDY:

(a) 66.67 10 , (b)

41 10 , (c) 66.35 10 , (d)

51.35 10 (Motesharrei et al., 2014) ...................................18

Figure 7. Exponential investment curve (Keen, 2013) ..........................................24

Figure 8. Goodwin model with debt (Jayaswal, 2017) ..........................................25

Figure 9. Goodwin model without debt (Jayaswal, 2017) .....................................25

Figure 10. Look up function for CU_indicated .....................................................35

Figure 11. Comparing the results without debts (left) and the results with debts using

fixed investment ratio p_ext = 0.5 (right) [Part 1] ............................40

Figure 12. Comparing the results without debts (left) and the results with debts using

fixed investment ratio p_ext = 0.5 (right) [Part 2] ............................41

Page 10: Copyright by Qiuying Lai 2018

x

Figure 13. Comparing the results with debts using fixed investment ratio method with

p_ext = 0.08, 0.25, 0.50, 0.68 ...........................................................44

Page 11: Copyright by Qiuying Lai 2018

1

Chapter 1: Introduction and Background

1.1. RESEARCH QUESTIONS

Natural resources, especially energy fuels, play a significant role in human society,

from economics to politics. For the sake of further understanding natural and social

dynamics as well as assisting policy making, not only should we learn how natural resource

extraction affect the ecosystem, but we should also learn its direct and indirect effects on

the economics. This requires us to develop macroeconomic models that account for the

dynamics of investment and spending on resources, inlight of resource depletion, relative

to spending on production from the rest of the economy.

There is a precedent for such models. There are biophysical models of population

and natural resources, but many of thiese omit important economic factors, such as debt.

On the other hand, there are economic models of debt, employment, economic output, etc.,

but these omit dependencies involving energy and natural resources. A merged model

linking these two domains was initiated in previous studies (Jayaswal, 2017), and it is

developed further in this thesis.

Continuing model development within a system dynamics framework of

population, natural resource extraction, employment, wage, etc. is needed to answer the

questions concerning the long-term relationship is between the consumption of natural

resources and macroeconomic growth and structure. There are two aspects: First, how do

flows of money and energy relate to each other? Second, how are wages, profits, interest

payments, etc., associated with resources?

The objective of this thesis is to develop a model that can explore questions that

relate the use of natural resources and economic outcomes. The economic outcomes are

measured by many variables (wages, growth, employment, and debt) as well as how these

Page 12: Copyright by Qiuying Lai 2018

2

variables are distributed between the part of the economy that extracts nature (the

extraction sector) and the rest of the economy (the goods sector). Within this cohesive

framework, the specific question for this thesis is how the different investment strategies

act on the physical and economic growth in the long run.

1.2. ENERGY DEVELOPMENT AND CONSUMPTION

The history of the world can be divided into two stages that I call “pre-industrial

revolution” and “post- industrial revolution”. The dividing line between these stages is the

invention of the modern steam engine by James Watt during the 1760s. Previously, humans

used the most accessible energy resources, wood for heating, crops for food, and animals

for labor. From the 18th century until the 1950s, coal was the primary energy source as

global industrial development accelerated. During the 19th century, the revolutionary

invention of the electric motor by Michael Faraday enabled many other energy sources to

be converted into electricity. This series of inventions and the ability to extract fossil energy

enabled an unprecedented wave of industrialization and urbanization. (Smil, 1994)

Energy resources and technology have enabled many changes in human society.

We produce more goods with higher efficiency and there are also more to consumeThis

had implications for social organization, since easier access to energy resources enabled

the development of compact communities such as cities. The widespread and efficient

usage of energy resources provides a foundation for improving people’s living quality

measured by indicators such as poverty, literacy, health and education (Roser, 2017). This

is shown in Figure . The glabal child death share of world population dying, the illiterate

population and the extreme poverty population share have significantly decreases in the

recent 200 years. Also, the educated population has considerably increased.

Page 13: Copyright by Qiuying Lai 2018

3

Figure 1. Time series of living standards indicators: (a) global child mortality; (b) literate

and illiterate world population; (c) world population living in extreme poverty;

(d) projected world population by level of education) (Roser, 2017)

(a)

(b)

Page 14: Copyright by Qiuying Lai 2018

4

Figure 1 continued

(c)

(d)

Page 15: Copyright by Qiuying Lai 2018

5

Even with the growth of renewable energy resources like wind and solar energy,

demand for fossil fuels continues to increase, and global energy consumption has been

rising for decades. A modeling forecast was made by Energy Information Administration

(EIA) (Figure 2). They predict that all forms of primary energy consumption will increase

from 2015 to 2040 for all major primary energy resources except for coal. While fossil

fuels remain a substantial proportion of total energy consumption, renewables are the

fastest-growing source and are projected to account for an increasing share of the energy

market over time. (EIA, 2017)

Figure 2. World energy consumption by energy source (EIA, 2017)

As the second largest energy consumer, the United States used more than 2200

Mtoe of energy during 2017 (EIA, 2017). According to the statistics from EIA (Figure 3),

petroleum has been the main source of energy in the US, and the consumption of the

renewables, nuclear and natural gas has been increasing, while the growth in coal

consumption has slowed during the recent decade (EIA, 2017).

Page 16: Copyright by Qiuying Lai 2018

6

Figure 3. US Primary Energy Consumption by Source (EIA, 2017)

1.3. ECONOMIC THEORY

1.3.1. Keynesian and Post-Keynesian Economics

After the Great Depression during 1929-1933, the prevailing economic theories

were unable to explain the severe rise in unemployment and the decline in economic output,

let alone to help make solutions. Against the existing neoclassical economic theories, John

Maynard Keynes provided a new economic theory in his book The General Theory of

Employment, Interest and Money in 1936 (Keynes, 1936). In the Keynesian view, in a short

term, equilibrium employment is decided by effective demand which consists of

consumption demand and investment demand. Consumption can be easily considered as

households spending on goods and services, and investment is people and firms purchasing

goods to create wealth. Each of them is a part of net output, or Gross Domestic Product

(GDP), of the economy. The insufficient consumption demand is caused by the

Page 17: Copyright by Qiuying Lai 2018

7

consumption growth lagging behind the income growth as a result of consumer preference,

and the deficient investment demand is due to the low expected profit rate. When there are

insufficient effective demand, economic depression, and high unemployment, Keynesian

economists assert that the government should adopt the active fiscal policies to stimulate

the investment demand by increasing the government expenditures and public investments,

since the consumption demand tends to be stable in the short run.

After World War II, the Keynesian theories were extended and re-interpreted to

harmonize the economic theory system with macroeconomics and microeconomics by

applying the individual analysis to the aggregate economy, and there came the Post-

Keynesian Mainstream, i.e. Neoclassical Synthesis. Based on Keynes’ Multiplier Theory,

a new model called Multiplier-Accelerator Model (Samuelson, 1939) was derived by Alvin

Hansen and Paul Samuelson, taking the effects of the income on the investments into

account. The Multiplier-Accelerator Model is a macroeconomic model with three sectors

including household consumers, firms and the government. As stated in (Eq. 1), the

national income (tY ) can be calculated as the sum of the present household consumption (

tC ), present investment (

tI ) and the constant government expenditure (G ).

t t tY C I G (Eq. 1)

On the contrary, a few other Keynesian followers represented by Joan Robinson,

Nicholas Kaldor and Piero Sraffa built up the so-called Post-Keynesian economics as an

alternative to the Neoclassical theory. With the emphasis on dynamic analysis,

nonergodicity, uncertainty and history, Post-Keynesian economists criticized Neoclassical

economists for their rational expectation assumption and refused the equilibrium analysis.

(Lavoie, 2012)

Page 18: Copyright by Qiuying Lai 2018

8

1.3.2. Production Functions

Production functions are used in certain technical conditions to describe the relation

between the production, or output, and the production inputs like labor and capital. There

are many ways to model economic output, most of which consider capital and labor and

some also involve energy resources. Production functions can be divided into Short-run

Production Functions and Long-run Production Functions. Short-run Production Functions

usually assume that all the production factors except one remain unchanged, while Long-

run Production Functions allow two or more changing production factors. (Mishra, 2007)

The production function with constant substitution proportion, first used by Von

Neumann in 1937 (Von Neumann, 1937), is one of the commonly used function. As

displayed in (Eq. 2), the two production factors, labor ( L ) and capital ( K ) can be

substituted for each other with constant parameters (a

b and

b

a) to keep the same output (

Y ) level. In other word, if labor increases by 1 unit, capital needs to decrease by a

b unit

to keep the output unchanged.

Y aL bK (Eq. 2)

Another production function named after Leontief and widely used by Post-

Keynesians, is shown in (Eq. 3). With the two technology factor parameters ( c and d ),

the total output (Y ) can only be increased by increasing the labor input ( L ) and capital

input ( K ) at a fixed proportion. In other words, if the labor doubled, the total output won’t

change unless the capital is also duplicated. (Humphrey, 1997)

min{ , }Y cL dK (Eq. 3)

The Cobb–Douglas production function (Cobb & Douglas, 1928) is also frequently

used, especially preferred by the Neoclassical economists. As stated in (Eq. 4), constrained

by two parameters representing output elasticities ( and ), the total output (Y ) is a

Page 19: Copyright by Qiuying Lai 2018

9

function of labor input ( L ) and capital input ( K ), and the necessary factor ( A ) is defined

as a mathematical residual when fitting the function to data for labor, capital and output.

Y AL K (Eq. 4)

The returns to scale can be changed by changing the relation of and . There

are three possible situations.

If 1 , the return to scale will be constant for any constant c greater than 0,

which can also be illustrated by (Eq. 5).

(c ) (c ) A L K c AL K cAL K cY (Eq. 5)

If 1 , the return to scale will be decreasing for any constant c greater than

1, which can also be illustrated by (Eq. 6).

(c ) (c ) A L K c AL K cAL K cY (Eq. 6)

If 1 , the return to scale will be increasing for any constant c greater than

1, which can also be illustrated by (Eq. 7).

(c ) (c ) A L K c AL K cAL K cY (Eq. 7)

Taking the energy or natural resources into consideration, there are production

functions in the form of (Eq. 8). The variable denoted by E can be different indicators

of energy usage, e.g. exergy or commercial energy. (Ayres, 2005)

Y AK L E (Eq. 8)

Each one with their own limitations, these production functions have been used to

build the economic growth models simulating the diverse impacts of production factors on

economic total output. In order to mimic the real data and even predict the growth trends

and guide the policy, the forms and the parameters of the production functions need to be

chosen for different conditions.

Page 20: Copyright by Qiuying Lai 2018

10

In the model developed in this thesis, inputs of capital, labor and energy are

included as necessary to produce economic output using the Leontief assumption, thus

there is no substitution and any factor can be limiting.

1.4. THE RELATIONSHIP OF ENERGY CONSUMPTION AND ECONOMICS

The relationship between energy consumption and economic growth has been

studied quantitatively from 1970s, and the results vary with models, data and studied

regions. As for the United States, a pioneering study using the data from 1947 to 1974

shows a positive single causality from Gross National Product (GNP) to the energy

consumption (Kraft et al., 1978), followed by a study using the same time series data with

a different sample interval which points out the influence of the sample choices on the

relationship analysis (Akarca et al., 1980). By analyzing the US data from 1947 to 1979,

Yu et al. asserts that there is no causal relationship between the energy consumption and

GNP (Yu et al., 1984). For the time series of variables like energy consumption and GNP

which are usually nonstationary, Engle and Granger (1987) proposed a method to decide

that the two series are co-integrated if their linear combination is stationary. Using this

method, the study with the seasonal data from 1974 to 1990 also indicates nonexistence of

the long-term co-integrated relationship between the two variables (Yu, 1992). However,

with the model involving four variables including GDP, capital, labor and energy, the

energy consumption is recognized to have a significant effect on explaining the GDP

changes, and a significant long-term co-integrated relationship is found among the four

variables (Stern, 2000).

From the above, the relationship between energy consumption and economic

growth has been studied by various methods, leading to different results. The inconsistency

of those results arises not only from the different economic structures and policies in

Page 21: Copyright by Qiuying Lai 2018

11

different countries or time periods, but also from the model limitations and the assumptions

of the methods.

Page 22: Copyright by Qiuying Lai 2018

12

Chapter 2: Methods

The purpose of this chapter is to describe the development of the model used in this

thesis. By combining a relatively simple biophysical model (Section 2.1) with a relatively

simple economic growth and business cycle model (Section 2.2), the merged model is able

to simulate an integrated system with the physical flows of nature and also the economic

flows.

2.1. BIOPHYSICAL MODELS

Biophysical models simulate the biological system by formalizing the physical

properties like population, natural resources, etc. One of the simplest biophysical models,

Predator-Prey Model, also named as Lotka-Volterra model, describes the relation between

predator population and prey population, for example, wolves and rabbits (Lotka, 1925).

With the variables and parameters in Table 1, the birth rate of the predator population x

is positively correlated to the prey population y , and the death rate is constant (Eq. 9).

The prey population changes with a constant birth rate and a death rate positively correlated

with the predator population (Eq. 10). In such a system, when the population of predators

is rather small, the preys living in the favorable environment will have a relatively high

population growth rate. At the same time, the predators will have more available food and

their birth rate will climb up. Eventually more predators will eat more preys, causing the

prey death rate to increase so high that prey population declines. The lack of food (preys)

will lead to lower birth rates of the predators, and thus the system goes back to the original

condition and starts a new circulation. The mutual restriction between the two species

keeps the populations fluctuating within a certain range and therefore the system remains

in balance. The outcome of the predator-prey model is a limit cycle, or an osculation of

predator and prey populations that continues indefinitely.

Page 23: Copyright by Qiuying Lai 2018

13

(ay)x bxx (Eq. 9)

cy (dx)yy (Eq. 10)

Table 1. Variables and parameters of Predator-Prey Model

Based on the Predator-Prey Model, the Human and Nature Dynamics Model

(HANDY) considered people as predators and the nature as prey, simulating the trade-off

between the population and natural resources (Motesharrei et al., 2014).

There are two types of population – commoners and elites, represented by C

x and

Ex . The population growth, as shown in (Eq. 11) and (Eq. 12), controlled by the birth

rate , which is constant in HANDY, and death rate , which is determined by wealth.

Nature as a stock that regenerates at a certain rate is akin to a forest in HANDY. To simplify

the real situation, nature is assumed to regenerate in a logistic function of the existing nature

and decrease as it is extracted by commoners (Eq. 13). According to the features of logistic

equation, the nature regeneration rate will reach the maximum when the nature is equal to

half of the assumed maximum capacity of nature ( ). Wealth (w ) is the nature that has

been extracted but not yet consumed. As only commoners produce and both of commoners

and elites consume, wealth can be accumulated by the production subtracting the

consumptions (Eq. 14). A threshold wealth (th

w ) was defined in (Eq. 15) with the

threshold wealth per capita ( ) indicating the minimum wealth required to maintain the

minimum death rate. According to (Eq. 16) and (Eq. 17), the consumption level is

Symbol Endogenous Variables (EV) /

Parameter (P)

𝑥 Predator Population (EV)

𝑦 Prey Population (EV)

𝑎 Efficiency of predation to growth (P)

𝑏 Predator Death Rate (P)

𝑐 Prey Birth Rate (P) 𝑑 Efficiency of Predation (P)

Page 24: Copyright by Qiuying Lai 2018

14

controlled by the quantity of wealth, and human consumption is total subsistence salary

when the wealth is above the threshold wealth, and becomes proportional to the total

subsistence salary when the wealth is not enough. As stated by (Eq. 18) and (Eq. 19), a

maximum and minimum were set for the death rate. When the wealth is above the threshold

wealth, the death rate will stay at the minimum level. As wealth approaches zero, the death

rate approaches it’s maximum value M

and famine occurs. The death rate in between is

dependent on the present consumption level compared to the total subsistence salary.

C C C C C

x x x (Eq. 11)

E E E E E

x x x (Eq. 12)

( )C

y y y x y (Eq. 13)

C C E

w x y C C (Eq. 14)

th C E

w x x (Eq. 15)

min(1, )C C

th

wC sx

w (Eq. 16)

min(1, )E E

th

wC sx

w (Eq. 17)

max(0,1 )( )CC m M m

C

C

sx (Eq. 18)

max(0,1 )( )EE m M m

E

C

sx (Eq. 19)

Page 25: Copyright by Qiuying Lai 2018

15

Symbol

Description (Exogenous

variable (EV) /

Endogenous Variables

(V) / Parameter (P))

Unit

Cx ,

Ex Population (V) Person

y Nature (V) Nature

w Wealth (V) Nature

thw

Wealth threshold value

(V) Nature

C ,

E Death rate (V)

1

Time

CC ,

EC Consumption (V)

Nature

Time

Birth rate (P) 1

Time

Regeneration factor (P) 1

Time

Nature capacity (P) Nature

Extraction rate (P) 1

Time Person

Threshold wealth per

capita (P)

Nature

Person

Inequality factor (P) --

s Subsistence salary per

capita (P)

Nature

Time Person

M Maximum death rate (P)

1

Time

m Minimum death rate (P)

1

Time

Table 2. Variables and parameters of HANDY

There are three kinds of scenarios simulated by HANDY (Motesharrei et al., 2014):

the Egalitarian Society, the Equitable Society and the Unequal Society. Different scenarios

simulating the HANDY Model display the modeling results with the same initial values

and parameters except for varying the extraction rate (δ) and inequality factor (κ) in order

Page 26: Copyright by Qiuying Lai 2018

16

to explore the impacts of changing extraction rates and unequal consumption on population

collapse. The egalitarian scenarios simulate the society without elites ( 0E

x ), of which

the results are shown in Figure 4. The optimal extraction rate (* ) which leads to a “soft

landing” to a stable mode is 66.67 10 (

1

Time Person) (Figure 4 (a)), and with the

extraction rate increased, the system becomes more unstable and even collapses (Figure 4

(b)-(d)).

Figure 4. Experiment results for the Egalitarian Society of HANDY:

(a) 66.67 10 ; (b)

51.66 10 ; (c) 52.66 10 ; (d)

53.66 10 (Motesharrei et al., 2014)

Page 27: Copyright by Qiuying Lai 2018

17

The equitable scenarios (Figure 5) simulate the society with elites and the properties

of the elites are the same as the commoners except that they don’t work ( 0E

x , 1

). The optimal extraction rate is now larger (* 68.33 10 ), and increasing extraction

rates cause more oscillations (Figure 5 (b) & (c)) and eventually a state of equilibrium or a

collapse (Figure 5 (d)).

Figure 5. Experiment results for the Equitable Society of HANDY:

(a) 68.33 10 , (b)

52.20 10 , (c) 53.00 10 , (d)

54.33 10 (Motesharrei et al., 2014)

The unequal scenarios (Figure 6) simulate the society with elites as well as unequal

consumption abilities ( 0E

x , 1 ). When the inequality factor is low, a proper

extraction rate can be found to achieve a “soft landing” (Figure 6 (c)), however, when the

Page 28: Copyright by Qiuying Lai 2018

18

inequality factor is high, the system is unable to maintain a steady population indefinitely

(Figure 6 (a) & (b)).

Figure 6. Experiment results for the Unequal Society of HANDY:

(a) 66.67 10 , (b)

41 10 , (c) 66.35 10 , (d)

51.35 10 (Motesharrei et al., 2014)

In the book The Limits to Growth (Meadows et al., 1972), a system dynamic model

named World3 was used to describe the relations among population, capital, natural

resources and pollution, assuming the natural resources are limited and do not regenerate.

From the results of the study, the world population, industrial output, food consumption,

pollution and the resources depletion are shown to initially grow exponentially, but due to

Page 29: Copyright by Qiuying Lai 2018

19

the finite resources and limited pollution tolerance the economics will collapse or at least

stop growing one day. Thus the authors suggest we should take measures to prepare for an

eventual cessation of growth by increasing efficiency and stabilizing population birth rates.

The authors also show there are some scenarios that humans can realize a satisfying living

level without economic growth, which implies the concept of sustainable development.

There are also limitations of the World3 model. A model with five main variables might

be too simple because it ignores some significant factors and mechanisms. For example,

the model does not explicitly model prices of goods or resources, ignoring the feedback

effect of prices - the shortage of goods can induce the increasing price, and thus its demand

will drop and the scarcity will be relieved.

2.2. ECONOMIC MODELS

Various economic models have been built to simulate the economic processes by a

set of economic variables and their relationships. Economic variables of interest include

wages, employment, debt, profits and economic output (GDP).

The Goodwin Model uses the same predator-prey concept as the Lotka-Volterra

model to simulate the business cycle dynamics of the employment rate and wages

(Goodwin, 1967). According to Leontief production function (Leontief, 1951), if two of

the three variables (Labor, Capital and Output) are known, the other one can be derived.

With the change of wages determined by the Philips curve (Eq. 20), and the labor

productivity (Eq. 21) and population (Eq. 22) growing exponentially, there are three sets

of euqations that can model te system, and these are shown in (Eq. 23), (Eq. 24) and

(Eq. 25). Take the first situation as an example, if the differential equation of Labor is

given, Output and Capital will be calculated (Eq. 23). Additionally, the investment is

assumed to be equal to profit, which is equal to the residual of the output after paying the

Page 30: Copyright by Qiuying Lai 2018

20

wages (Eq. 26). The employment rate is the share of the labor in the total population

(Eq. 27). The equations for wage change and labor change can be rewritten as (Eq. 28)

and (Eq. 29), which have the same form of the equations for predator population (Eq. 9)

and prey population (Eq. 10).

( c d )ww (Eq. 20)

a a (Eq. 21)

N N (Eq. 22)

1( )

w

aL Lv

Y aL

K Y

(Eq. 23)

K I K

KY

YL

a

(Eq. 24)

IY Y

K Y

YL

a

(Eq. 25)

I Y w (Eq. 26)

L

N (Eq. 27)

d

w cww LN

(Eq. 28)

Page 31: Copyright by Qiuying Lai 2018

21

1 1

( )L L wLv av

(Eq. 29)

Keen (1995 and 2013) integrated debt into the Goodwin model (Goodwin, 1967).

Keen was inspired by Hyman Minsky’s Financial Instability Hypothesis, which is that

during times of high economic growth, firms will invest more than their profit. This

additional investment over profits represents a loan from banks that accumulates as debt.

(Minsky, 1957)

The differential equations in Keen’s model (Keen, 2013) are listed as (Eq. 30)-

(Eq. 35), with the variables and parameters explained in Table 3. Described in (Eq. 30),

the rate of change in net economic output is in line with Leontief production function

(Leontief, 1953) and equals to the investment minus depreciation divided by the capital-

output ratio. Simulating the investment as a function of profit rate (vY

) and net output

(Eq. 36), the equation for the change of net output can be rewritten as (Eq. 31) where

( )vY

is the function of output invested. Real wage signifies the average personal payment

for workers. As stated in (Eq. 32), the rate of change in wage is assumed to be a function

of current wages and employment as in the Goodwin model. The function ( )ph is a

Phillips curve describing this dependence on employment (Phillips, 1958). The change in

debt is equal to investment minus profits (Eq. 33), and the introduction of debt is one way

to include the concept of money. Labor productivity and population are both exogenous

states, meaning that they are not affected by the other state variables. Labor productivity is

the average amount of output each worker can make per time to represent the workers’

efficiency changing with time by various scientific and technological improvements.

(Eq. 34) and (Eq. 35) show that the labor productivity and population both increase

exponentially with respectively given growth rates.

Page 32: Copyright by Qiuying Lai 2018

22

K I K I

Y Yv v

(Eq. 30)

( )( )vYY Y

v

(Eq. 31)

( )ww ph (Eq. 32)

( )D YY

(Eq. 33)

a a (Eq. 34)

N N (Eq. 35)

( )I YvY

(Eq. 36)

Page 33: Copyright by Qiuying Lai 2018

23

Symbol

Description (Exogenous

variable (EV) /

Endogenous Variables (V)

/ Parameter (P))

Unit

Y Output (V) Money

Time

w Real wage (V) Money

Time Person

D Debt (V) Money

a Labor productivity (EV) Money

Time Person

N Total Population (EV) Person

I Investment (V) Money

Time

Profit (V) Money

Time

Employment ratio (V) --

Capital/output ratio (P) Time

Depreciation rate (P) 1

Time

Growth rate of labor

productivity (P)

1

Time

Growth rate of population

(P)

1

Time

Table 3. Variables and parameters of Keen’s 2013 model

Keen (2013) used the exponential investment curve to model that the investment

share exponentially increases with the profit share (Figure 7). With a fixed output, there is

a point where the investment is equal to the profit, before which the investment is lower

than the profit and after which the investment will exceed the profit.

Page 34: Copyright by Qiuying Lai 2018

24

Figure 7. Exponential investment curve (Keen, 2013)

Such an investment curve can represent different investment risk preferences,

conservative or aggressive, by changing the parameters. It can also be simplified to a linear

investment curve which indicates a constant ratio of investment and profit as Bovari et al.

(2018) simulate in their model.

Figure 8 and Figure 9 show the simulating results of Goodwin model with and

without debt. The non-linear investment function and the non-linear Phillips curve that is

modeled as an exponential function of profit share are used for the simulations. The results

of these two scenarios are similar. The output and population increase over time, and the

labor rises with some oscillations. The wage share and employment rate form a “limit

cycle” when changing over time, and when there is debt simulated using the non-linear

Phillips curve the cemployment and wage share change along a circle.

Page 35: Copyright by Qiuying Lai 2018

25

Figure 8. Goodwin model with debt (Jayaswal, 2017)

Figure 9. Goodwin model without debt (Jayaswal, 2017)

Page 36: Copyright by Qiuying Lai 2018

26

2.3. MERGED MACRO-MODEL

The HANDY model does not explicitly consider economic concepts such as wages,

debt (money), and profits. The Goodwin Model does not consider requirements for natural

resouces. Thus, a merged model can combine the important concepts from both HANDY

and Goodwin. Jayaswal (2017) began the research on this merged model to connect natural

resources and economics in a single framework.

There are differential equations for seven variables in Jayaswal’s merged model,

with the variables and parameters derived from HANDY are subscripted by “h”. He used

the equations of changes in population, nature and wealth from HANDY (Eq. 11) -

(Eq. 14), and the equations of changes in output, wage, labor productivity and debt from

Keen’s model (Eq. 30)-(Eq. 34). There is only one kind of population which is denoted by

hcx , represents both the total available labor supply and the number of consumers. Jayaswal

explored three different forms for the expression for nature extraction. The equations of

changes in nature h

y and wealth h

w are simulated with different assumptions: in

(Eq. 38) nature extraction is a function of labor L ; in (Eq. 39) nature extraction is a

function of capital K which is defined to increase with the investment and decrease due

to the depreciation; in (Eq. 40) nature extraction is a function of “power input” Pi

indicating a portion of wealth is required as an input to extract nature. There are also two

assumptions of investment function tested in Jayaswal’s model: linear Phillips curve

(Eq. 20) and non-linear Phillips curve that is modeled as an exponential function of profit

share. A mix of these assumptions were modeled on the conditions with debt (Eq. 44) or

without debt (I ), as well as with or without wealth depreciation (h hw ).

hc hc hc hc hc

x x x (Eq. 37)

( )

h h h h h L h

h L h hc h h

y y y Ly

w Ly C w

(Eq. 38)

Page 37: Copyright by Qiuying Lai 2018

27

( )

h h h h h K h

h L h hc h h

y y y Ky

w Ky C w

(Eq. 39)

( )

h h h h h Pi h

h Pi h hc h h

y y y Piy

w Piy C w

(Eq. 40)

( )( )YY Y

(Eq. 41)

( )ww ph (Eq. 42)

a a (Eq. 43)

( )D YY

(Eq. 44)

2.4. A TWO-SECTOR MODEL WITH DIFFERENT INVESTMENT CHOICES

In this thesis, a two-sector extension of Jayaswal’s model (Jayaswal, 2017) is

presented. More variables like capacity utilization, inventory coverage, and price of nature

are introduced in the system, and there are two separate sectors – extraction sector and

goods sector. Each sector has its own capital ( gK ,

eK ), labor ( g

L , eL ) and debt ( g

D ,

eD ). The extraction sector uses capital to extract nature and there is also household

consumption of nature which represents food and energy consumption of consumers. The

goods sector produces “goods” that are both consumer goods and investment goods that

become new capital for both sectors. Between these two sectors the intermediate

consumptions are taken into account due to the fact that the goods production usually

requires energy and goods materials, and to extract the nature we also need energy and

goods investment (e.g. the drilling equipment).

Page 38: Copyright by Qiuying Lai 2018

28

The physical processes including the intermediate consumptions can be represented

in an input-output equation (Eq. 45). The gross output of each sector (g

X and e

X )

consists of the intermediate consumptions by the two sectors indicated by multiplying

transaction matrix ( A ) by gross output matrix (X ), the household consumption (g

C and

eC ), the investment, and the residual will be the inventory change (goods inventory and

extraction inventory). Note that investment goods are only provided by the goods sector.

Thus, even though both sectors invest money, gI and

eI , only the goods sector produces

the physical investment, _g g

I and _g e

I , associated with those monetary investment

decisions. To explain the parameters for the intermediate consumptions, their equations are

given in Table 4.

_ _+

0

gg geg g g g g g e

eg eee e e

X AX C I Inventory

a aX X C I I G

a aX X C Ext

(Eq. 45)

Intermediate parameter Description

gga constant Producing 1 unit of gross goods output

requires a constant amount of goods input.

gea constant Producing 1 unit of gross extraction output

requires a constant amount of goods.

e e e e

ee

k h e e k h

K CUa

y K CU y

The amount of nature extraction input

required to operate the capital of extraction

sector to produce one unit of nature extraction

can be calculated as the efficiency of the

operation divided by the product of the

extraction parameter and nature.

_ _

_ _

( )=

/ ( / )

( )

( / )

o I

eg eg eg

g g g g g g e g

g g g g g g e

g g g e g

g g

g g g e

a a a

K CU I I P

K CU v K CU v P

I I Pv

K CU v P

The amount of nature extraction input

required by the goods sector includes the

operation part which is used to operate the

goods capital, and the investment part which

is used to invest in the new capital.

Table 4. Factors of the intermediate demands

Page 39: Copyright by Qiuying Lai 2018

29

By assuming there is no accumulated goods and extraction ( 0G , 0Ext ),

the matrix equation can be expressed in two separate equations (Eq. 46)-(Eq. 47).

_ _ g ge e gg g g g e g gX a X a X C I I (Eq. 46)

+ e eg g ee e eX a X a X C (Eq. 47)

Table 6, which is adapted from Godley’s model (2016), shows the stock-flow

consistency of such a merged model. The balance sheet, transactions and flow of funds

account for the monetary activities among households, extraction firms, goods firms and

banks. Note that in the sheet of transactions, the sum of each column equal to zero.

Balance Sheet

Households Extraction firms Goods firms Banks Sum

Capital

Stock g eP K

g gP K ( )g e gP K K

Deposits M M

Debts eD gD e gD D

Sum M g e eP K D g g gP K D 0 ( )g e gP K K

Table 5. Stock-Flow Consistency

Page 40: Copyright by Qiuying Lai 2018

30

Transactions

Households Extraction firms Goods firms Banks Sum

Current Capital Current Capital Current Capital

Household

consumption

e e

g g

C P

C P

e eC P g gC P

Intermediate

consumption

eg g e ee e e

ge e g ee e e

a X P a X P

a X P a X P

ge e g gg g g

eg g e gg g g

a X P a X P

a X P a X P

Investment _g e gI P _ _g e g g g gI P I P

_g g gI P

Value

Added [VA ]e [VA ]g

Wages e

g

wL

wL

ewL gwL

Capital

depreciation e gK P e gK P g gK P g gK P

Interest on

debts erD grD

e

g

rD

rD

Interest on

deposits rM rM

Sum hhS e _( ) e g e gK I P g _( ) g g g gK I P

b

Flow of Funds

Households Extraction firms Goods firms Banks Sum

Change in

capital stock e gK P

g gK P ( )e g gK K P

Change in

capital

formation

_g e gI P _g g gI P _ _( )g e g g gI I P

Change in

deposits M M

Change in

debts eD gD e gD D

Sum hhS e g bS

Table 6 continued

Page 41: Copyright by Qiuying Lai 2018

31

From the accounting relationships in Table 6, the value added to each sector can be

stated as (Eq. 48) and (Eq. 49).

_ _

g g g ge e g eg g e g e g g g g

g g g g g

VA C P a X P a X P I P I P

wL K P rD (Eq. 48)

e e e eg g e ge e g

e e g e e

VA C P a X P a X P

wL K P rD (Eq. 49)

According to (Eq. 46)-(Eq. 49), the relationships between the physical gross

outputs and the values added can be derived, as shown in (Eq. 50) and (Eq. 51).

g g g g gg g eg g eVA P X P a X a X P (Eq. 50)

e e e e ee e ge e gVA P X Pa X a X P (Eq. 51)

Inserting the equation for ega from Table 4 into the (Eq. 48) and (Eq. 50), we can

derive (Eq. 52).

o

g e g g g g g g gg g eg g e g gI I wL rD P X P a X a X P K P (Eq. 52)

Combing (Eq. 49) and (Eq. 51), we can get

e e e e e e ee e ge e g e gwL rD P X Pa X a X P K P (Eq. 53)

(Eq. 52) and (Eq. 53) can be written in a matrix form as (Eq. 54).

ˆ ˆ ˆ

00 0 0

0 0 00

T

g

ogg e g g g g g g g g ggg eg

e e e e e e e e ege ee g

e

V XP XA P X P

K

XI I wL rD X P X P X Pa a

wL rD X P X P X Pa a K

X

(Eq. 54)

The price matrix can be solved as stated in (Eq. 55), in which E is a 2 2 unit

matrix.

Page 42: Copyright by Qiuying Lai 2018

32

1

ˆ

TP X E A V (Eq. 55)

Since there are two sectors, the monetary net output of each sector defined as the

sum of investment and consumption is not necessarily equal to the value added of that

sector, as shown in (Eq. 56) and (Eq. 57).

_ _g g g g g g g g e

g g g gg g ge e g

Y P C P I P I

P X P a X a X P

(Eq. 56)

0

e e e e e

e e e ee e eg g e

Y C P C P

P X P a X a X P

(Eq. 57)

There are two kinds of household consumptions, extraction consumption (e

C ) and

goods consumption (g

C ). By assuming there is no accumulated goods and extraction, i.e.

all the extracted nature and goods production will be used up, the consumption is no longer

the functions of wealth, but instead it is the residual of the net outputs respectively (Eq. 58)

-(Eq. 59).

ee

e

YC

P (Eq. 58)

_ _( )

g g g e g g

g

g

Y P I IC

P (Eq. 59)

For simplicity, I assume there are no elites as were modeled in HANDY. The total

population are the commoners in HANDY model (e.g., what Motesharrei et al. (2014)

termed “egalitarian”). The rate of change of commoner population is shown in (Eq. 37).

The birth rate ( hc

) is assumed constant. I change the death rate ( hc

) to be a

function of household extraction consumption instead of wealth consumption as in the

HANDY model (Eq. 60). Thus, by setting a maximum and a minimum death rate, the

population will decrease at the minimum death rate when the extraction consumption is

greater than the threshold consumption (hc

sx ). If the extraction consumption is less than

Page 43: Copyright by Qiuying Lai 2018

33

the threshold consumption the death rate will increase linearly as consumption declines

until it reaches the maximum “famine” death rate at 0e

C .

max(0,1 )( )ehc m M m

hc

C

sx (Eq. 60)

Nature extraction is no longer a function of population (or laborers) as in HANDY,

but instead it is a function of capital (Eq. 61) as in Jayaswal’s model (Jayaswal, 2017). I

assume capital is used for extraction and that this capital operates with a utilization rate (

eCU ). More capital allocated for extraction and higher capacity utilization lead to higher

extraction rates. Total gross nature extraction is defined by four terms multiplied by each

other: a technology parameter, k

, the quantity of capital used for extraction,e

K , the

capacity utilization of extraction capital, e

CU , and the amount of nature still residing in

the environment, h

y .

e k e e hX K CU y (Eq. 61)

The gross physical output of goods is also calculated by the capital, in a similar way

to calculate for the output as formulated in Goodwin’s and Keen’s model. Thus the gross

physical output of goods is linearly correlated with the production of goods capital and its

capacity utilization as in (Eq. 62), where gv is an assumed gross output to capital ratio.

g g

g

g

K CUX

v (Eq. 62)

The physical capital stock is increased by investment and decreased by

depreciation. Depreciation is equal to a constant depreciation rate ( ) multiplied by the

existing capital stock.

_e g e e

K I K (Eq. 63)

_g g g g

K I K (Eq. 64)

Page 44: Copyright by Qiuying Lai 2018

34

According to the income approach of GDP calculation, profit, , as stated in

(Eq. 65) and (Eq. 66), equals the total value added less the payment for total wages which

is the product of average personal wage (w ) and labor (L ), and less interest payment for

debt which is the product of interest rate ( r ) and debt ( D ), and less the value of

depreciation ( gKP ).

g g g g g gVA wL rD K P (Eq. 65)

e e e e e gVA wL rD K P (Eq. 66)

For each sector, I calculate a separate amount of labor: labor for goods (Eq. 67)

and labor for extraction (Eq. 68). The labor for goods is calculated by the gross output of

goods divided by the labor productivity for goods (g

a ), while the labor for extraction is

calculated by the total gross nature extraction divided by the labor productivity for

extraction (Eq. 69) which is assumed as the labor productivity for goods converted into

correct units by the prices of each sector.

g

g

g

XL

a (Eq. 67)

ee

e

XL

a (Eq. 68)

g g

e

e

a Pa

P (Eq. 69)

There is a limitation of the coding method we use that only the variables with

differential equations can be tracked during the iterations. To be able to access the past data

of capacity utilization ( CU ) and inventory coverage ( IC ), differential equations are

created to model them as a the first order delay which approximates their recent state

(Sterman, 2000). By setting the lagging time ( ) as 1, the values for the variables of last

iteration can be approximated. In reality, firms do have knowledge of historical utilization

and inventory data. As shown in (Eq. 70), the indicated capacity utilization for extraction

Page 45: Copyright by Qiuying Lai 2018

35

(,e indicated

CU ) is a function of perceived inventory coverage in reverse determined by a look

up table (Sterman, 2000). The capacity utilization of goods sector has a differential

equation in the same form (Eq. 71). The look up table used in this thesis is shown in Figure

10. The inventory coverage denotes how long on average a stock of `inventory’ (goods or

nature extraction) will remains in inventory before being consumed (Eq. 72).

Figure 10. Look up function for CU_indicated

,,

, , , ,

1( )

e

e perceivede indicated ee

CU e delay CU e delay

f CUICCU CU

CU

(Eq. 70)

, ,

, , , ,

1( )

g

g indicated g g perceivedg

CU g delay CU g delay

f CUCU CU IC

CU

(Eq. 71)

Perceived Inventory

Perceived Consumption of the InventoryIC (Eq. 72)

, ,

perceivedperceived

IC e delay

IC ICIC

(Eq. 73)

0

0.2

0.4

0.6

0.8

1

1.2

0 2 4 6 8 10 12 14 16

CU

_in

dic

ated

1/IC_perceived

Page 46: Copyright by Qiuying Lai 2018

36

The equations for the perceived consumption of each sector used in the inventory

coverage equation are shown in (Eq. 74) and (Eq. 75).

Perceived Consumption C e e eg g ee ea X a X (Eq. 74)

_ _Perceived Consumption C g g gg g ge e g g g ea X a X I I (Eq. 75)

There are also differential equations for price ( P ), net output (Y ), value added (

VA ), inventory coverage (IC ) and profit ( ) for each sector to model them with the first

order lag so that their values from the previous year can be used. As the equations stated

in (Eq. 76)-(Eq. 80), the change of each variable equals the present value of the variable

minus the previous value of the variable divided by the delay time which is set as 1 in this

study.

,

updated

P delay

P PP

(Eq. 76)

,

updated

Y delay

Y YY

(Eq. 77)

,

updated

VA delay

VA VAVA

(Eq. 78)

, ,

perceivedperceived

IC e delay

IC ICIC

(Eq. 79)

,

updated

delay

(Eq. 80)

The equations for investments are different when there are different debt

assumptions. IF we assume no private debt in the model, the investment for each sector

equals the profit of the sector (Eq. 81)-(Eq. 82).

g gI (Eq. 81)

e e

I (Eq. 82)

Page 47: Copyright by Qiuying Lai 2018

37

If we consider debt based on investment for each sector possibly being greater than

profit, the total monetary investment is determined by the investment function ( ) times

total value added. The investment function ( ) representing investment per value added is

a function of profit share (Eq. 83).

( )

g

VAVAIP

(Eq. 83)

In this thesis, the linear investment function (Eq. 84) with a constant slope (1 )

and intercept (0

) is adopted to calculate the total investment in (Eq. 83). A fixed

investment ratio for extraction sector (extp ) is used to separate the investment into the two

sectors.

0 1

( )VA

(Eq. 84)

By using the fixed investment ratio, the total economy-wide investment is allocated

to the two sectors in a fixed proportion (goods

p and extp ), which can be represented in

(Eq. 85) and (Eq. 86), where 1goods ext

p p .

g goodsI I p (Eq. 85)

e extI I p (Eq. 86)

The debt of each sector equals the investment minus profit as shown in (Eq. 87)

and (Eq. 88).

g g gD I (Eq. 87)

e e eD I (Eq. 88)

Page 48: Copyright by Qiuying Lai 2018

38

Chapter 3: Results and Discussions

3.1. COMPARE THE MODELS WITH AND WITHOUT DEBTS

Figure 11 and Figure 12 show the results of simulations with and without debts

using the same parameters (Appendix 1) and initial conditions (Appendix 2) except for the

debts and investments (Appendix 3). Both of the systems experience some fluctuations in

the beginning and the system without debts continues to fluctuate in a small range while

the system with debts eventually reaches to a steady state.

From Figure 11 (a) & (b), nature is extracted fast in the beginning, and the

regeneration and extraction tend to balance each other gradually. Eventually the simulation

with debts has less remaining nature.

For the population (Figure 11 (c) & (d)), the population grows fast in the beginning

and then swings at a certain level when no debt is considered, while in the other simulation,

the population becomes steady after experiencing a peak. The eventual population of the

simulation with debts is also lower than the other.

In Figure 11 (e), assuming no debts, the GDP grows fast in the beginning and then

fluctuates around a relatively high value. By contrast, in Figure 11 (f) the GDP will stay

steady after a peak if the model involves debts, and its steady state value is less than half

when the model does not allow debt accumulation.

From Figure 11 (g) & (h), the total capital curves have similar trends and the

capitals for each sector are very different. The total capital is near 180 in Figure 11 (g) and

about 75 in Figure 11 (h), and the goods and extraction capitals gradually get close and

respectively share half of the total capital. In Figure 11 (g), the extraction capital stays on

a low level than that for goods which reveals that the extraction sector has a smaller profit.

Figure 12 (a) & (b) show the main difference in these two simulations – the

simulation without debts has no debts accumulating while the simulation with debts has

Page 49: Copyright by Qiuying Lai 2018

39

accumulating debts as expected. Figure 12 (c) - (f) indicate the employment rates and profit

shares are similar in the two simulations, and the system with debts has fewer fluctuations

at the end. At steady state, the profit share of the goods sector is higher than that for the

extraction sector in both simulations.

Page 50: Copyright by Qiuying Lai 2018

40

(a) (b)

(c)

(e)

(d)

(f)

(g) (h)

Assuming no debt ( ) Assuming debt ( )

Figure 11. Comparing the results without debts (left) and the results with debts using

fixed investment ratio p_ext = 0.5 (right) [Part 1]

Page 51: Copyright by Qiuying Lai 2018

41

Figure 12. Comparing the results without debts (left) and the results with debts using

fixed investment ratio p_ext = 0.5 (right) [Part 2]

(a) (b)

(c)

(e)

(d)

(f)

Assuming debt ( ) Assuming no debt ( )

Page 52: Copyright by Qiuying Lai 2018

42

3.2. SIMULATIONS OF DIFFERENT INVESTMENT RATIO

Figure 13 shows the results of simulations with debts using the same parameters

(Appendix 1) and initial conditions (Appendix 2) as for the simulations in Figure 11 and

Figure 12 except for the investment ratios (extp & goods

p ) (Appendix 4). This scenario

tests the investment ratio for extraction sector (extp ) from 0 to 1. There are only reasonable

results, which means there won’t be indicators out of acceptable range (e.g. over 100%

employment rate) when extp is between 0.08 and 0.68.

When extp is set as 0.5, the investment for each sector equal to each other, leading

the GDP, nature and population to a steady state after the fluctuations in the beginning.

When extp deviates from 0.5, the imbalance between the investments makes the system

fluctuate more, which can be known by comparing Figure 13 (g) & (h) – when extp is

greater than 0.5 ( 0.68extp ), there is more investment for the extraction sector and thus

the capital in goods sector is less than the capital in extraction sector. When extp is less

than 0.5 ( 0.25extp ), more investment will be allocated to the goods sector and the

capital in goods sector is on average much greater than the extraction sector, but with

signifianct oscillation in the economy. For the debts, lower extp causes higher debts in

the long run, bbut the effect is nonlinear as more debt is accumulated for 0.25extp

than , but less than 0.50extp .

However, when the investment ratio for extraction sector is getting too low, e.g.

0.08extp , there won’t be sufficient capital for the extraction sector (Figure 13 (g)), and

the nature is depleted slowly (Figure 13 (a)). Since the death rate is calculated based on the

household consumption of extraction, the lack of available extraction will limit the growth

of population and even reduce the population (Figure 13 (c)). In this case, people will live

at a relatively low standard although the economics is pretty stable.

Page 53: Copyright by Qiuying Lai 2018

43

As the investment ratio for extraction rises from 0.08, the outputs such as

population, GDP, capital, etc. increase and begin to fluctuate significantly. As extp

approaches 0.5, the oscillations damp out at the expanse of lower GDP, population and

capital. Increasing extp greater than 0.5 to 0.68 there is again inscresing oscillations,

much like with 0.25extp , but with notably lower goods capital and more oscillatory

GDP. The increasing fluctuations when extp deviates 0.5 result from the inbalanced

invesements between the two sectors. When extp is too low, there will be not enough

capital to extract the nature and thus the population and economic development are limited.

Page 54: Copyright by Qiuying Lai 2018

44

(a)

(b)

(c)

(e)

(d)

(f)

(g)

(h)

Figure 13. Comparing the results with debts using fixed investment ratio method with

p_ext = 0.08, 0.25, 0.50, 0.68

Page 55: Copyright by Qiuying Lai 2018

45

Chapter 4: Conclusion

By comparing the results, it can be concluded that various investment modeling

strategies will make different effects on simulating the biophysical system and the

economics.

The models with or without debts have similar simulating results. Although the

trends are similar, some key variables like GDP and population result in a lower level when

the debts are allowed.

For the scenarios of fixed investment ratio, the system remains stable after a time

point when the investment ratio for extraction is around 0.5. However, the system

fluctuates when the investment ratio for extraction becomes higer or lower than 0.5,

because there is greater imbalance between the investments into the two sectors. In

addition, the results indicate that a more stable system usually has a lower GDP, and also

a lower population if the investment ratio for extraction is not too low.

These investment tests are intended to deepen the understanding of the effects of

investments on this model. Nontheless, this merged needs further development to mimic

the real world data and even provide some predictions.

There are more investment strategies that can be explored in the future. For

instance, there are different ways to allocate the investments into the two sectors such as

using discrete choice model or independent investments which are not included in this

thesis. Furthermore, different kinds of investment curves can be simulated in the model

including nonlinear or logic investment curves. Moreover, the model can be separated into

more than two sectors and involve more variables which will make the investment choices

more diverse.

Page 56: Copyright by Qiuying Lai 2018

46

Appendix

1. PARAMETERS

Symbol Value (no debt) Value (with debts)

k 0.025 0.025

h 100 100

deprec 0.03 0.03

e 0.01 0.01

g 0.01 0.01

0.03 0.03

hc 0.01 0.01

min 0.01 0.01

max 0.07 0.07

s 0.08 0.08

v 1.5 1.5

,e delayCU 1 1

,g delayCU 1 1

.e refIC 1 1

.g refIC 1 1

,perception delayIC 1 1

,e delayP 1 1

,g delayP 1 1

,e delay 1 1

,g delay 1 1

Table 7. Table of parameters

Page 57: Copyright by Qiuying Lai 2018

47

,e delayy 1 1

g,delayy 1 1

,e delayVA 1 1

,g delayVA 1 1

,nonlin xph 0.45 0.45

,ynonlinph 0 0

,snonlinph 0.13 0.13

,minnonlinph -0.05 -0.05

1 1.3 1.0

0 0 0

0.05 0.05

0 0

gga 0.3 0.3

gea 0.4 0.4

r 0.05 0.05

Table 8 continued

Page 58: Copyright by Qiuying Lai 2018

48

2. INITIAL CONDITIONS FOR VARIABLES

Variable name Symbol Initial value (no debt)

Initial value (with

debts)

Nature hy 100 100

population hcx 30 30

Labor

productivity of

goods ga 1 1

Price of goods gP 1 1

Price of extracton eP 1 1

Capital of goods

sector gK 5.4 5.4

Capital of

extraction sector eK 0.6 0.6

Physical gross

output of

extraction eX 1.275 1.275

Net output of

goods gY 1.632 1.632

Physical output of

goods gX 3.06 3.06

Net output of

extraction eY 1.044 1.044

Debt of goods

sector gD 0 5.4

Debt of extraction

sector eD 0 0.6

Labor of goods

sector gL 3.06 3.06

Labor

productivity of

extraction sector ea 1 1

Labor of

extraction sector eL 1.275 1.275

Wage w 0.308651 0.308651

Profit of goods

sector g 0.809629 0.539629

Table 7. Initial conditions for variables

Page 59: Copyright by Qiuying Lai 2018

49

Profit of

extraciton sector e 0.348371 0.318371

Value added of

goods sector gVA 1.9341 1.9341

Value added of

extraction sector eVA 0.7419 0.7419

Extraction

inventory hw 1.275 1.275

Goods inventory G 3.06 3.06

Capacity

utilization of

goods sector gCU 0.85 0.85

Capacity

utilization of

extraction sector eCU 0.85 0.85

Perceived

inventory

coverage of goods

sector ,g perceivedIC 1 1

Perceived

inventory

coverage of

extraction sector e,perceivedIC 1 1

Table 9 continued

Page 60: Copyright by Qiuying Lai 2018

50

3. CODE VERSION 1 # Code name: LaisThesisCodeFinalV1.py

# By Qiuying (Cho) Lai

import numpy as np

import matplotlib.pyplot as plt

from scipy.stats import logistic

import csv

from scipy.integrate import odeint

def add_parameters(params, **kwargs):

params.update(kwargs)

def write_params(f_params_path):

params = {}

add_parameters(params,

# depletion (production) factor

delta_k=25e-3,

# nature carrying capacity

lambda_h=100,

# depreciation rate of capital

gamma_deprec=0.03,

# Rate at which accumulated extraction depreciates

deprec_h=0.0,

# efficiency of use of extraction by extraction

eff_ext_by_k_ext=0.01, # 0.01

# efficiency of use of extraction by goods capital

eff_ext_by_k_g=0.01,

# Birth rate of the population

beta_hc=0.03,

# Regeneration rate of nature

gamma_hc=1e-2,

# normal minimum and maximum death rate

alpha_min=0.01,

alpha_max=0.07,

# consumption per person when not in famine

s=8 * 1e-2,

# minimum required consumption per capita before famine starts

rho=10e-1,

# minimum required consumption per capita before famine starts

rho_k=0.05,

# accelerator (capital/output ratio)

v=1.5,

# rate of increase in labor productivity (for goods and extraction sector)

alpha_g=0.0,

# The time lag delay to use for looking up past Capacity Utilization values

cu_ext_delay=1.0,

cu_g_delay=1.0,

ic_ext_ref = 1.0,

ic_g_ref = 1.0,

ic_perception_delay = 1.0,

p_e_delay = 1.0,

p_g_delay = 1.0,

Page 61: Copyright by Qiuying Lai 2018

51

profit_e_delay = 1.0,

profit_g_delay = 1.0,

y_e_delay = 1.0,

y_g_delay = 1.0,

va_g_delay = 1.0,

va_e_delay= 1.0,

# Values for different Constants in the Phillips curves

# linear

ph_lin_interc=5.0,

ph_lin_s=-3.25,

# nonlinear

ph_nonlin_xval=0.45,

ph_nonlin_yval=0.0,

ph_nonlin_s=0.13, # 1.6

ph_nonlin_min=-0.05,

# logistic

ph_log_min=-0.05,

ph_log_max=0.3,

ph_log_s=2.5,

# Values for different Constants in the investment curves

inv_xval=3 * 0.03333,

inv_yval=3 * 0.03333, # inv_xval,

inv_s=2.5,

inv_min=0.0,

profit_share_nom=0.1,

inv_kappa1=1.3, # 1.02 0.98 per King to enable investment > profits above nominal profit

# share (profit_share_nom)

inv_kappa0=0.0, # profit_share_inverse_nom * (1 - inv_kappa1),

# Investment function using a logistic curve

# Invest_func = plogis(employment,location=ph_mlogistic,scale=ph_slogistic,

# log=FALSE)*ph_func_max

# Invest_func = plogis(profit_share,location=m,scale=inv_slogistic,log=FALSE)*invest_func_max

inv_slogistic=0.02,

# val = 0.02 describes sharpness of curve (lower values, quicker change in function from

# lowest to highest value)

invest_func_max=0.31,

# val = 0.25 maximum investment as a fraction of profits (logistic function has leveled off)

invest_eq_profits=0.1,

# val = 0.1 value where we assume investment = profits (> value: investment is > profits <

# value: investment < profits)

inv_mlogistic=0.11,

# m=0.1078775 the value of ("x" = profit share) the logistic at its inflection point

# Fraction of investment going to extraction (versus industrial output)

f_min=0.2, # nominally 0.05

f_max=1, # nominally ~ 0.4

# Larger numbers for "f_s" mean that the fraction of capital allocated to resources

# for large amounts of resources left is small and that the fraction allocated as

# resources get small increases at a faster rate.

f_s=7,

xi=0.05,

phi=0.0,

# a_ee=0.1,

a_gg=0.3,

a_ge=0.4,

# a_eg=0.03

)

# write the parameters

with open(f_params_path, 'w', newline='') as f_params:

writer_params = csv.writer(f_params)

Page 62: Copyright by Qiuying Lai 2018

52

for key, value in params.items():

writer_params.writerow([key, value])

f_params.close()

def write_initials(f_params_path, f_initials_path):

read_params(f_params_path)

initials = {}

x_hc_o = 30

a_g_o = 1

price_g_o = 1

price_e_o = 1

y_h_o = lambda_h

cu_e_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_e_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_e_o = np.interp(ic_ext_ref, cu_e_x, cu_e_y)

cu_g_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_g_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_g_o = np.interp(ic_g_ref, cu_g_x, cu_g_y)

k_tot_o = 0.2*x_hc_o

k_e_o = k_tot_o*0.1

k_g_o = k_tot_o - k_e_o

x_e_o = delta_k * k_e_o * y_h_o * cu_e_o

x_g_o = k_g_o * cu_g_o / v

matrix_xhat_o = np.matrix([[x_g_o, 0], [0, x_e_o]])

matrix_x_o = np.matrix([[x_g_o], [x_e_o]])

matrix_price_o = np.matrix([[price_g_o], [price_e_o]])

matrix_pricehat_o = np.matrix([[price_g_o, 0], [0, price_e_o]])

matrix_deprec_o = np.matrix([[gamma_deprec * k_g_o / x_g_o, 0], [gamma_deprec * k_e_o / x_e_o, 0]])

a_ee = eff_ext_by_k_ext/(delta_k * y_h_o)

a_eg = eff_ext_by_k_g * v

matrix_atilde_o = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

matrix_vtilde_o = np.matmul(np.matmul(matrix_xhat_o, (np.identity(2)-matrix_deprec_o-

matrix_atilde_o.transpose())),

matrix_price_o)

va_g_o = matrix_vtilde_o.item(0)

va_e_o = matrix_vtilde_o.item(1)

va_tot_o = va_g_o + va_e_o

d_e_o = k_e_o

d_g_o = k_g_o

d_tot_o = d_g_o + d_e_o

inv_g_o = price_g_o * gamma_deprec * k_g_o

inv_e_o = price_g_o * gamma_deprec * k_e_o

inv_tot_o = inv_g_o + inv_e_o

l_g_o = x_g_o/a_g_o

a_e_o = a_g_o * price_g_o / price_e_o

l_e_o = x_e_o/a_e_o

l_tot_o = l_g_o + l_e_o

w_o = 0.5 * va_tot_o / l_tot_o

matrix_a_o = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v + 1/price_e_o*inv_tot_o/x_g_o), a_ee]])

matrix_y_o = np.matmul(matrix_pricehat_o, matrix_x_o) - np.matmul(np.matmul(matrix_pricehat_o, matrix_a_o),

matrix_x_o)

y_g_o = matrix_y_o.item(0)

y_e_o = matrix_y_o.item(1)

Page 63: Copyright by Qiuying Lai 2018

53

r_o = xi

profit_g_o = price_g_o*x_g_o - price_g_o*a_gg*x_g_o - price_e_o*(eff_ext_by_k_g * v +

1/price_e_o*inv_tot_o/x_g_o)*x_g_o - w_o*l_g_o -\

r_o*d_g_o - price_g_o*gamma_deprec*k_g_o

profit_e_o = price_e_o*x_e_o - price_e_o*a_ee*x_e_o - price_g_o*a_ge*x_e_o - w_o*l_e_o -\

r_o*d_e_o - price_g_o*gamma_deprec*k_e_o

profit_tot_o = profit_g_o + profit_e_o

w_h_o = x_e_o/(1/cu_ext_delay)

g_o = x_g_o/(1/cu_g_delay)

ic_e_perceived_o = ic_ext_ref

ic_g_perceived_o = ic_g_ref

add_parameters(initials,

r_o=r_o,

y_h_o=y_h_o,

x_hc_o=x_hc_o,

a_g_o=a_g_o,

price_g_o=price_g_o,

price_e_o=price_e_o,

k_g_o=k_g_o,

k_e_o=k_e_o,

k_tot_o=k_tot_o,

x_e_o=x_e_o,

y_g_o=y_g_o,

x_g_o=x_g_o,

y_e_o=y_e_o,

# y_tot_o=y_tot_o,

# x_tot_o=x_tot_o,

d_g_o=d_g_o,

d_e_o=d_e_o,

d_tot_o=d_tot_o,

l_g_o=l_g_o,

a_e_o=a_e_o,

l_e_o=l_e_o,

l_tot_o=l_tot_o,

w_o=w_o,

profit_g_o=profit_g_o,

profit_e_o=profit_e_o,

profit_tot_o=profit_tot_o,

va_g_o=va_g_o,

va_e_o=va_e_o,

w_h_o=w_h_o,

g_o=g_o,

cu_g_o=cu_g_o,

cu_e_o=cu_e_o,

ic_e_perceived_o=ic_e_perceived_o,

ic_g_perceived_o=ic_g_perceived_o

)

with open(f_initials_path, 'w', newline='') as f_initials:

writer_initials = csv.writer(f_initials)

for key, value in initials.items():

writer_initials.writerow([key, value])

f_initials.close()

def write_initials_nodebt(f_params_path, f_initials_path):

read_params(f_params_path)

Page 64: Copyright by Qiuying Lai 2018

54

initials = {}

x_hc_o = 30

a_g_o = 1

price_g_o = 1

price_e_o = 1

y_h_o = lambda_h

cu_e_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_e_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_e_o = np.interp(ic_ext_ref, cu_e_x, cu_e_y)

cu_g_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_g_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_g_o = np.interp(ic_g_ref, cu_g_x, cu_g_y)

k_tot_o = 0.2*x_hc_o

k_e_o = k_tot_o*0.1

k_g_o = k_tot_o - k_e_o

x_e_o = delta_k * k_e_o * y_h_o * cu_e_o

x_g_o = k_g_o * cu_g_o / v

matrix_xhat_o = np.matrix([[x_g_o, 0], [0, x_e_o]])

matrix_x_o = np.matrix([[x_g_o], [x_e_o]])

matrix_price_o = np.matrix([[price_g_o], [price_e_o]])

matrix_pricehat_o = np.matrix([[price_g_o, 0], [0, price_e_o]])

matrix_deprec_o = np.matrix([[gamma_deprec * k_g_o / x_g_o, 0], [gamma_deprec * k_e_o / x_e_o, 0]])

a_ee = eff_ext_by_k_ext/(delta_k * y_h_o)

a_eg = eff_ext_by_k_g * v

matrix_atilde_o = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

matrix_vtilde_o = np.matmul(np.matmul(matrix_xhat_o, (np.identity(2)-matrix_deprec_o-

matrix_atilde_o.transpose())),

matrix_price_o)

va_g_o = matrix_vtilde_o.item(0)

va_e_o = matrix_vtilde_o.item(1)

va_tot_o = va_g_o + va_e_o

d_e_o = 0

d_g_o = 0

d_tot_o = d_g_o + d_e_o

inv_g_o = price_g_o * gamma_deprec * k_g_o

inv_e_o = price_g_o * gamma_deprec * k_e_o

inv_tot_o = inv_g_o + inv_e_o

l_g_o = x_g_o/a_g_o

a_e_o = a_g_o * price_g_o / price_e_o

l_e_o = x_e_o/a_e_o

l_tot_o = l_g_o + l_e_o

w_o = 0.5 * va_tot_o / l_tot_o

matrix_a_o = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v + 1/price_e_o*inv_tot_o/x_g_o), a_ee]])

matrix_y_o = np.matmul(matrix_pricehat_o, matrix_x_o) - np.matmul(np.matmul(matrix_pricehat_o, matrix_a_o),

matrix_x_o)

y_g_o = matrix_y_o.item(0)

y_e_o = matrix_y_o.item(1)

r_o = xi

profit_g_o = price_g_o*x_g_o - price_g_o*a_gg*x_g_o - price_e_o*(eff_ext_by_k_g * v +

1/price_e_o*inv_tot_o/x_g_o)*x_g_o - w_o*l_g_o -\

r_o*d_g_o - price_g_o*gamma_deprec*k_g_o

profit_e_o = price_e_o*x_e_o - price_e_o*a_ee*x_e_o - price_g_o*a_ge*x_e_o - w_o*l_e_o -\

Page 65: Copyright by Qiuying Lai 2018

55

r_o*d_e_o - price_g_o*gamma_deprec*k_e_o

profit_tot_o = profit_g_o + profit_e_o

w_h_o = x_e_o/(1/cu_ext_delay)

g_o = x_g_o/(1/cu_g_delay)

ic_e_perceived_o = ic_ext_ref

ic_g_perceived_o = ic_g_ref

add_parameters(initials,

r_o=r_o,

y_h_o=y_h_o,

x_hc_o=x_hc_o,

a_g_o=a_g_o,

price_g_o=price_g_o,

price_e_o=price_e_o,

k_g_o=k_g_o,

k_e_o=k_e_o,

k_tot_o=k_tot_o,

x_e_o=x_e_o,

y_g_o=y_g_o,

x_g_o=x_g_o,

y_e_o=y_e_o,

# y_tot_o=y_tot_o,

# x_tot_o=x_tot_o,

d_g_o=d_g_o,

d_e_o=d_e_o,

d_tot_o=d_tot_o,

l_g_o=l_g_o,

a_e_o=a_e_o,

l_e_o=l_e_o,

l_tot_o=l_tot_o,

w_o=w_o,

profit_g_o=profit_g_o,

profit_e_o=profit_e_o,

profit_tot_o=profit_tot_o,

va_g_o=va_g_o,

va_e_o=va_e_o,

w_h_o=w_h_o,

g_o=g_o,

cu_g_o=cu_g_o,

cu_e_o=cu_e_o,

ic_e_perceived_o=ic_e_perceived_o,

ic_g_perceived_o=ic_g_perceived_o

)

with open(f_initials_path, 'w', newline='') as f_initials:

writer_initials = csv.writer(f_initials)

for key, value in initials.items():

writer_initials.writerow([key, value])

f_initials.close()

# read the parameters from csv file as global variables

def read_params(f_params_path):

with open(f_params_path, 'r', newline='') as f_params:

reader_params = csv.reader(f_params)

mydict_params = {row[0]: float(row[1]) for row in reader_params}

globals().update(mydict_params)

f_params.close()

# read the initial values from csv file as global variables

def read_initials(f_initials_path):

with open(f_initials_path, 'r', newline='') as f_initials:

reader_initials = csv.reader(f_initials)

mydict_initials = {row[0]: float(row[1]) for row in reader_initials}

Page 66: Copyright by Qiuying Lai 2018

56

globals().update(mydict_initials)

f_initials.close()

# plot the time series in separate figure

def plot_separately(times, plot_item, plot_path):

font = 20

tickfont = 15

fig_now = plt.figure(figsize=(8, 5))

if type(plot_item[1]) is dict:

for k,v in plot_item[1].items():

plt.plot(times, v, '-', label=k)

plt.legend(fontsize=tickfont, loc=1)

else:

plt.plot(times, plot_item[1], '-', label=plot_item[0])

plt.xlabel('time', size=font)

plt.ylabel(plot_item[0], size=font)

plt.tick_params(axis='x', labelsize=tickfont)

plt.tick_params(axis='y', labelsize=tickfont)

plt.tight_layout()

fig_now.savefig(plot_path)

plt.close()

return

# Goodwin-HANDY model from t0 to tfinal ([t0, tfinal)) with certain interval (it)

def goodwin_handy_king(t0, tfinal, it):

def goodwinhandy_fix_inv_ratio(y, t, *parms):

a_g = y[0] # Labor Productivity

w_h = y[1] # Wealth

k_g = y[2] # Total Capital (for (i) extraction and (ii) industrial output)

x_hc = y[3] # Total Population

w = y[4] # Real wages

y_h = y[5] # Available Nature

d_g = y[6] # Debt

cu_e = y[7] # Capacity Utilization of extraction capital

ic_e_perceived = y[8] # Perceived inventory coverage

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract - max(CU_extract_y))

p_e = y[9] # "expected" price of wealth (or extracted nature)

cu_g = y[10]

ic_g_perceived = y[11]

g = y[12]

k_e = y[13]

d_e = y[14]

p_g = y[15]

profit_e = y[16]

profit_g = y[17]

y_e = y[18]

y_g = y[19]

va_e = y[20]

va_g = y[21]

d_tot = d_e + d_g

va_tot = va_e + va_g

y_tot = y_e + y_g

xi_now = xi

phi_now = phi

r = xi_now + phi_now * d_tot / va_tot

k_tot = k_g + k_e

profit_rate_g = profit_g/(p_g*k_g)

profit_rate_e = profit_e/(p_g*k_e)

profit_rate = (profit_g+profit_e)/(p_g*k_tot)

Page 67: Copyright by Qiuying Lai 2018

57

profit_share_g = profit_g/va_g

profit_share_e = profit_e/va_e

profit_share = (profit_g+profit_e)/va_tot

inv_func = max(0, inv_kappa0 + inv_kappa1 * profit_share)

inv_g = max(0, inv_func * va_tot * (1-inv_ratio_e))

inv_e = max(0, inv_func * va_tot * inv_ratio_e)

nature_extraction = delta_k * y_h * k_e * cu_e

x_g = k_g * cu_g / v

x_e = nature_extraction

matrix_x = np.matrix([[x_g], [x_e]])

matrix_xhat = np.matrix([[x_g, 0], [0, x_e]])

a_ee = eff_ext_by_k_ext / (delta_k * y_h)

a_eg = eff_ext_by_k_g * v + 1 / p_e * (inv_e + inv_g) / x_g

matrix_a = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

a_e = a_g*p_g/p_e

l_g = x_g/a_g

l_e = x_e/a_e

l_tot = l_g + l_e

employment_rate = l_tot/x_hc

w_g = w*l_g

w_e = w*l_e

w_tot = w_g + w_e

matrix_phat = np.matrix([[p_g, 0], [0, p_e]])

matrix_y = np.matmul(matrix_phat, matrix_x) - np.matmul(np.matmul(matrix_phat, matrix_a), matrix_x)

matrix_inv = np.matrix([[inv_g+inv_e], [0]])

matrix_c = matrix_y - matrix_inv

c_g = matrix_c.item(0)

c_e = matrix_c.item(1)

v_g_now = (profit_g + w_g + r * d_g + inv_g + inv_e)

v_e_now = (profit_e + w_e + r * d_e)

matrix_v = np.matrix([[v_g_now], [v_e_now]])

matrix_deprec = np.matrix([[gamma_deprec * k_g / x_g, 0], [gamma_deprec * k_e / x_e, 0]])

matrix_atilde = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v), a_ee]])

matrix_solve_price = np.matmul(np.linalg.inv(np.matmul(matrix_xhat, (np.identity(2) - matrix_deprec -

matrix_atilde.transpose()))),

matrix_v)

p_g_update = matrix_solve_price.item(0)

p_e_update = matrix_solve_price.item(1)

y_g_update = matrix_y.item(0)

y_e_update = matrix_y.item(1)

profit_g_update = p_g_update*x_g - p_g_update*a_gg*x_g - p_e_update*a_eg*x_g - w_g - \

r*d_g - p_g_update*gamma_deprec*k_g

profit_e_update = p_e_update * x_e - p_e_update * a_ee * x_e - p_g_update * a_ge * x_e - \

w_e - r * d_e - p_g_update * gamma_deprec * k_e

va_g_update = profit_g_update + w_g + r*d_g + p_g_update*gamma_deprec*k_g

va_e_update = profit_e_update + w_e + r*d_e + p_g_update*gamma_deprec*k_e

c_hc = c_e / p_e

v_c = 1 - (c_hc / (s * x_hc))

# Death rate of commoners and elites incluing the concept of famine ###

alpha_hc = alpha_min + ((np.fmax(0, v_c)) * (alpha_max - alpha_min))

matrix_intermediate = np.matmul(matrix_a, matrix_x)

intermediate_g = matrix_intermediate.item(0)

Page 68: Copyright by Qiuying Lai 2018

58

intermediate_e = matrix_intermediate.item(1)

targeted_consumption = c_hc + intermediate_e

ic_e = (w_h/cu_ext_delay)/targeted_consumption

cu_e_x = [0,0.25,0.50,0.75,1.00,1.25,1.50,1.75,2.00,2.25,1000.50]

cu_e_y = [0,0.30,0.55,0.75,0.85,0.90,0.94,0.98,0.99,1.00,1.0]

cu_e_1 = np.interp((1 / ic_e_perceived), cu_e_x, cu_e_y)

cu_e_indicated = cu_e_1

c_g_physical = c_g/p_g

targeted_consumption_g = c_g_physical + intermediate_g + (inv_g + inv_e)/p_g

ic_g = (g / cu_g_delay) / targeted_consumption_g

cu_g_1 = np.interp((1 / ic_g_perceived), cu_e_x, cu_e_y)

cu_g_indicated = cu_g_1

# targeted_consumption_lag = C_hc_lag + wealth_to_operate_K_goods_lag +

##########################

##########STATE EQUATIONS############

# WEALTH

w_h_dot = nature_extraction - c_hc - intermediate_e

# Change in Wealth when wealth must to go (i) consumption, (2) depreciation, (3) "power" input (possibly)

# and (4) wealth (in nature units) consumed per unit of investment (in "$/time" units)

# LABOR PRODUCTIVITY

a_dot = alpha_g * a_g # Labor productivity

# CAPITAL

k_g_dot = inv_g/p_g - gamma_deprec * k_g

k_e_dot = inv_e/p_g - gamma_deprec * k_e

# POPULATION

x_hc_dot = beta_hc * x_hc - alpha_hc * x_hc # Change in Commoner Population

# WAGES

w_dot = w * ((ph_nonlin_yval - ph_nonlin_min) * np.exp(

(ph_nonlin_s / (ph_nonlin_yval - ph_nonlin_min)) * (employment_rate - ph_nonlin_xval)) +

ph_nonlin_min)

# w_dot = ph_func * w # Change in Real Wage according to the Phillips Curve

# NATURE

y_h_dot = gamma_hc * y_h * (lambda_h - y_h) - nature_extraction # Change in Available Nature

# DEBT

d_e_dot = inv_e - profit_e

d_g_dot = inv_g - profit_g

## CU_EXTRACT (actual)

cu_e_dot = (cu_e_indicated - cu_e) / cu_ext_delay

cu_g_dot = (cu_g_indicated - cu_g) / cu_g_delay

## Perceived Inventory Coverage

ic_e_perceived_dot = (ic_e - ic_e_perceived) / ic_perception_delay

ic_g_perceived_dot = (ic_g - ic_g_perceived) / ic_perception_delay

p_e_dot = (p_e_update - p_e) / p_e_delay

p_g_dot = (p_g_update - p_g) / p_g_delay

profit_e_dot = (profit_e_update - profit_e) / profit_e_delay

profit_g_dot = (profit_g_update - profit_g) / profit_g_delay

g_dot = x_g - c_g_physical - (inv_g+inv_e)/p_g - intermediate_g

y_e_dot = (y_e_update - y_e)/y_e_delay

y_g_dot = (y_g_update - y_g) / y_g_delay

va_e_dot = (va_e_update - va_e) / va_e_delay

va_g_dot = (va_g_update - va_g) / va_g_delay

return [a_dot, w_h_dot, k_g_dot, x_hc_dot, w_dot, y_h_dot, d_g_dot, cu_e_dot, ic_e_perceived_dot,

Page 69: Copyright by Qiuying Lai 2018

59

p_e_dot, cu_g_dot, ic_g_perceived_dot, g_dot, k_e_dot, d_e_dot, p_g_dot, profit_e_dot, profit_g_dot,

y_e_dot, y_g_dot, va_e_dot, va_g_dot]

def run_fix_inv_ratio(inv_ratio_e_input):

read_params('\params_final.csv')

read_initials('\initials_final.csv')

global inv_ratio_e

inv_ratio_e = inv_ratio_e_input

yini = [a_g_o, w_h_o, k_g_o, x_hc_o, w_o, y_h_o, d_g_o, cu_e_o, ic_e_perceived_o, price_e_o, cu_g_o,

ic_g_perceived_o,

g_o, k_e_o, d_e_o, price_g_o, profit_e_o, profit_g_o, y_e_o, y_g_o, va_e_o, va_g_o]

times = np.linspace(t0, tfinal, (tfinal / it))

out = odeint(goodwinhandy_fix_inv_ratio, yini, times)

#######################

# OUTPUT FOR DIFFERENT VARIABLES###############

#######################

labor_productivity = out[:, 0]

wealth = out[:, 1]

# real_output = out[,4]

k_g = out[:, 2] # total capital

population = out[:, 3]

w = out[:, 4]

nature = out[:, 5]

d_g = out[:, 6]

cu_e = out[:, 7]

ic_e_perceived = out[:, 8]

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract-max(CU_extract_y))

p_e = out[:, 9]

cu_g = out[:, 10]

ic_g_perceived = out[:, 11]

g = out[:, 12]

k_e = out[:, 13]

d_e = out[:, 14]

p_g = out[:, 15]

profit_e = out[:, 16]

profit_g = out[:, 17]

y_e = out[:, 18]

y_g = out[:, 19]

va_e = out[:, 20]

va_g = out[:, 21]

nature_extraction = delta_k * nature * k_e * cu_e

x_e = nature_extraction

x_g = k_g * cu_g / v

y_tot = y_g + y_e

va_tot = va_g + va_e

capital = k_e + k_g

d_tot = d_g + d_e

debt_ratio = d_tot / va_tot

debt_ratio_g = d_g / va_g

debt_ratio_e = d_e / va_e

profit_tot = profit_g+profit_e

inv_e = inv_ratio_e * np.fmax(np.array([0] * int(tfinal/it)), np.array([inv_kappa0] * int(tfinal/it)) +

inv_kappa1 * profit_tot / va_tot) * va_tot

inv_g = (1-inv_ratio_e) * np.fmax(np.array([0] * int(tfinal/it)), np.array([inv_kappa0] * int(tfinal/it)) +

inv_kappa1 * profit_tot / va_tot) * va_tot

inv_tot = inv_e + inv_g

l_g = x_g / labor_productivity

labor_productivity_e = labor_productivity*p_g/p_e

l_e = x_e / labor_productivity_e

Page 70: Copyright by Qiuying Lai 2018

60

l_tot = l_g + l_e

employment_rate = l_tot/population

plot_dict = {

'population (person)': population,

'nature (nature)': nature,

'investment (money per time)': {'total': inv_tot, 'extraction': inv_e, 'goods': inv_g},

'investment share (%)': {'total': inv_tot/y_tot*100, 'extraction': inv_e/y_e*100, 'goods': inv_g/y_g*100},

'debts (money)': {'total': d_tot, 'extraction': d_e, 'goods': d_g},

'employment rate (%)': employment_rate*100,

'profit (money per time)': {'total': profit_tot, 'extraction': profit_e, 'goods': profit_g},

'profit share (%)': {'total': profit_tot/va_tot *100, 'extraction': profit_e/va_e*100,

'goods': profit_g/va_g*100},

'capital (goods)': {'total': (k_g+k_e),'extraction': k_e, 'goods': k_g},

'GDP (money per time)': va_tot,

}

for plot_k, plot_v in plot_dict.items():

plot_separately(times=times, plot_item=[plot_k, plot_v],

plot_path='.\LaisThesisCodeFinalv1_'+plot_k+'.png')

run_fix_inv_ratio(0.5)

plt.close('all')

def goodwin_handy_king_nodebt(t0, tfinal, it):

def goodwinhandy_fix_inv_ratio_nodebt(y, t, *parms):

a_g = y[0] # Labor Productivity

w_h = y[1] # Wealth

k_g = y[2] # Total Capital (for (i) extraction and (ii) industrial output)

x_hc = y[3] # Total Population

w = y[4] # Real wages

y_h = y[5] # Available Nature

d_g = y[6] # Debt

cu_e = y[7] # Capacity Utilization of extraction capital

ic_e_perceived = y[8] # Perceived inventory coverage

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract - max(CU_extract_y))

p_e = y[9] # "expected" price of wealth (or extracted nature)

cu_g = y[10]

ic_g_perceived = y[11]

g = y[12]

k_e = y[13]

d_e = y[14]

p_g = y[15]

profit_e = y[16]

profit_g = y[17]

y_e = y[18]

y_g = y[19]

va_e = y[20]

va_g = y[21]

d_tot = d_e + d_g

va_tot = va_e + va_g

y_tot = y_e + y_g

xi_now = xi

phi_now = phi

r = xi_now + phi_now * d_tot / va_tot

k_tot = k_g + k_e

profit_rate_g = profit_g/(p_g*k_g)

profit_rate_e = profit_e/(p_g*k_e)

profit_rate = (profit_g+profit_e)/(p_g*k_tot)

profit_share_g = profit_g/va_g

profit_share_e = profit_e/va_e

Page 71: Copyright by Qiuying Lai 2018

61

profit_tot = profit_g+profit_e

profit_share = profit_tot/va_tot

inv_func = max(0, inv_kappa0 + inv_kappa1 * profit_share)

inv_g = max(0, profit_g)

inv_e = max(0, profit_e)

nature_extraction = delta_k * y_h * k_e * cu_e

x_g = k_g * cu_g / v

x_e = nature_extraction

matrix_x = np.matrix([[x_g], [x_e]])

matrix_xhat = np.matrix([[x_g, 0], [0, x_e]])

a_ee = eff_ext_by_k_ext / (delta_k * y_h)

a_eg = eff_ext_by_k_g * v + 1 / p_e * (inv_e + inv_g) / x_g

matrix_a = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

a_e = a_g*p_g/p_e

l_g = x_g/a_g

l_e = x_e/a_e

l_tot = l_g + l_e

employment_rate = l_tot/x_hc

w_g = w*l_g

w_e = w*l_e

w_tot = w_g + w_e

matrix_phat = np.matrix([[p_g, 0], [0, p_e]])

matrix_y = np.matmul(matrix_phat, matrix_x) - np.matmul(np.matmul(matrix_phat, matrix_a), matrix_x)

matrix_inv = np.matrix([[inv_g+inv_e], [0]])

matrix_c = matrix_y - matrix_inv

c_g = matrix_c.item(0)

c_e = matrix_c.item(1)

v_g_now = (profit_g + w_g + r * d_g + inv_g + inv_e)

v_e_now = (profit_e + w_e + r * d_e)

matrix_v = np.matrix([[v_g_now], [v_e_now]])

matrix_deprec = np.matrix([[gamma_deprec * k_g / x_g, 0], [gamma_deprec * k_e / x_e, 0]])

matrix_atilde = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v), a_ee]])

matrix_solve_price = np.matmul(np.linalg.inv(np.matmul(matrix_xhat, (np.identity(2) - matrix_deprec -

matrix_atilde.transpose()))),

matrix_v)

p_g_update = matrix_solve_price.item(0)

p_e_update = matrix_solve_price.item(1)

y_g_update = matrix_y.item(0)

y_e_update = matrix_y.item(1)

profit_g_update = p_g_update*x_g - p_g_update*a_gg*x_g - p_e_update*a_eg*x_g - w_g - \

r*d_g - p_g_update*gamma_deprec*k_g

profit_e_update = p_e_update * x_e - p_e_update * a_ee * x_e - p_g_update * a_ge * x_e - \

w_e - r * d_e - p_g_update * gamma_deprec * k_e

va_g_update = profit_g_update + w_g + r*d_g + p_g_update*gamma_deprec*k_g

va_e_update = profit_e_update + w_e + r*d_e + p_g_update*gamma_deprec*k_e

c_hc = c_e / p_e

v_c = 1 - (c_hc / (s * x_hc))

# Death rate of commoners and elites incluing the concept of famine ###

alpha_hc = alpha_min + ((np.fmax(0, v_c)) * (alpha_max - alpha_min))

matrix_intermediate = np.matmul(matrix_a, matrix_x)

intermediate_g = matrix_intermediate.item(0)

intermediate_e = matrix_intermediate.item(1)

Page 72: Copyright by Qiuying Lai 2018

62

targeted_consumption = c_hc + intermediate_e

ic_e = (w_h/cu_ext_delay)/targeted_consumption

cu_e_x = [0,0.25,0.50,0.75,1.00,1.25,1.50,1.75,2.00,2.25,1000.50]

cu_e_y = [0,0.30,0.55,0.75,0.85,0.90,0.94,0.98,0.99,1.00,1.0]

cu_e_1 = np.interp((1 / ic_e_perceived), cu_e_x, cu_e_y)

cu_e_indicated = cu_e_1

c_g_physical = c_g/p_g

targeted_consumption_g = c_g_physical + intermediate_g + (inv_g + inv_e)/p_g

ic_g = (g / cu_g_delay) / targeted_consumption_g

cu_g_1 = np.interp((1 / ic_g_perceived), cu_e_x, cu_e_y)

cu_g_indicated = cu_g_1

# targeted_consumption_lag = C_hc_lag + wealth_to_operate_K_goods_lag +

##########################

##########STATE EQUATIONS############

# WEALTH

w_h_dot = nature_extraction - c_hc - intermediate_e

# Change in Wealth when wealth must to go (i) consumption, (2) depreciation, (3) "power" input (possibly)

# and (4) wealth (in nature units) consumed per unit of investment (in "$/time" units)

# LABOR PRODUCTIVITY

a_dot = alpha_g * a_g # Labor productivity

# CAPITAL

k_g_dot = inv_g/p_g - gamma_deprec * k_g

k_e_dot = inv_e/p_g - gamma_deprec * k_e

# OUTPUT

# Y_dot = ((Investment/Y/v) - gamma_deprec)*Y # Change in Output

# POPULATION

x_hc_dot = beta_hc * x_hc - alpha_hc * x_hc # Change in Commoner Population

# WAGES

w_dot = w * ((ph_nonlin_yval - ph_nonlin_min) * np.exp(

(ph_nonlin_s / (ph_nonlin_yval - ph_nonlin_min)) * (employment_rate - ph_nonlin_xval)) +

ph_nonlin_min)

# w_dot = ph_func * w # Change in Real Wage according to the Phillips Curve

# NATURE

y_h_dot = gamma_hc * y_h * (lambda_h - y_h) - nature_extraction # Change in Available Nature

# DEBT

d_e_dot = inv_e - profit_e

d_g_dot = inv_g - profit_g

## CU_EXTRACT (actual)

cu_e_dot = (cu_e_indicated - cu_e) / cu_ext_delay

cu_g_dot = (cu_g_indicated - cu_g) / cu_g_delay

## Perceived Inventory Coverage

ic_e_perceived_dot = (ic_e - ic_e_perceived) / ic_perception_delay

ic_g_perceived_dot = (ic_g - ic_g_perceived) / ic_perception_delay

p_e_dot = (p_e_update - p_e) / p_e_delay

p_g_dot = (p_g_update - p_g) / p_g_delay

profit_e_dot = (profit_e_update - profit_e) / profit_e_delay

profit_g_dot = (profit_g_update - profit_g) / profit_g_delay

g_dot = x_g - c_g_physical - (inv_g+inv_e)/p_g - intermediate_g

y_e_dot = (y_e_update - y_e)/y_e_delay

y_g_dot = (y_g_update - y_g) / y_g_delay

va_e_dot = (va_e_update - va_e) / va_e_delay

Page 73: Copyright by Qiuying Lai 2018

63

va_g_dot = (va_g_update - va_g) / va_g_delay

return [a_dot, w_h_dot, k_g_dot, x_hc_dot, w_dot, y_h_dot, d_g_dot, cu_e_dot, ic_e_perceived_dot,

p_e_dot, cu_g_dot, ic_g_perceived_dot, g_dot, k_e_dot, d_e_dot, p_g_dot, profit_e_dot, profit_g_dot,

y_e_dot, y_g_dot, va_e_dot, va_g_dot]

def run_fix_inv_ratio_nodebt():

read_params('\params_final.csv')

read_initials('\initials_final_nodebt.csv')

yini = [a_g_o, w_h_o, k_g_o, x_hc_o, w_o, y_h_o, d_g_o, cu_e_o, ic_e_perceived_o, price_e_o, cu_g_o,

ic_g_perceived_o,

g_o, k_e_o, d_e_o, price_g_o, profit_e_o, profit_g_o, y_e_o, y_g_o, va_e_o, va_g_o]

times = np.linspace(t0, tfinal, (tfinal / it))

out = odeint(goodwinhandy_fix_inv_ratio_nodebt, yini, times)

#######################

# OUTPUT FOR DIFFERENT VARIABLES###############

#######################

labor_productivity = out[:, 0]

wealth = out[:, 1]

# real_output = out[,4]

k_g = out[:, 2] # total capital

population = out[:, 3]

w = out[:, 4]

nature = out[:, 5]

d_g = out[:, 6]

cu_e = out[:, 7]

ic_e_perceived = out[:, 8]

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract-max(CU_extract_y))

p_e = out[:, 9]

cu_g = out[:, 10]

ic_g_perceived = out[:, 11]

g = out[:, 12]

k_e = out[:, 13]

d_e = out[:, 14]

p_g = out[:, 15]

profit_e = out[:, 16]

profit_g = out[:, 17]

y_e = out[:, 18]

y_g = out[:, 19]

va_e = out[:, 20]

va_g = out[:, 21]

nature_extraction = delta_k * nature * k_e * cu_e

x_e = nature_extraction

x_g = k_g * cu_g / v

y_tot = y_g + y_e

va_tot = va_g + va_e

capital = k_e + k_g

d_tot = d_g + d_e

debt_ratio = d_tot / va_tot

debt_ratio_g = d_g / va_g

debt_ratio_e = d_e / va_e

profit_tot = profit_g+profit_e

# inv_e = inv_ratio_e * np.fmax(np.array([0] * int(tfinal/it)), np.array([inv_kappa0] * int(tfinal/it)) +

# inv_kappa1 * profit_tot / va_tot) * va_tot

# inv_g = (1-inv_ratio_e) * np.fmax(np.array([0] * int(tfinal/it)), np.array([inv_kappa0] * int(tfinal/it)) +

# inv_kappa1 * profit_tot / va_tot) * va_tot

inv_e = profit_e

inv_g = profit_g

inv_tot = inv_e + inv_g

Page 74: Copyright by Qiuying Lai 2018

64

l_g = x_g / labor_productivity

labor_productivity_e = labor_productivity*p_g/p_e

l_e = x_e / labor_productivity_e

l_tot = l_g + l_e

employment_rate = l_tot/population

plot_dict = {

'population (person)': population,

'nature (nature)': nature,

'investment (money per time)': {'total': inv_tot, 'extraction': inv_e, 'goods': inv_g},

'investment share (%)': {'total': inv_tot/y_tot*100, 'extraction': inv_e/y_e*100, 'goods': inv_g/y_g*100},

'debts (money)': {'total': d_tot, 'extraction': d_e, 'goods': d_g},

'employment rate (%)': employment_rate*100,

'profit (money per time)': {'total': profit_tot, 'extraction': profit_e, 'goods': profit_g},

'profit share (%)': {'total': profit_tot/va_tot *100, 'extraction': profit_e/va_e*100,

'goods': profit_g/va_g*100},

'capital (goods)': {'total': (k_g+k_e),'extraction': k_e, 'goods': k_g},

'GDP (money per time)': va_tot,

}

for plot_k, plot_v in plot_dict.items():

plot_separately(times=times, plot_item=[plot_k, plot_v],

plot_path='.\LaisThesisCodeFinalv1nodebt_'+plot_k

+'.png')

run_fix_inv_ratio_nodebt()

plt.close('all')

if __name__ == "__main__":

write_params('.\params_final.csv')

write_initials(f_params_path='.\params_final.csv',

f_initials_path='.\initials_final.csv')

goodwin_handy_king(0, 400, 0.1)

write_initials_nodebt(f_params_path='.\params_final.csv',

f_initials_path='.\initials_final_nodebt.csv')

goodwin_handy_king_nodebt(0, 400, 0.1)

4. CODE VERSION 2 # Code name: LaisThesisCodeFinalV2.py

# By Qiuying (Cho) Lai

Page 75: Copyright by Qiuying Lai 2018

65

import numpy as np

import matplotlib.pyplot as plt

from scipy.stats import logistic

import csv

from scipy.integrate import odeint

def add_parameters(params, **kwargs):

params.update(kwargs)

def write_params(f_params_path):

params = {}

add_parameters(params,

# depletion (production) factor

delta_k=25e-3,

# nature carrying capacity

lambda_h=100,

# depreciation rate of capital

gamma_deprec=0.03,

# Rate at which accumulated extraction depreciates

deprec_h=0.0,

# efficiency of use of extraction by extraction

eff_ext_by_k_ext=0.01, # 0.01

# efficiency of use of extraction by goods capital

eff_ext_by_k_g=0.01,

# Birth rate of the population

beta_hc=0.03,

# Regeneration rate of nature

gamma_hc=1e-2,

# normal minimum and maximum death rate

alpha_min=0.01,

alpha_max=0.07,

# consumption per person when not in famine

s=8 * 1e-2,

# minimum required consumption per capita before famine starts

rho=10e-1,

# minimum required consumption per capita before famine starts

rho_k=0.05,

# accelerator (capital/output ratio)

v=1.5,

# rate of increase in labor productivity (for goods and extraction sector)

alpha_g=0.0,

# The time lag delay to use for looking up past Capacity Utilization values

cu_ext_delay=1.0,

cu_g_delay=1.0,

ic_ext_ref = 1.0,

ic_g_ref = 1.0,

ic_perception_delay = 1.0,

p_e_delay = 1.0,

p_g_delay = 1.0,

profit_e_delay = 1.0,

profit_g_delay = 1.0,

y_e_delay = 1.0,

y_g_delay = 1.0,

Page 76: Copyright by Qiuying Lai 2018

66

va_g_delay = 1.0,

va_e_delay= 1.0,

# Values for different Constants in the Phillips curves

# linear

ph_lin_interc=5.0,

ph_lin_s=-3.25,

# nonlinear

ph_nonlin_xval=0.45,

ph_nonlin_yval=0.0,

ph_nonlin_s=0.13, # 1.6

ph_nonlin_min=-0.05,

# logistic

ph_log_min=-0.05,

ph_log_max=0.3,

ph_log_s=2.5,

# Values for different Constants in the investment curves

inv_xval=3 * 0.03333,

inv_yval=3 * 0.03333, # inv_xval,

inv_s=2.5,

inv_min=0.0,

profit_share_nom=0.1,

inv_kappa1=1.3, # 1.02 0.98 per King to enable investment > profits above nominal profit

# share (profit_share_nom)

inv_kappa0=0.0, # profit_share_inverse_nom * (1 - inv_kappa1),

# Investment function using a logistic curve

# Invest_func = plogis(employment,location=ph_mlogistic,scale=ph_slogistic,

# log=FALSE)*ph_func_max

# Invest_func = plogis(profit_share,location=m,scale=inv_slogistic,log=FALSE)*invest_func_max

inv_slogistic=0.02,

# val = 0.02 describes sharpness of curve (lower values, quicker change in function from

# lowest to highest value)

invest_func_max=0.31,

# val = 0.25 maximum investment as a fraction of profits (logistic function has leveled off)

invest_eq_profits=0.1,

# val = 0.1 value where we assume investment = profits (> value: investment is > profits <

# value: investment < profits)

inv_mlogistic=0.11,

# m=0.1078775 the value of ("x" = profit share) the logistic at its inflection point

# Fraction of investment going to extraction (versus industrial output)

f_min=0.2, # nominally 0.05

f_max=1, # nominally ~ 0.4

# Larger numbers for "f_s" mean that the fraction of capital allocated to resources

# for large amounts of resources left is small and that the fraction allocated as

# resources get small increases at a faster rate.

f_s=7,

xi=0.05,

phi=0.0,

# a_ee=0.1,

a_gg=0.3,

a_ge=0.4,

# a_eg=0.03

)

def write_initials(f_params_path, f_initials_path):

read_params(f_params_path)

initials = {}

Page 77: Copyright by Qiuying Lai 2018

67

x_hc_o = 30

a_g_o = 1

price_g_o = 1

price_e_o = 1

y_h_o = lambda_h

cu_e_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_e_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_e_o = np.interp(ic_ext_ref, cu_e_x, cu_e_y)

cu_g_x = [0, 0.25, 0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 2.00, 2.25, 1000.50]

cu_g_y = [0, 0.30, 0.55, 0.75, 0.85, 0.90, 0.94, 0.98, 0.99, 1.00, 1.0]

cu_g_o = np.interp(ic_g_ref, cu_g_x, cu_g_y)

k_tot_o = 0.2*x_hc_o

k_e_o = k_tot_o*0.1

k_g_o = k_tot_o - k_e_o

x_e_o = delta_k * k_e_o * y_h_o * cu_e_o

x_g_o = k_g_o * cu_g_o / v

matrix_xhat_o = np.matrix([[x_g_o, 0], [0, x_e_o]])

matrix_x_o = np.matrix([[x_g_o], [x_e_o]])

matrix_price_o = np.matrix([[price_g_o], [price_e_o]])

matrix_pricehat_o = np.matrix([[price_g_o, 0], [0, price_e_o]])

matrix_deprec_o = np.matrix([[gamma_deprec * k_g_o / x_g_o, 0], [gamma_deprec * k_e_o / x_e_o, 0]])

a_ee = eff_ext_by_k_ext/(delta_k * y_h_o)

a_eg = eff_ext_by_k_g * v

matrix_atilde_o = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

matrix_vtilde_o = np.matmul(np.matmul(matrix_xhat_o, (np.identity(2)-matrix_deprec_o-

matrix_atilde_o.transpose())),

matrix_price_o)

va_g_o = matrix_vtilde_o.item(0)

va_e_o = matrix_vtilde_o.item(1)

va_tot_o = va_g_o + va_e_o

d_e_o = k_e_o

d_g_o = k_g_o

d_tot_o = d_g_o + d_e_o

inv_g_o = price_g_o * gamma_deprec * k_g_o

inv_e_o = price_g_o * gamma_deprec * k_e_o

inv_tot_o = inv_g_o + inv_e_o

l_g_o = x_g_o/a_g_o

a_e_o = a_g_o * price_g_o / price_e_o

l_e_o = x_e_o/a_e_o

l_tot_o = l_g_o + l_e_o

w_o = 0.5 * va_tot_o / l_tot_o

matrix_a_o = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v + 1/price_e_o*inv_tot_o/x_g_o), a_ee]])

matrix_y_o = np.matmul(matrix_pricehat_o, matrix_x_o) - np.matmul(np.matmul(matrix_pricehat_o, matrix_a_o),

matrix_x_o)

y_g_o = matrix_y_o.item(0)

y_e_o = matrix_y_o.item(1)

r_o = xi

profit_g_o = price_g_o*x_g_o - price_g_o*a_gg*x_g_o - price_e_o*(eff_ext_by_k_g * v +

1/price_e_o*inv_tot_o/x_g_o)*x_g_o - w_o*l_g_o -\

r_o*d_g_o - price_g_o*gamma_deprec*k_g_o

profit_e_o = price_e_o*x_e_o - price_e_o*a_ee*x_e_o - price_g_o*a_ge*x_e_o - w_o*l_e_o -\

r_o*d_e_o - price_g_o*gamma_deprec*k_e_o

profit_tot_o = profit_g_o + profit_e_o

Page 78: Copyright by Qiuying Lai 2018

68

w_h_o = x_e_o/(1/cu_ext_delay)

g_o = x_g_o/(1/cu_g_delay)

ic_e_perceived_o = ic_ext_ref

ic_g_perceived_o = ic_g_ref

add_parameters(initials,

r_o=r_o,

y_h_o=y_h_o,

x_hc_o=x_hc_o,

a_g_o=a_g_o,

price_g_o=price_g_o,

price_e_o=price_e_o,

k_g_o=k_g_o,

k_e_o=k_e_o,

k_tot_o=k_tot_o,

x_e_o=x_e_o,

y_g_o=y_g_o,

x_g_o=x_g_o,

y_e_o=y_e_o,

# y_tot_o=y_tot_o,

# x_tot_o=x_tot_o,

d_g_o=d_g_o,

d_e_o=d_e_o,

d_tot_o=d_tot_o,

l_g_o=l_g_o,

a_e_o=a_e_o,

l_e_o=l_e_o,

l_tot_o=l_tot_o,

w_o=w_o,

profit_g_o=profit_g_o,

profit_e_o=profit_e_o,

profit_tot_o=profit_tot_o,

va_g_o=va_g_o,

va_e_o=va_e_o,

w_h_o=w_h_o,

g_o=g_o,

cu_g_o=cu_g_o,

cu_e_o=cu_e_o,

ic_e_perceived_o=ic_e_perceived_o,

ic_g_perceived_o=ic_g_perceived_o

)

with open(f_initials_path, 'w', newline='') as f_initials:

writer_initials = csv.writer(f_initials)

for key, value in initials.items():

writer_initials.writerow([key, value])

f_initials.close()

# read the parameters from csv file as global variables

def read_params(f_params_path):

with open(f_params_path, 'r', newline='') as f_params:

reader_params = csv.reader(f_params)

mydict_params = {row[0]: float(row[1]) for row in reader_params}

globals().update(mydict_params)

f_params.close()

# read the initial values from csv file as global variables

def read_initials(f_initials_path):

with open(f_initials_path, 'r', newline='') as f_initials:

reader_initials = csv.reader(f_initials)

mydict_initials = {row[0]: float(row[1]) for row in reader_initials}

globals().update(mydict_initials)

Page 79: Copyright by Qiuying Lai 2018

69

f_initials.close()

def plot_multi_separately(times, changing_v, plot_dict, plot_path_prefix):

font = 20

tickfont = 15

num_fig = 0

for plot_k, plot_v in sorted(plot_dict.items()):

num_fig = num_fig + 1

fig_now = plt.figure(num=num_fig, figsize=(8, 5))

if type(plot_v) is dict:

for k,v in plot_v.items():

plt.plot(times, v, '-', label=k)

plt.legend(fontsize=tickfont, loc=1)

else:

plt.plot(times, plot_v, '-', label=changing_v)

plt.legend(fontsize=tickfont, loc=1)

plt.xlabel('time', size=font)

plt.ylabel(plot_k, size=font)

plt.tick_params(axis='x', labelsize=tickfont)

plt.tick_params(axis='y', labelsize=tickfont)

plt.tight_layout()

fig_now.savefig(plot_path_prefix + plot_k +'.png')

return

# Goodwin-HANDY model from t0 to tfinal ([t0, tfinal)) with certain interval (it)

def goodwin_handy_king(t0, tfinal, it):

def goodwinhandy_fix_inv_ratio(y, t, *parms):

a_g = y[0] # Labor Productivity

w_h = y[1] # Wealth

k_g = y[2] # Total Capital (for (i) extraction and (ii) industrial output)

x_hc = y[3] # Total Population

w = y[4] # Real wages

y_h = y[5] # Available Nature

d_g = y[6] # Debt

cu_e = y[7] # Capacity Utilization of extraction capital

ic_e_perceived = y[8] # Perceived inventory coverage

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract - max(CU_extract_y))

p_e = y[9] # "expected" price of wealth (or extracted nature)

cu_g = y[10]

ic_g_perceived = y[11]

g = y[12]

k_e = y[13]

d_e = y[14]

p_g = y[15]

profit_e = y[16]

profit_g = y[17]

y_e = y[18]

y_g = y[19]

va_e = y[20]

va_g = y[21]

d_tot = d_e + d_g

va_tot = va_e + va_g

y_tot = y_e + y_g

xi_now = xi

phi_now = phi

r = xi_now + phi_now * d_tot / va_tot

k_tot = k_g + k_e

profit_rate_g = profit_g/(p_g*k_g)

Page 80: Copyright by Qiuying Lai 2018

70

profit_rate_e = profit_e/(p_g*k_e)

profit_rate = (profit_g+profit_e)/(p_g*k_tot)

profit_share_g = profit_g/va_g

profit_share_e = profit_e/va_e

profit_share = (profit_g+profit_e)/va_tot

inv_func = max(0, inv_kappa0 + inv_kappa1 * profit_share)

inv_g = max(0, inv_func * va_tot * (1-inv_ratio_e))

inv_e = max(0, inv_func * va_tot * inv_ratio_e)

nature_extraction = delta_k * y_h * k_e * cu_e

x_g = k_g * cu_g / v

x_e = nature_extraction

matrix_x = np.matrix([[x_g], [x_e]])

matrix_xhat = np.matrix([[x_g, 0], [0, x_e]])

a_ee = eff_ext_by_k_ext / (delta_k * y_h)

a_eg = eff_ext_by_k_g * v + 1 / p_e * (inv_e + inv_g) / x_g

matrix_a = np.matrix([[a_gg, a_ge], [a_eg, a_ee]])

a_e = a_g*p_g/p_e

l_g = x_g/a_g

l_e = x_e/a_e

l_tot = l_g + l_e

employment_rate = l_tot/x_hc

w_g = w*l_g

w_e = w*l_e

w_tot = w_g + w_e

matrix_phat = np.matrix([[p_g, 0], [0, p_e]])

matrix_y = np.matmul(matrix_phat, matrix_x) - np.matmul(np.matmul(matrix_phat, matrix_a), matrix_x)

matrix_inv = np.matrix([[inv_g+inv_e], [0]])

matrix_c = matrix_y - matrix_inv

c_g = matrix_c.item(0)

c_e = matrix_c.item(1)

v_g_now = (profit_g + w_g + r * d_g + inv_g + inv_e)

v_e_now = (profit_e + w_e + r * d_e)

matrix_v = np.matrix([[v_g_now], [v_e_now]])

matrix_deprec = np.matrix([[gamma_deprec * k_g / x_g, 0], [gamma_deprec * k_e / x_e, 0]])

matrix_atilde = np.matrix([[a_gg, a_ge], [(eff_ext_by_k_g * v), a_ee]])

matrix_solve_price = np.matmul(np.linalg.inv(np.matmul(matrix_xhat, (np.identity(2) - matrix_deprec -

matrix_atilde.transpose()))),

matrix_v)

p_g_update = matrix_solve_price.item(0)

p_e_update = matrix_solve_price.item(1)

y_g_update = matrix_y.item(0)

y_e_update = matrix_y.item(1)

profit_g_update = p_g_update*x_g - p_g_update*a_gg*x_g - p_e_update*a_eg*x_g - w_g - \

r*d_g - p_g_update*gamma_deprec*k_g

profit_e_update = p_e_update * x_e - p_e_update * a_ee * x_e - p_g_update * a_ge * x_e - \

w_e - r * d_e - p_g_update * gamma_deprec * k_e

va_g_update = profit_g_update + w_g + r*d_g + p_g_update*gamma_deprec*k_g

va_e_update = profit_e_update + w_e + r*d_e + p_g_update*gamma_deprec*k_e

c_hc = c_e / p_e

v_c = 1 - (c_hc / (s * x_hc))

# Death rate of commoners and elites incluing the concept of famine ###

alpha_hc = alpha_min + ((np.fmax(0, v_c)) * (alpha_max - alpha_min))

Page 81: Copyright by Qiuying Lai 2018

71

matrix_intermediate = np.matmul(matrix_a, matrix_x)

intermediate_g = matrix_intermediate.item(0)

intermediate_e = matrix_intermediate.item(1)

targeted_consumption = c_hc + intermediate_e

ic_e = (w_h/cu_ext_delay)/targeted_consumption

cu_e_x = [0,0.25,0.50,0.75,1.00,1.25,1.50,1.75,2.00,2.25,1000.50]

cu_e_y = [0,0.30,0.55,0.75,0.85,0.90,0.94,0.98,0.99,1.00,1.0]

cu_e_1 = np.interp((1 / ic_e_perceived), cu_e_x, cu_e_y)

cu_e_indicated = cu_e_1

c_g_physical = c_g/p_g

targeted_consumption_g = c_g_physical + intermediate_g + (inv_g + inv_e)/p_g

ic_g = (g / cu_g_delay) / targeted_consumption_g

cu_g_1 = np.interp((1 / ic_g_perceived), cu_e_x, cu_e_y)

cu_g_indicated = cu_g_1

# targeted_consumption_lag = C_hc_lag + wealth_to_operate_K_goods_lag +

##########################

##########STATE EQUATIONS############

# WEALTH

w_h_dot = nature_extraction - c_hc - intermediate_e

# Change in Wealth when wealth must to go (i) consumption, (2) depreciation, (3) "power" input (possibly)

# and (4) wealth (in nature units) consumed per unit of investment (in "$/time" units)

# LABOR PRODUCTIVITY

a_dot = alpha_g * a_g # Labor productivity

# CAPITAL

k_g_dot = inv_g/p_g - gamma_deprec * k_g

k_e_dot = inv_e/p_g - gamma_deprec * k_e

# OUTPUT

# Y_dot = ((Investment/Y/v) - gamma_deprec)*Y # Change in Output

# POPULATION

x_hc_dot = beta_hc * x_hc - alpha_hc * x_hc # Change in Commoner Population

# WAGES

w_dot = w * ((ph_nonlin_yval - ph_nonlin_min) * np.exp(

(ph_nonlin_s / (ph_nonlin_yval - ph_nonlin_min)) * (employment_rate - ph_nonlin_xval)) + ph_nonlin_min)

# w_dot = ph_func * w # Change in Real Wage according to the Phillips Curve

# NATURE

y_h_dot = gamma_hc * y_h * (lambda_h - y_h) - nature_extraction # Change in Available Nature

# DEBT

d_e_dot = inv_e - profit_e

d_g_dot = inv_g - profit_g

## CU_EXTRACT (actual)

cu_e_dot = (cu_e_indicated - cu_e) / cu_ext_delay

cu_g_dot = (cu_g_indicated - cu_g) / cu_g_delay

## Perceived Inventory Coverage

ic_e_perceived_dot = (ic_e - ic_e_perceived) / ic_perception_delay

ic_g_perceived_dot = (ic_g - ic_g_perceived) / ic_perception_delay

p_e_dot = (p_e_update - p_e) / p_e_delay

p_g_dot = (p_g_update - p_g) / p_g_delay

profit_e_dot = (profit_e_update - profit_e) / profit_e_delay

profit_g_dot = (profit_g_update - profit_g) / profit_g_delay

g_dot = x_g - c_g_physical - (inv_g+inv_e)/p_g - intermediate_g

y_e_dot = (y_e_update - y_e)/y_e_delay

y_g_dot = (y_g_update - y_g) / y_g_delay

Page 82: Copyright by Qiuying Lai 2018

72

va_e_dot = (va_e_update - va_e) / va_e_delay

va_g_dot = (va_g_update - va_g) / va_g_delay

return [a_dot, w_h_dot, k_g_dot, x_hc_dot, w_dot, y_h_dot, d_g_dot, cu_e_dot, ic_e_perceived_dot,

p_e_dot, cu_g_dot, ic_g_perceived_dot, g_dot, k_e_dot, d_e_dot, p_g_dot, profit_e_dot, profit_g_dot,

y_e_dot, y_g_dot, va_e_dot, va_g_dot]

def run_try_fix_inv_ratio(inv_ratio_e_input):

read_params('.\params_final.csv')

read_initials('.\initials_final.csv')

global inv_ratio_e

inv_ratio_e = inv_ratio_e_input

yini = [a_g_o, w_h_o, k_g_o, x_hc_o, w_o, y_h_o, d_g_o, cu_e_o, ic_e_perceived_o, price_e_o, cu_g_o,

ic_g_perceived_o,

g_o, k_e_o, d_e_o, price_g_o, profit_e_o, profit_g_o, y_e_o, y_g_o, va_e_o, va_g_o]

times = np.linspace(t0, tfinal, (tfinal / it))

out = odeint(goodwinhandy_fix_inv_ratio, yini, times)

#######################

# OUTPUT FOR DIFFERENT VARIABLES###############

#######################

labor_productivity = out[:, 0]

wealth = out[:, 1]

# real_output = out[,4]

k_g = out[:, 2] # total capital

population = out[:, 3]

w = out[:, 4]

nature = out[:, 5]

d_g = out[:, 6]

cu_e = out[:, 7]

ic_e_perceived = out[:, 8]

# CU_goods = CU_goods_max + CU_goods_scalingFactor/(CU_extract-max(CU_extract_y))

p_e = out[:, 9]

cu_g = out[:, 10]

ic_g_perceived = out[:, 11]

g = out[:, 12]

k_e = out[:, 13]

d_e = out[:, 14]

p_g = out[:, 15]

profit_e = out[:, 16]

profit_g = out[:, 17]

y_e = out[:, 18]

y_g = out[:, 19]

va_e = out[:, 20]

va_g = out[:, 21]

nature_extraction = delta_k * nature * k_e * cu_e

x_e = nature_extraction

x_g = k_g * cu_g / v

y_tot = y_g + y_e

va_tot = va_g + va_e

capital = k_e + k_g

d_tot = d_g + d_e

debt_ratio = d_tot / va_tot

debt_ratio_g = d_g / va_g

debt_ratio_e = d_e / va_e

profit_tot = profit_g+profit_e

inv_e = inv_ratio_e * np.fmax(np.array([0] * int(tfinal/it)), np.array([inv_kappa0] * int(tfinal/it)) +

inv_kappa1 * profit_tot / va_tot) * va_tot

l_g = x_g / labor_productivity

Page 83: Copyright by Qiuying Lai 2018

73

labor_productivity_e = labor_productivity*p_g/p_e

l_e = x_e / labor_productivity_e

l_tot = l_g + l_e

employment_rate = l_tot/population

wage_share_g = w * l_g / va_g

wage_share_e = w * l_e / va_e

wage_share = w * l_tot / va_tot

profit_share = profit_tot/va_tot

plot_dict = {

'population (person)': population,

'nature (nature)': nature,

'investment for extraction (goods)': inv_e,

'debts (money)': d_tot,

'debt ratio': debt_ratio,

'employment rate(%)': employment_rate*100,

'profit (money)': profit_tot,

'GDP (money per time)': va_tot,

'goods capital (goods)': k_g,

'extraction capital (goods)': k_e,

'wage share (%)': wage_share*100,

'profit share (%)': profit_share*100

}

plot_multi_separately(times=times, changing_v='p_ext = '+str(inv_ratio_e), plot_dict=plot_dict,

plot_path_prefix='.\LaisThesisCodeFinalv2_')

for try_inv_ratio_e in [0.08, 0.25, 0.5, 0.68]:

run_try_fix_inv_ratio(try_inv_ratio_e)

plt.close('all')

if __name__ == "__main__":

write_params('.\params_final.csv')

write_initials(f_params_path='.\params_final.csv',

f_initials_path='.\initials_final.csv')

goodwin_handy_king(0, 400, 0.1)

Page 84: Copyright by Qiuying Lai 2018

74

References

AKARCA, A. T. & LONG, T. V. 1980. On the relationship between energy and GNP: a

reexamination. The Journal of Energy and Development, 326-331.

AYRES, R. U. & WARR, B. 2005. Accounting for growth: the role of physical work.

Structural Change and Economic Dynamics, 16, 181-209.

BOVARI, E., GIRAUD, G. & MC ISAAC, F. 2018. Coping With Collapse: A Stock-Flow

Consistent Monetary Macrodynamics of Global Warming. Ecological Economics,

147, 383-398.

COBB, C. W. & DOUGLAS, P. H. 1928. A theory of production. The American Economic

Review, 18, 139-165.

EDEN, S. & HWANG, B.-K. 1984. The relationship between energy and GNP: further

results. Energy economics, 6, 186-190.

EDEN, S. & JIN, J. C. 1992. Cointegration tests of energy consumption, income, and

employment. Resources and Energy, 14, 259-266.

EIA, U. 2017. Annual energy review. Energy Information Administration.

EIA, U. 2017. International energy outlook. Energy information administration (EIA).

ENGLE, R. F. & GRANGER, C. W. 1987. Co-integration and error correction:

representation, estimation, and testing. Econometrica: journal of the Econometric

Society, 251-276.

GODLEY, W. and LAVOIE, M., 2016. Monetary economics: an integrated approach to

credit, money, income, production and wealth.

GOODWIN, R. M. 1967. A growth cycle model. Socialism, Capitalism, and Economic

Growth, Cambridge University Press, Cambridge.

HARSHIT, J. 2017. Macroscale Modeling Linking Energy and Debt: A Missing Linkage.

The University of Texas at Austin.

HUMPHREY, T. M. 1997. Algebraic production functions and their uses before Cobb-

Douglas.

KEEN, S. 1995. Finance and economic breakdown: modeling Minsky’s “financial

instability hypothesis”. Journal of Post Keynesian Economics, 17, 607-635.

KEEN, S. 2013. A monetary Minsky model of the Great Moderation and the Great

Recession. Journal of Economic Behavior & Organization, 86, 221-235.

KEYNES, J. M. 2016. General theory of employment, interest and money, Atlantic

Publishers & Dist.

KRAFT, J. & KRAFT, A. 1978. On the relationship between energy and GNP. The Journal

of Energy and Development, 401-403.

Page 85: Copyright by Qiuying Lai 2018

75

LAVOIE, M. 2012. Perspectives for post-Keynesian economics. Review of Political

Economy, 24, 321-335.

LEONTIEF, W. W. 1951. The structure of American economy, 1919-1939: an empirical

application of equilibrium analysis.

LOTKA, A. J. 1925. Elements of Physical Biology, by Alfred J. Lotka.

MEADOWS, D. H., MEADOWS, D. L., RANDERS, J. & BEHRENS, W. W. 1972. The

limits to growth. New York, 102, 27.

MISHRA, S. 2007. A brief history of production functions.

MOTESHARREI, S., RIVAS, J. & KALNAY, E. 2014. Human and nature dynamics

(HANDY): Modeling inequality and use of resources in the collapse or

sustainability of societies. Ecological Economics, 101, 90-102.

ROSER, M. 2017. The short history of global living conditions and why it matters that we

know it. Published online at OurWorldInData. org.

SAMUELSON, P. A. 1939. Interactions between the multiplier analysis and the principle

of acceleration. The Review of Economics and Statistics, 21, 75-78.

SMIL, V. 1994. Energy in world history.

STERMAN, J. D. 2000. Business dynamics: systems thinking and modeling for a complex

world.

STERN, D. I. 2000. A multivariate cointegration analysis of the role of energy in the US

macroeconomy. Energy economics, 22, 267-283.

VON NEUMANN, J. uber ein okonomsiches Gleichungssystem und eine

Verallgemeinering des Browerschen Fixpunktsatzes. Erge. Math. Kolloq., 1937.

73-83.