ortools.scheduling.rcpsp_pb2

@generated by mypy-protobuf. Do not edit manually! isort:skip_file RCPSP: Resource-Constrained Project Scheduling Problem.

The problem description is as follows:

You have a set of resources. They all have a maximum capacity, and can be renewable or not.

You have a set of tasks. Each task has a list of successors, and a list of recipes. Each recipe consists of a duration, and a list of demands, one per resource. The problem is always built with 2 sentinels. The first task is the source with a set of successors. The last task is the sink, with no successors and a zero duration. All tasks are reachable from the source task. And the sink task is reachable from all tasks. Furthermore, the graph has no cycles.

The tasks dependencies form a DAG with a single source and a single end. Both source and end tasks have a zero duration, and no resource consumption.

In case the problem is of type RCPSP/Max. The data contains an additional 3D array of delays per task. This structure contains the following information for task i with recipe ri and successor j with recipe rj, then start(i) + delay(i, ri, j, rj) <= start(j). This subsumes the normal successor predecence of the non RCPSP/Max variation, i.e.: start(i) + duration(i, mi) <= start(j).

In the normal case, the objective is to minimize the makespan of the problem.

In the resource investment problem, there is no makespan. It is replaced by a strict deadline, and each task must finish before this deadline. In that case, resources have a unit cost, and the objective is to minimize the sum of resource cost.

In the consumer/producer case, tasks have a zero duration, and demands can be negative. The constraint states that at each time point, the sum of demands happening before or during this time must be between the min and max capacity. Note that in that case, both min and max capacity can be negative. Furthermore, if 0 is not in [min_capacity, max_capacity], then a sufficient set of events must happen at time 0 such that the sum of their demands must fall inside the capacity interval.

The supported file formats are:
 1# -*- coding: utf-8 -*-
 2# Generated by the protocol buffer compiler.  DO NOT EDIT!
 3# NO CHECKED-IN PROTOBUF GENCODE
 4# source: ortools/scheduling/rcpsp.proto
 5# Protobuf Python Version: 6.31.1
 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    1,
17    '',
18    'ortools/scheduling/rcpsp.proto'
19)
20# @@protoc_insertion_point(imports)
21
22_sym_db = _symbol_database.Default()
23
24
25
26
27DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eortools/scheduling/rcpsp.proto\x12$operations_research.scheduling.rcpsp\"\\\n\x08Resource\x12\x14\n\x0cmax_capacity\x18\x01 \x01(\x05\x12\x14\n\x0cmin_capacity\x18\x02 \x01(\x05\x12\x11\n\trenewable\x18\x03 \x01(\x08\x12\x11\n\tunit_cost\x18\x04 \x01(\x05\">\n\x06Recipe\x12\x10\n\x08\x64uration\x18\x01 \x01(\x05\x12\x0f\n\x07\x64\x65mands\x18\x02 \x03(\x05\x12\x11\n\tresources\x18\x03 \x03(\x05\"%\n\x0fPerRecipeDelays\x12\x12\n\nmin_delays\x18\x01 \x03(\x05\"b\n\x12PerSuccessorDelays\x12L\n\rrecipe_delays\x18\x01 \x03(\x0b\x32\x35.operations_research.scheduling.rcpsp.PerRecipeDelays\"\xad\x01\n\x04Task\x12\x12\n\nsuccessors\x18\x01 \x03(\x05\x12=\n\x07recipes\x18\x02 \x03(\x0b\x32,.operations_research.scheduling.rcpsp.Recipe\x12R\n\x10successor_delays\x18\x03 \x03(\x0b\x32\x38.operations_research.scheduling.rcpsp.PerSuccessorDelays\"\x83\x03\n\x0cRcpspProblem\x12\x41\n\tresources\x18\x01 \x03(\x0b\x32..operations_research.scheduling.rcpsp.Resource\x12\x39\n\x05tasks\x18\x02 \x03(\x0b\x32*.operations_research.scheduling.rcpsp.Task\x12\x1c\n\x14is_consumer_producer\x18\x03 \x01(\x08\x12\x1e\n\x16is_resource_investment\x18\x04 \x01(\x08\x12\x14\n\x0cis_rcpsp_max\x18\x05 \x01(\x08\x12\x10\n\x08\x64\x65\x61\x64line\x18\x06 \x01(\x05\x12\x0f\n\x07horizon\x18\x07 \x01(\x05\x12\x14\n\x0crelease_date\x18\x08 \x01(\x05\x12\x16\n\x0etardiness_cost\x18\t \x01(\x05\x12\x10\n\x08mpm_time\x18\n \x01(\x05\x12\x0c\n\x04seed\x18\x0b \x01(\x03\x12\x10\n\x08\x62\x61sedata\x18\x0c \x01(\t\x12\x10\n\x08\x64ue_date\x18\r \x01(\x05\x12\x0c\n\x04name\x18\x0e \x01(\t\"I\n\x0fRcpspAssignment\x12\x15\n\rstart_of_task\x18\x01 \x03(\x03\x12\x1f\n\x17selected_recipe_of_task\x18\x02 \x03(\x05\x42I\n#com.google.ortools.scheduling.rcpspP\x01\xaa\x02\x1fGoogle.OrTools.Scheduling.Rcpspb\x06proto3')
28
29_globals = globals()
30_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ortools.scheduling.rcpsp_pb2', _globals)
32if not _descriptor._USE_C_DESCRIPTORS:
33  _globals['DESCRIPTOR']._loaded_options = None
34  _globals['DESCRIPTOR']._serialized_options = b'\n#com.google.ortools.scheduling.rcpspP\001\252\002\037Google.OrTools.Scheduling.Rcpsp'
35  _globals['_RESOURCE']._serialized_start=72
36  _globals['_RESOURCE']._serialized_end=164
37  _globals['_RECIPE']._serialized_start=166
38  _globals['_RECIPE']._serialized_end=228
39  _globals['_PERRECIPEDELAYS']._serialized_start=230
40  _globals['_PERRECIPEDELAYS']._serialized_end=267
41  _globals['_PERSUCCESSORDELAYS']._serialized_start=269
42  _globals['_PERSUCCESSORDELAYS']._serialized_end=367
43  _globals['_TASK']._serialized_start=370
44  _globals['_TASK']._serialized_end=543
45  _globals['_RCPSPPROBLEM']._serialized_start=546
46  _globals['_RCPSPPROBLEM']._serialized_end=933
47  _globals['_RCPSPASSIGNMENT']._serialized_start=935
48  _globals['_RCPSPASSIGNMENT']._serialized_end=1008
49# @@protoc_insertion_point(module_scope)
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = <google._upb._message.FileDescriptor object>
class Resource(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 Recipe(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 PerRecipeDelays(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 PerSuccessorDelays(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 Task(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 RcpspProblem(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 RcpspAssignment(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>