我正在尝试结合使用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'
如果您需要更多详细信息,请告诉我。