小编Yuk*_*kiJ的帖子

从R中的底层C函数中抑制消息

在脚本中,我经常调用该函数Rcplex(),该函数将"CPLEX环境打开"和"已关闭的CPLEX环境"打印到控制台.由于该函数被频繁调用,因此它经常打印,这非常烦人.有没有办法压制这个?我试过sink(),suppressWarnings/Messagesinvisible(catch.output())但这些都不奏效了.我继续检查代码Rcplex()并找到打印到控制台的位置.Rcplex()调用底层的C函数(Rcplex.c).在rcplex.c代码中,我找到了导致打印的命令:

    REprintf("CPLEX environment opened\n");
    REprintf("Closed CPLEX environment\n");
Run Code Online (Sandbox Code Playgroud)

有没有办法捕获输出,REprintf()以便它不会打印到R控制台?一种方法显然是弄乱Rcplex.c文件并删除相应的行.但是,这不是一个非常干净的解决方案,这就是为什么我要求另一种方法来捕获C函数的输出.

c console printf r output

6
推荐指数
1
解决办法
394
查看次数

如何仅访问 PuLP 问题中的特定变量?

在我用 python 中的 PuLP 求解的 LP 模型中,我有两组决策变量,例如

#Variables x 
x = LpVariable.dicts("Decision_x",(range(3),range(3)),0,1,LpInteger)
#Variables y 
y = LpVariable.dicts("Decision_y",(range(3),range(3)),0,1,LpInteger)
Run Code Online (Sandbox Code Playgroud)

求解模型后,我只对 x[i][j] 取值为 1 的变量感兴趣。我知道

for v in prob.variables():
    if v.varValue == 1:
        print(v)
Run Code Online (Sandbox Code Playgroud)

我可以打印所有值等于 1 的变量。因此,所有值等于 1 的 x 和所有 y 变量都会被打印。如何设法仅访问 x 变量,以便不打印 y 变量?我尝试过prob.variables(x)prob.variables()[x]但到目前为止没有任何效果。

然后在下一步中,我想提取 x 等于 1 的 x 变量的索引。例如,如果x[1][3] == 1我想找到索引 1 和 3。PuLP 中有什么聪明的方法来实现这一点吗?

python optimization linear-programming python-3.x pulp

2
推荐指数
1
解决办法
2395
查看次数

标签 统计

c ×1

console ×1

linear-programming ×1

optimization ×1

output ×1

printf ×1

pulp ×1

python ×1

python-3.x ×1

r ×1