You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SCIP程序中访问熵表达式处理器?含ZIMPL与PySCIPOpt示例

在SCIP中使用熵函数作为目标函数

ZIMPL实现

对于目标函数 ( h = \sum_{n=1}^4 -p_n \log(p_n) ),ZIMPL可直接用内置log函数构建每个熵项,SCIP的表达式处理器会自动处理 ( p_n=0 ) 时 ( 0 \times \log(0) = 0 ) 的数值合理性。补全后的代码如下:

param N := 4;
set Nset := {1 .. N};
var p[Nset] >=0 <=1;

maximize h: sum<n> in Nset: -p[n] * log(p[n]);

PySCIPOpt实现

PySCIPOpt需用quicksum累加熵项,通过模型对象的log方法构建对数表达式。补全后的代码如下:

from pyscipopt import Model, quicksum
N=4
model=Model('entropy')
p=[]
for n in range(N):
    p.append(model.addVar(lb=0.0, ub=1.0, name='p(%s)' % n))
model.setObjective(quicksum(-p[n] * model.log(p[n]) for n in range(N)), sense='maximize')

补充说明

  • SCIP表达式处理器会自动处理 ( p_n=0 ) 的特殊情况,无需额外添加约束或判断;
  • 上述代码使用自然对数,若需以2为底的熵,只需给每个熵项乘以 ( 1/\log(2) ) 完成转换。

内容的提问来源于stack exchange,提问作者usertcl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:59