python - 在 Python 的 GEKKO 中实现宏观经济模型

标签 python optimization modeling economics gekko

这个问题在某种程度上侧重于经济优化,在某种程度上侧重于 python 实现,但也许社区中的一些人能够提供帮助。我正在尝试在 Python 的 GEKKO 平台中实现一个标准的连续时间宏观经济储蓄模型,但一直无法解决。我采用了 GEKKO 的 documentation 中提供的经济示例, 并适应了基本的储蓄决策模型,但事情并不是很顺利。该模型最大化来自消费的效用总和,其中消费+投资=产出。例如。最大积分(U(y-i))。输出 y = k^ALPHA。投资 = dk/dt+delta*k。

谁能告诉我为什么我的代码无法解决?该平台甚至能够解决这样的模型吗?我没有看到很多经济学家使用这个平台来解决模型的例子,但不确定这是因为这个平台不适合还是其他原因。这是一个很棒的平台,如果可能的话,它真的很想让它发挥作用。提前谢谢你。

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
n=501
m.time = np.linspace(0,10,n)
ALPHA,DELTA = 0.333,0.99
i = m.MV(value=0)
i.STATUS = 1
i.DCOST = 0
x = m.Var(value=20,lb=0) # fish population
m.Equation(x.dt() == i-DELTA*x)
J = m.Var(value=0) # objective (profit)
Jf = m.FV() # final objective
Jf.STATUS = 1
m.Connection(Jf,J,pos2='end')
m.Equation(J.dt() == m.log(x**ALPHA-i))
m.Obj(-Jf) # maximize profit
m.options.IMODE = 6  # optimal control
m.options.NODES = 3  # collocation nodes
m.options.SOLVER = 3 # solver (IPOPT)
m.solve(disp=True) # Solve

最佳答案

您将获得 NaN在等式中 dJ/dt = ln(x**ALPHA-i) .当您包含边界时 i>0i<1 ,求解器找到一个解。

Solution

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
n=501
m.time = np.linspace(0,10,n)
ALPHA,DELTA = 0.333,0.99
i = m.MV(value=0,lb=0,ub=1)
i.STATUS = 1
i.DCOST = 0
x = m.Var(value=20,lb=0) # fish population
m.Equation(x.dt() == i-DELTA*x)
J = m.Var(value=0) # objective (profit)
Jf = m.FV() # final objective
Jf.STATUS = 1
m.Connection(Jf,J,pos2='end')
m.Equation(J.dt() == m.log(x**ALPHA-i))
m.Obj(-Jf) # maximize profit
m.options.IMODE = 6  # optimal control
m.options.NODES = 3  # collocation nodes
m.options.SOLVER = 3 # solver (IPOPT)
m.solve(disp=True) # Solve

plt.subplot(2,1,1)
plt.plot(m.time,x.value)
plt.ylabel('x')
plt.subplot(2,1,2)
plt.plot(m.time,i.value)
plt.ylabel('i')
plt.show()

而不是 m.Obj() (最小化)您可以使用更新的函数 m.Minimize()m.Maximize()阐明目标函数的意图。例如,您可以切换到 m.Maximize(Jf)使其更具可读性。

还有一些其他示例可以帮助您解决 integral objectives (see solution 2)economic dynamic optimization .

关于python - 在 Python 的 GEKKO 中实现宏观经济模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60806384/

相关文章:

python - 使用 Spearman 相关性和 Sklearn KNN 进行模式匹配

python - 安装uwsgi后,python还是会报错: No module named 'uwsgi'

python - KD 树最近邻搜索是如何工作的?

c++ - 优化 .txt 文件创建速度

uml - MDriven中的"EffectiveName"和"OtherEnd"结构

modeling - 一致的术语 : Modeling, DAE、ODE

c++ - 如何从 Cplex 获取约束数量

python - re 模块没有属性 compile

node.js - 使用路由、 Controller 和模型重构 NodeJS 项目的中间件代码

python - Codacy bad 给 super 的第一个论点