为什么@objective值为负?

问题描述

我有这个模型,正在使用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,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
            )
    )

这是一个约束,不允许一个单位/吨的PROdamOUNT超过该单位的最大容量。

     for t in TIME
            @constraint(
                premex,[u_k in keys(UNITS)],sum(
                    PROdamOUNT[op_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”]相同

解决方法

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

您的目标函数为负,因为在传递给Cbc之前,第一项的计算结果为0 ,仅留下负和。