def __getitem__(self: "VVarList", key): if isinstance(key, str): return self.__model.var_by_name(key) if isinstance(key, slice): return VVarList(self.__model, key.start, key.end) if isinstance(key, int): if key < 0: key = self.__end - key if key >= self.__end: raise IndexError return Var(self.__model, key + self.__start) raise Exception("Unknow type")
def add(self, name: str = "", lb: float = 0.0, ub: float = INF, obj: float = 0.0, var_type: str = CONTINUOUS, column: Column = None) -> Var: solver = self.__model.solver if not name: name = 'var({})'.format(len(self)) if var_type == BINARY: lb = 0.0 ub = 1.0 new_var = Var(self.__model, solver.num_cols()) solver.add_var(obj, lb, ub, var_type, column, name) return new_var
def add( self, name: str = "", lb: float = 0.0, ub: float = INF, obj: float = 0.0, var_type: str = CONTINUOUS, column: Column = None, ) -> Var: if not name: name = "var({})".format(len(self.__vars)) if var_type == BINARY: lb = 0.0 ub = 1.0 new_var = Var(self.__model, len(self.__vars)) self.__model.solver.add_var(obj, lb, ub, var_type, column, name) self.__vars.append(new_var) return new_var
def update_vars(self: "VarList", n_vars: int): self.__vars = [Var(self.__model, i) for i in range(n_vars)]