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)
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)
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)
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)