tft_ask_gurobi.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:FPTuner 作者: soarlab 项目源码 文件源码
def addVar (self, ve): 
        assert(isinstance(ve, tft_expr.VariableExpr)) 
        if (ve.label().startswith(tft_expr.GROUP_ERR_VAR_PREFIX) or ve.label().startswith(tft_expr.ERR_VAR_PREFIX)): 
            assert(ve.type() == int) 
        if (ve in self.var_expr_2_gurobi_var.keys()): 
            return 

        # add variable 
        var = ""
        if (ve.type() == int): 
            var = self.solver.addVar(vtype=GRB.INTEGER, name=ve.label()) 
        elif (ve.type() == Fraction): 
            var = self.solver.addVar(name=ve.label())
        else: 
            sys.exit("ERROR: invalid type of VariableExpr found when asking gurobi for OptimizeExpr")             
        self.var_expr_2_gurobi_var[ve] = var 

        self.solver.update() 

        # write range 
        if (ve.hasBounds()): 
            # check lower bound 
            if (ve.lb().value() < Fraction(0, 1)): 
                sys.exit("ERROR: variable's (" + ve.label() +") lower bound must be greater than 0") 
            # add constraint 
            self.addConstraint("linear", "<=", ve.lb(), ve)
            self.addConstraint("linear", "<=", ve, ve.ub())
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号