ortools.math_opt.model_pb2

@generated by mypy-protobuf. Do not edit manually! isort:skip_file Copyright 2010-2025 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

An encoding format for mathematical optimization problems.

 1# -*- coding: utf-8 -*-
 2# Generated by the protocol buffer compiler.  DO NOT EDIT!
 3# NO CHECKED-IN PROTOBUF GENCODE
 4# source: ortools/math_opt/model.proto
 5# Protobuf Python Version: 6.31.0
 6"""Generated protocol buffer code."""
 7from google.protobuf import descriptor as _descriptor
 8from google.protobuf import descriptor_pool as _descriptor_pool
 9from google.protobuf import runtime_version as _runtime_version
10from google.protobuf import symbol_database as _symbol_database
11from google.protobuf.internal import builder as _builder
12_runtime_version.ValidateProtobufRuntimeVersion(
13    _runtime_version.Domain.PUBLIC,
14    6,
15    31,
16    0,
17    '',
18    'ortools/math_opt/model.proto'
19)
20# @@protoc_insertion_point(imports)
21
22_sym_db = _symbol_database.Default()
23
24
25from ortools.math_opt import sparse_containers_pb2 as ortools_dot_math__opt_dot_sparse__containers__pb2
26
27
28DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cortools/math_opt/model.proto\x12\x1coperations_research.math_opt\x1a(ortools/math_opt/sparse_containers.proto\"j\n\x0eVariablesProto\x12\x0b\n\x03ids\x18\x01 \x03(\x03\x12\x14\n\x0clower_bounds\x18\x02 \x03(\x01\x12\x14\n\x0cupper_bounds\x18\x03 \x03(\x01\x12\x10\n\x08integers\x18\x04 \x03(\x08\x12\r\n\x05names\x18\x05 \x03(\t\"\xfd\x01\n\x0eObjectiveProto\x12\x10\n\x08maximize\x18\x01 \x01(\x08\x12\x0e\n\x06offset\x18\x02 \x01(\x01\x12R\n\x13linear_coefficients\x18\x03 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleVectorProto\x12U\n\x16quadratic_coefficients\x18\x04 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleMatrixProto\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x10\n\x08priority\x18\x06 \x01(\x03\"`\n\x16LinearConstraintsProto\x12\x0b\n\x03ids\x18\x01 \x03(\x03\x12\x14\n\x0clower_bounds\x18\x02 \x03(\x01\x12\x14\n\x0cupper_bounds\x18\x03 \x03(\x01\x12\r\n\x05names\x18\x04 \x03(\t\"\xef\x01\n\x18QuadraticConstraintProto\x12K\n\x0clinear_terms\x18\x01 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleVectorProto\x12N\n\x0fquadratic_terms\x18\x02 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleMatrixProto\x12\x13\n\x0blower_bound\x18\x03 \x01(\x01\x12\x13\n\x0bupper_bound\x18\x04 \x01(\x01\x12\x0c\n\x04name\x18\x05 \x01(\t\"\xc8\x01\n\x1eSecondOrderConeConstraintProto\x12H\n\x0bupper_bound\x18\x01 \x01(\x0b\x32\x33.operations_research.math_opt.LinearExpressionProto\x12N\n\x11\x61rguments_to_norm\x18\x02 \x03(\x0b\x32\x33.operations_research.math_opt.LinearExpressionProto\x12\x0c\n\x04name\x18\x03 \x01(\t\"}\n\x12SosConstraintProto\x12H\n\x0b\x65xpressions\x18\x01 \x03(\x0b\x32\x33.operations_research.math_opt.LinearExpressionProto\x12\x0f\n\x07weights\x18\x02 \x03(\x01\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xe3\x01\n\x18IndicatorConstraintProto\x12\x19\n\x0cindicator_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x18\n\x10\x61\x63tivate_on_zero\x18\x06 \x01(\x08\x12I\n\nexpression\x18\x02 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleVectorProto\x12\x13\n\x0blower_bound\x18\x03 \x01(\x01\x12\x13\n\x0bupper_bound\x18\x04 \x01(\x01\x12\x0c\n\x04name\x18\x05 \x01(\tB\x0f\n\r_indicator_id\"\xba\x0c\n\nModelProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12?\n\tvariables\x18\x02 \x01(\x0b\x32,.operations_research.math_opt.VariablesProto\x12?\n\tobjective\x18\x03 \x01(\x0b\x32,.operations_research.math_opt.ObjectiveProto\x12_\n\x14\x61uxiliary_objectives\x18\n \x03(\x0b\x32\x41.operations_research.math_opt.ModelProto.AuxiliaryObjectivesEntry\x12P\n\x12linear_constraints\x18\x04 \x01(\x0b\x32\x34.operations_research.math_opt.LinearConstraintsProto\x12W\n\x18linear_constraint_matrix\x18\x05 \x01(\x0b\x32\x35.operations_research.math_opt.SparseDoubleMatrixProto\x12\x61\n\x15quadratic_constraints\x18\x06 \x03(\x0b\x32\x42.operations_research.math_opt.ModelProto.QuadraticConstraintsEntry\x12o\n\x1dsecond_order_cone_constraints\x18\x0b \x03(\x0b\x32H.operations_research.math_opt.ModelProto.SecondOrderConeConstraintsEntry\x12W\n\x10sos1_constraints\x18\x07 \x03(\x0b\x32=.operations_research.math_opt.ModelProto.Sos1ConstraintsEntry\x12W\n\x10sos2_constraints\x18\x08 \x03(\x0b\x32=.operations_research.math_opt.ModelProto.Sos2ConstraintsEntry\x12\x61\n\x15indicator_constraints\x18\t \x03(\x0b\x32\x42.operations_research.math_opt.ModelProto.IndicatorConstraintsEntry\x1ah\n\x18\x41uxiliaryObjectivesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12;\n\x05value\x18\x02 \x01(\x0b\x32,.operations_research.math_opt.ObjectiveProto:\x02\x38\x01\x1as\n\x19QuadraticConstraintsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.operations_research.math_opt.QuadraticConstraintProto:\x02\x38\x01\x1a\x7f\n\x1fSecondOrderConeConstraintsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12K\n\x05value\x18\x02 \x01(\x0b\x32<.operations_research.math_opt.SecondOrderConeConstraintProto:\x02\x38\x01\x1ah\n\x14Sos1ConstraintsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.operations_research.math_opt.SosConstraintProto:\x02\x38\x01\x1ah\n\x14Sos2ConstraintsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.operations_research.math_opt.SosConstraintProto:\x02\x38\x01\x1as\n\x19IndicatorConstraintsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.operations_research.math_opt.IndicatorConstraintProto:\x02\x38\x01\x42\x1e\n\x1a\x63om.google.ortools.mathoptP\x01\x62\x06proto3')
29
30_globals = globals()
31_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ortools.math_opt.model_pb2', _globals)
33if not _descriptor._USE_C_DESCRIPTORS:
34  _globals['DESCRIPTOR']._loaded_options = None
35  _globals['DESCRIPTOR']._serialized_options = b'\n\032com.google.ortools.mathoptP\001'
36  _globals['_MODELPROTO_AUXILIARYOBJECTIVESENTRY']._loaded_options = None
37  _globals['_MODELPROTO_AUXILIARYOBJECTIVESENTRY']._serialized_options = b'8\001'
38  _globals['_MODELPROTO_QUADRATICCONSTRAINTSENTRY']._loaded_options = None
39  _globals['_MODELPROTO_QUADRATICCONSTRAINTSENTRY']._serialized_options = b'8\001'
40  _globals['_MODELPROTO_SECONDORDERCONECONSTRAINTSENTRY']._loaded_options = None
41  _globals['_MODELPROTO_SECONDORDERCONECONSTRAINTSENTRY']._serialized_options = b'8\001'
42  _globals['_MODELPROTO_SOS1CONSTRAINTSENTRY']._loaded_options = None
43  _globals['_MODELPROTO_SOS1CONSTRAINTSENTRY']._serialized_options = b'8\001'
44  _globals['_MODELPROTO_SOS2CONSTRAINTSENTRY']._loaded_options = None
45  _globals['_MODELPROTO_SOS2CONSTRAINTSENTRY']._serialized_options = b'8\001'
46  _globals['_MODELPROTO_INDICATORCONSTRAINTSENTRY']._loaded_options = None
47  _globals['_MODELPROTO_INDICATORCONSTRAINTSENTRY']._serialized_options = b'8\001'
48  _globals['_VARIABLESPROTO']._serialized_start=104
49  _globals['_VARIABLESPROTO']._serialized_end=210
50  _globals['_OBJECTIVEPROTO']._serialized_start=213
51  _globals['_OBJECTIVEPROTO']._serialized_end=466
52  _globals['_LINEARCONSTRAINTSPROTO']._serialized_start=468
53  _globals['_LINEARCONSTRAINTSPROTO']._serialized_end=564
54  _globals['_QUADRATICCONSTRAINTPROTO']._serialized_start=567
55  _globals['_QUADRATICCONSTRAINTPROTO']._serialized_end=806
56  _globals['_SECONDORDERCONECONSTRAINTPROTO']._serialized_start=809
57  _globals['_SECONDORDERCONECONSTRAINTPROTO']._serialized_end=1009
58  _globals['_SOSCONSTRAINTPROTO']._serialized_start=1011
59  _globals['_SOSCONSTRAINTPROTO']._serialized_end=1136
60  _globals['_INDICATORCONSTRAINTPROTO']._serialized_start=1139
61  _globals['_INDICATORCONSTRAINTPROTO']._serialized_end=1366
62  _globals['_MODELPROTO']._serialized_start=1369
63  _globals['_MODELPROTO']._serialized_end=2963
64  _globals['_MODELPROTO_AUXILIARYOBJECTIVESENTRY']._serialized_start=2284
65  _globals['_MODELPROTO_AUXILIARYOBJECTIVESENTRY']._serialized_end=2388
66  _globals['_MODELPROTO_QUADRATICCONSTRAINTSENTRY']._serialized_start=2390
67  _globals['_MODELPROTO_QUADRATICCONSTRAINTSENTRY']._serialized_end=2505
68  _globals['_MODELPROTO_SECONDORDERCONECONSTRAINTSENTRY']._serialized_start=2507
69  _globals['_MODELPROTO_SECONDORDERCONECONSTRAINTSENTRY']._serialized_end=2634
70  _globals['_MODELPROTO_SOS1CONSTRAINTSENTRY']._serialized_start=2636
71  _globals['_MODELPROTO_SOS1CONSTRAINTSENTRY']._serialized_end=2740
72  _globals['_MODELPROTO_SOS2CONSTRAINTSENTRY']._serialized_start=2742
73  _globals['_MODELPROTO_SOS2CONSTRAINTSENTRY']._serialized_end=2846
74  _globals['_MODELPROTO_INDICATORCONSTRAINTSENTRY']._serialized_start=2848
75  _globals['_MODELPROTO_INDICATORCONSTRAINTSENTRY']._serialized_end=2963
76# @@protoc_insertion_point(module_scope)
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = <google._upb._message.FileDescriptor object>
class VariablesProto(google._upb._message.Message, google.protobuf.message.Message):

As used below, we define "#variables" = size(VariablesProto.ids).

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ObjectiveProto(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class LinearConstraintsProto(google._upb._message.Message, google.protobuf.message.Message):

As used below, we define "#linear constraints" = size(LinearConstraintsProto.ids).

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class QuadraticConstraintProto(google._upb._message.Message, google.protobuf.message.Message):
A single quadratic constraint of the form:

lb <= sum{linear_terms} + sum{quadratic_terms} <= ub.

If a variable involved in this constraint is deleted, it is treated as if it were set to zero.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class SecondOrderConeConstraintProto(google._upb._message.Message, google.protobuf.message.Message):

A single second-order cone constraint of the form:

||arguments_to_norm||_2 <= upper_bound,

where upper_bound and each element of arguments_to_norm are linear expressions.

If a variable involved in this constraint is deleted, it is treated as if it were set to zero.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class SosConstraintProto(google._upb._message.Message, google.protobuf.message.Message):

Data for representing a single SOS1 or SOS2 constraint.

If a variable involved in this constraint is deleted, it is treated as if it were set to zero.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class IndicatorConstraintProto(google._upb._message.Message, google.protobuf.message.Message):
Data for representing a single indicator constraint of the form:

Variable(indicator_id) = (activate_on_zero ? 0 : 1) ⇒ lower_bound <= expression <= upper_bound.

If a variable involved in this constraint (either the indicator, or appearing in expression) is deleted, it is treated as if it were set to zero. In particular, deleting the indicator variable means that the indicator constraint is vacuous if activate_on_zero is false, and that it is equivalent to a linear constraint if activate_on_zero is true.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto(google._upb._message.Message, google.protobuf.message.Message):

An optimization problem.

MathOpt supports:
  • Continuous and integer decision variables with optional finite bounds.
  • Linear and quadratic objectives (single or multiple objectives), either minimized or maximized.
  • A number of constraints types, including:
    • Linear constraints
    • Quadratic constraints
    • Second-order cone constraints
    • Logical constraints > SOS1 and SOS2 constraints > Indicator constraints

By default, constraints are represented in "id-to-data" maps. However, we represent linear constraints in a more efficient "struct-of-arrays" format.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.AuxiliaryObjectivesEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.QuadraticConstraintsEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.SecondOrderConeConstraintsEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.Sos1ConstraintsEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.Sos2ConstraintsEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>
class ModelProto.IndicatorConstraintsEntry(google._upb._message.Message, google.protobuf.message.Message):

Abstract base class for protocol messages.

Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below.

DESCRIPTOR: google.protobuf.descriptor.Descriptor = <google._upb._message.Descriptor object>