如何使用PyMC3执行随机优化?

时间:2019-01-31 14:49:32

标签: python-3.x pymc3 pymc cvxopt

我正在尝试结合使用cvxopt(一个优化求解器)和PyMC3(一个采样器)来解决凸型随机优化问题。

我尝试使用以下代码(PyMC,版本2)作为基准。但是我无法使其正常工作。

Stochastic Optimization in Python

首先,当我尝试仅用pymc3替换pymc时,出现以下错误:

  

TypeError:上下文堆栈上没有模型,需要实例化   分布。在“ with model:”块中添加变量,或使用   独立发行版的'.dist'语法。

然后,将我的代码添加到如下的“ with”语句中,并得到一个“ AttributeError”。

  

AttributeError:模块'pymc3'没有属性'deterministic'

import numpy as np, pymc3, cvxopt as co

# suppress cvxopt solver output, since it will be inside MCMC loop
co.solvers.options['show_progress'] = False


with pymc3.Model() as model:
    c1 = pymc3.Normal('c1', mu=-4, tau=0.5**-2)

    @pm.deterministic
    def x(c1=c1):
        c = co.matrix([float(c1), -5.])
        G = co.matrix([[2., 1., -1., 0.], [1., 2., 0., -1.]])
        h = co.matrix([3., 3., 0., 0.])
        sol = co.solvers.lp(c, G, h)
        solution = np.array(sol['x'],dtype=float).flatten()
        return solution

    m = pymc3.MCMC(dict(c1=c1, x=x))
    m.sample(20000, 10000, 10)

我决定评论“ #@pymc3.deterministic”,然后出现以下错误:

  

AttributeError:模块'pymc3'没有属性'MCMC'

因此,我被困在这一点上。我不知道使用pymc3调用MCMC相当于什么。到目前为止,我所做的一切都给我以下消息:

  

c = co.matrix([float(c1),-5。]):TypeError:float()参数必须是字符串或数字,而不是'FreeRV'

如果您需要更多详细信息,请告诉我。

0 个答案:

没有答案