コード例 #1
0
 def _to_list(cls, s, caller):
     if is_pandas_series(s):
         return s.tolist()
     elif is_ordered_sequence(s):
         return s
     else:
         docplex_fatal(
             '{0} requires ordered sequences: lists, numpy array or Series, got: {1}',
             caller, type(s))
         return list(s)
コード例 #2
0
 def _sum_vars(self, dvars):
     if is_numpy_ndarray(dvars):
         return self._sum_vars(dvars.flat)
     elif is_pandas_series(dvars):
         return self.sum(dvars.values)
     elif isinstance(dvars, dict):
         # handle dict: sum all values
         return self._sum_vars(itervalues(dvars))
     elif is_iterable(dvars):
         checked_dvars = self._checker.typecheck_var_seq(dvars, caller='Model.sumvars()')
         sumvars_terms = self._varlist_to_terms(checked_dvars)
         return self._to_expr(qcc=None, lcc=sumvars_terms)
     else:
         self._model.fatal('Model.sumvars() expects an iterable returning variables, {0!r} was passed',
                           dvars)
コード例 #3
0
    def sumsq(self, sum_args):
        if is_iterable(sum_args):
            if is_iterator(sum_args):
                return self._sumsq(sum_args)
            elif isinstance(sum_args, dict):
                return self._sumsq(sum_args.values())
            elif is_numpy_ndarray(sum_args):
                return self._sumsq(sum_args.flat)
            elif is_pandas_series(sum_args):
                return self._sumsq(sum_args.values)

            else:
                return self._sumsq(sum_args)
        elif is_number(sum_args):
            return sum_args ** 2
        else:
            self._model.fatal("Model.sumsq() expects number/iterable/expression, got: {0!s}", sum_args)
コード例 #4
0
    def sum(self, sum_args):
        if is_iterator(sum_args):
            return self._sum_with_iter(sum_args)

        elif is_numpy_ndarray(sum_args):
            return self._sum_with_iter(sum_args.flat)
        elif is_pandas_series(sum_args):
            return self.sum(sum_args.values)
        elif isinstance(sum_args, dict):
            # handle dict: sum all values
            return self._sum_with_iter(itervalues(sum_args))
        elif is_iterable(sum_args):
            return self._sum_with_seq(sum_args)

        elif is_number(sum_args):
            return sum_args
        else:
            return self._linear_factory._to_linear_expr(sum_args)