我可以将CVXPY指标转换为0/1二进制而不是0 / infty二进制吗?

时间:2019-11-25 14:56:33

标签: transform indicator cvxpy

这是我的代码:

将cvxpy导入为cp

c = cp.Variable(1)

然后我有一个numpy.ndarray m 和一个约束

约束= [m> = c]。

我接下来构造指标

idx = cp.transforms.indicator(constraint)

在这个阶段,我遇到两个问题:

a)当我在控制台窗口中评估idx时,出现以下错误:

is_constant中的第159行“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ cvxpy \ expressions \ expression.py”     返回自身。 is_constant AttributeError:“指标”对象没有属性“ _Expression__is_constant” 在处理上述异常期间,发生了另一个异常: 追溯(最近一次通话):   文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ IPython \ core \ formatters.py”,第224行,在catch_format_error中     r =方法(自身,* args,kwargs)   __call 中的文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ IPython \ core \ formatters.py”,第702行     printer.pretty(obj)   漂亮的文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ IPython \ lib \ pretty.py”,第402行     返回_repr_pprint(obj,self,cycle)   _repr_pprint中的第697行,文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ IPython \ lib \ pretty.py”     输出= repr(obj)    repr 中的文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ cvxpy \ expressions \ expression.py”,第100行     返回“ Expression(%s,%s,%s)”%(self.curvature,   文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ cvxpy \ expressions \ expression.py”,曲率线121     如果self.is_constant():   is_constant中的第162行“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ cvxpy \ expressions \ expression.py”     arg.is_constant()用于self.args中的arg)   文件“ C:\ Program Files \ Anaconda3 \ envs \ py_cvx \ lib \ site-packages \ cvxpy \ expressions \ expression.py”,行162,在     arg.is_constant()用于self.args中的arg) AttributeError:“不平等”对象没有属性“ is_constant”

b)我希望指标在true时返回1,在false时返回0,如果不是true则返回0,如果false则返回infty。我的想法是关于以下解决方案:

idx = cp.transforms.indicator(constraint)== 0

一旦出现上述错误/问题,是否可以解决该问题?

感谢您的回复。 拉尔夫

0 个答案:

没有答案