【问题标题】:Why the @objective value is negative?为什么@objective 值为负数?
【发布时间】:2020-09-17 14:41:52
【问题描述】:

我有这个模型,我正在使用 cbc:

    @variable(premex, PRODAMOUNT[op_k in keys(_ORDER_PRODUCTs_ALL), u_k in keys(UNITS), t in TIME], Int, lower_bound = 0)

    @objective(
        premex,
        Min,
        sum(
            sum(
                    (
                        (iszero(
                                sum(
                                    PRODAMOUNT[op_k, u_k, t] * _PRODUCTs_ALL[op["product"]]["bagSize"] 
                                    for (op_k, op) in _ORDER_PRODUCTs_ALL
                                )
                            ) ? 0 : u["cap"]
                        ) - 
                        sum(
                            PRODAMOUNT[op_k, u_k, t] * _PRODUCTs_ALL[op["product"]]["bagSize"] 
                            for (op_k, op) in _ORDER_PRODUCTs_ALL
                        )
                    ) * u["util_cost1"]
                    for (u_k, u) in UNITS
                )  
                for t in TIME
            )
    )

这是一个约束,不允许一个 UNIT / t 上的 PRODAMOUNT 超过该单元的最大容量。

     for t in TIME
            @constraint(
                premex, 
                [u_k in keys(UNITS)],
                sum(
                    PRODAMOUNT[op_k, u_k, t] * _PRODUCTs_ALL[op["product"]]["bagSize"]
                    for (op_k, op) in _ORDER_PRODUCTs_ALL
                    ) 
                    <= UNITS[u_k]["cap"]
            )
        end

目标值:-461275000.00000000

怎么样?为什么是负值?

UNITS[u_k][“cap”]和u[“cap”]是一样的

【问题讨论】:

  • 您的解决方案状态如何? Cbc 真的找到了解决方案吗?
  • 是的,我有一个解决方案。此外,有人建议我(在 julia 论坛上)查看 objective_function(...) 但没有任何解释为什么 Objective 值不同

标签: julia julia-jump


【解决方案1】:

交叉发帖时请提供链接:https://discourse.julialang.org/t/why-the-objective-value-is-negative/46781

您的目标函数是负数,因为第一项在传递给 Cbc 之前评估为 0,只留下负总和。

【讨论】:

  • 谢谢,奥斯卡,非常感谢您的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 2018-01-29
  • 2020-04-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多