linear_biases, QuadraticVectors(*quadratic), self.variables) case_starts, linear_biases, quadratic, offset = self._cydqm.to_numpy_vectors(return_offset) return DQMVectors( case_starts, linear_biases, QuadraticVectors(*quadratic), self.variables, offset ) DQM = DiscreteQuadraticModel # alias # register fileview loader load.register(DQM_MAGIC_PREFIX, DiscreteQuadraticModel.from_file) class CaseLabelDQM(DQM): '''DiscreteQuadraticModel that allows assignment of arbitrary labels to cases of discrete variables. Two types of case labels are offered: 1. Unique case labels are unique among variable labels and themselves. 2. Shared case labels are unique among cases for a variable, but may be reused among variables. Examples:
Returns: Instance of :class:`.QuadraticModel`. """ qm = QM(dtype=dtype) v = qm.add_variable(Vartype.INTEGER, label, lower_bound=lower_bound, upper_bound=upper_bound) qm.set_linear(v, bias) return qm def Integers(labels: Union[int, Iterable[Variable]], dtype: Optional[DTypeLike] = None) -> Iterator[QuadraticModel]: """Yield quadratic models, each with a single integer variable. Args: labels: Either an iterable of variable labels or a number. If a number labels are generated using :class:`uuid.UUID`. dtype: Data type for the returned quadratic models. Yields: Quadratic models, each with a single integer variable. """ if isinstance(labels, Iterable): yield from (Integer(v, dtype=dtype) for v in labels) else: yield from (Integer(dtype=dtype) for _ in range(labels)) # register fileview loader load.register(QM_MAGIC_PREFIX, QuadraticModel.from_file)
pass for label, constraint in self.constraints.items(): # put everything in a constraints/label/ directory lstr = json.dumps(serialize_variable(label)) lhs = constraint.lhs.to_file( spool_size=int(1e12))._file.getbuffer() zf.writestr(f'constraints/{lstr}/lhs', lhs) rhs = np.float64(constraint.rhs).tobytes() zf.writestr(f'constraints/{lstr}/rhs', rhs) sense = bytes(constraint.sense.value, 'ascii') zf.writestr(f'constraints/{lstr}/sense', sense) discrete = bytes((label in self.discrete, )) zf.writestr(f'constraints/{lstr}/discrete', discrete) file.seek(0) return file def vartype(self, v: Variable) -> Vartype: return self.variables.vartype(v) CQM = ConstrainedQuadraticModel # register fileview loader load.register(CQM_MAGIC_PREFIX, ConstrainedQuadraticModel.from_file)