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:
- standard psplib (.sm and .mm): http://www.om-db.wi.tum.de/psplib/data.html
- rcpsp problem in the patterson format (.rcp): http://www.om-db.wi.tum.de/psplib/dataob.html
- rcpsp/max (.sch): https://www.wiwi.tu-clausthal.de/de/abteilungen/produktion/forschung/ schwerpunkte/project-generator/rcpspmax/ https://www.wiwi.tu-clausthal.de/de/abteilungen/produktion/forschung/ schwerpunkte/project-generator/mrcpspmax/
- resource investment problem with max delay (.sch): https://www.wiwi.tu-clausthal.de/de/abteilungen/produktion/forschung/ schwerpunkte/project-generator/ripmax/
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)
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.
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.
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.
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.
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.
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.
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.