ortools.scheduling.jobshop_scheduling_pb2
@generated by mypy-protobuf. Do not edit manually! isort:skip_file This protocol buffer is used to represent jobshop scheduling problems. https://en.wikipedia.org/wiki/Job_shop_scheduling
In a jobshop, a job is a sequence of tasks. A task must be performed by a machine for a given duration. A task cannot be interrupted. All time are >= 0.
Each task in a job must be performed in sequence. That is the second task cannot start before the first one has finished.
One machine can only execute one task at a time.
Tasks can have alternative ways of being executed. Each way specifies the machine that can perform it, the duration, and an optional cost.
Each job can specify hard constraints on its start and end date, as well as soft constraints on its end date. In the case of soft constraints, both earliness and tardiness penalties can be specified.
A makespan cost specifies a penalty based on the max ending time of all jobs.
The objective to minimize is:
the sum of task costs + the earliness-tardiness cost for all jobs + the weighted makespan.
1# -*- coding: utf-8 -*- 2# Generated by the protocol buffer compiler. DO NOT EDIT! 3# NO CHECKED-IN PROTOBUF GENCODE 4# source: ortools/scheduling/jobshop_scheduling.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/jobshop_scheduling.proto' 19) 20# @@protoc_insertion_point(imports) 21 22_sym_db = _symbol_database.Default() 23 24 25from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 26 27 28DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+ortools/scheduling/jobshop_scheduling.proto\x12#operations_research.scheduling.jssp\x1a\x1egoogle/protobuf/wrappers.proto\"7\n\x04Task\x12\x0f\n\x07machine\x18\x01 \x03(\x05\x12\x10\n\x08\x64uration\x18\x02 \x03(\x03\x12\x0c\n\x04\x63ost\x18\x03 \x03(\x03\"\xad\x02\n\x03Job\x12\x38\n\x05tasks\x18\x01 \x03(\x0b\x32).operations_research.scheduling.jssp.Task\x12\x33\n\x0e\x65\x61rliest_start\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.Int64Value\x12\x16\n\x0e\x65\x61rly_due_date\x18\x03 \x01(\x03\x12\x15\n\rlate_due_date\x18\x04 \x01(\x03\x12$\n\x1c\x65\x61rliness_cost_per_time_unit\x18\x05 \x01(\x03\x12#\n\x1blateness_cost_per_time_unit\x18\x06 \x01(\x03\x12/\n\nlatest_end\x18\x07 \x01(\x0b\x32\x1b.google.protobuf.Int64Value\x12\x0c\n\x04name\x18\x10 \x01(\t\"/\n\x14TransitionTimeMatrix\x12\x17\n\x0ftransition_time\x18\x01 \x03(\x03\"r\n\x07Machine\x12Y\n\x16transition_time_matrix\x18\x01 \x01(\x0b\x32\x39.operations_research.scheduling.jssp.TransitionTimeMatrix\x12\x0c\n\x04name\x18\x10 \x01(\t\"U\n\rJobPrecedence\x12\x17\n\x0f\x66irst_job_index\x18\x01 \x01(\x05\x12\x18\n\x10second_job_index\x18\x02 \x01(\x05\x12\x11\n\tmin_delay\x18\x03 \x01(\x03\"\xca\x02\n\x10JsspInputProblem\x12\x36\n\x04jobs\x18\x01 \x03(\x0b\x32(.operations_research.scheduling.jssp.Job\x12>\n\x08machines\x18\x02 \x03(\x0b\x32,.operations_research.scheduling.jssp.Machine\x12G\n\x0bprecedences\x18\x03 \x03(\x0b\x32\x32.operations_research.scheduling.jssp.JobPrecedence\x12#\n\x1bmakespan_cost_per_time_unit\x18\x04 \x01(\x03\x12\x34\n\x0escaling_factor\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.DoubleValue\x12\x0c\n\x04seed\x18\x18 \x01(\x05\x12\x0c\n\x04name\x18\x10 \x01(\t\"=\n\x0c\x41ssignedTask\x12\x19\n\x11\x61lternative_index\x18\x01 \x01(\x05\x12\x12\n\nstart_time\x18\x02 \x01(\x03\"\x81\x01\n\x0b\x41ssignedJob\x12@\n\x05tasks\x18\x01 \x03(\x0b\x32\x31.operations_research.scheduling.jssp.AssignedTask\x12\x15\n\rdue_date_cost\x18\x02 \x01(\x03\x12\x19\n\x11sum_of_task_costs\x18\x03 \x01(\x03\"\x7f\n\x12JsspOutputSolution\x12>\n\x04jobs\x18\x01 \x03(\x0b\x32\x30.operations_research.scheduling.jssp.AssignedJob\x12\x15\n\rmakespan_cost\x18\x02 \x01(\x03\x12\x12\n\ntotal_cost\x18\x03 \x01(\x03\x42G\n\"com.google.ortools.scheduling.jsspP\x01\xaa\x02\x1eGoogle.OrTools.scheduling.Jsspb\x06proto3') 29 30_globals = globals() 31_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) 32_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ortools.scheduling.jobshop_scheduling_pb2', _globals) 33if not _descriptor._USE_C_DESCRIPTORS: 34 _globals['DESCRIPTOR']._loaded_options = None 35 _globals['DESCRIPTOR']._serialized_options = b'\n\"com.google.ortools.scheduling.jsspP\001\252\002\036Google.OrTools.scheduling.Jssp' 36 _globals['_TASK']._serialized_start=116 37 _globals['_TASK']._serialized_end=171 38 _globals['_JOB']._serialized_start=174 39 _globals['_JOB']._serialized_end=475 40 _globals['_TRANSITIONTIMEMATRIX']._serialized_start=477 41 _globals['_TRANSITIONTIMEMATRIX']._serialized_end=524 42 _globals['_MACHINE']._serialized_start=526 43 _globals['_MACHINE']._serialized_end=640 44 _globals['_JOBPRECEDENCE']._serialized_start=642 45 _globals['_JOBPRECEDENCE']._serialized_end=727 46 _globals['_JSSPINPUTPROBLEM']._serialized_start=730 47 _globals['_JSSPINPUTPROBLEM']._serialized_end=1060 48 _globals['_ASSIGNEDTASK']._serialized_start=1062 49 _globals['_ASSIGNEDTASK']._serialized_end=1123 50 _globals['_ASSIGNEDJOB']._serialized_start=1126 51 _globals['_ASSIGNEDJOB']._serialized_end=1255 52 _globals['_JSSPOUTPUTSOLUTION']._serialized_start=1257 53 _globals['_JSSPOUTPUTSOLUTION']._serialized_end=1384 54# @@protoc_insertion_point(module_scope)
This message specifies a task inside a job.
A job is an ordered sequence of tasks, plus hard constraints on its earliest start time, and its latest completion time. As well as optional earliness-tardiness penalties on its end date. The job starts with the first task in the list, and ends with the last.
Stores the transition time matrix between jobs on a given machine. If the initial job has n jobs, then time[i * n + j] will indicate the minimum delay between the end of a task of a job i performed on this machine and the start of a task of job j performed on the same machine. Nothing can be executed on that machine during this delay.
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.
Specifies a precedence relation between jobs. It states: start(second_job) >= end(first_job) + min_delay.
The input of a problem.
Stores how a task is executed.
Stores how a job is executed.
The output of solving a jobshop problem.