Solusi yang disisipkan dalam permintaan, termasuk informasi tentang kunjungan mana yang harus dibatasi dan cara membatasinya.
| Representasi JSON |
|---|
{ "routes": [ { object ( |
| Kolom | |
|---|---|
routes[] |
Rute solusi yang akan disuntikkan. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skippedShipments[] |
Pengiriman solusi yang dilewati untuk disisipkan. Beberapa mungkin tidak ada dalam solusi asli. Lihat kolom |
constraintRelaxations[] |
Untuk nol atau lebih grup kendaraan, menentukan kapan dan seberapa besar batasan akan dilonggarkan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan sepenuhnya dibatasi. |
ConstraintRelaxation
Untuk sekelompok kendaraan, menentukan pada nilai minimum berapa batasan kunjungan akan dilonggarkan dan hingga tingkat mana. Pengiriman yang tercantum dalam kolom skipped_shipment dibatasi untuk dilewati; yaitu, tidak dapat dilakukan.
| Representasi JSON |
|---|
{
"relaxations": [
{
object ( |
| Kolom | |
|---|---|
relaxations[] |
Semua pelonggaran batasan kunjungan yang akan berlaku untuk kunjungan di rute dengan kendaraan di |
vehicleIndices[] |
Menentukan indeks kendaraan yang menerapkan batasan kunjungan Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations kosong, waktu mulai dan urutan semua kunjungan di routes sepenuhnya dibatasi dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan akhir kendaraan dalam routes sepenuhnya dibatasi, kecuali jika kendaraan kosong (yaitu, tidak memiliki kunjungan dan usedIfRouteIsEmpty disetel ke salah (false) dalam model).
relaxations(i).level menentukan tingkat pelonggaran batasan yang diterapkan pada kunjungan #j yang memenuhi:
route.visits(j).start_time >= relaxations(i).threshold_timeDANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, start kendaraan dilonggarkan menjadi relaxations(i).level jika memenuhi:
vehicleStartTime >= relaxations(i).threshold_timeDANrelaxations(i).threshold_visit_count == 0dan ujung kendaraan dilonggarkan menjadirelaxations(i).leveljika memenuhi:vehicleEndTime >= relaxations(i).threshold_timeDANroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Untuk menerapkan tingkat kelonggaran jika kunjungan memenuhi thresholdVisitCount ATAU thresholdTime, tambahkan dua relaxations dengan level yang sama: satu dengan hanya thresholdVisitCount yang ditetapkan dan yang lainnya dengan hanya thresholdTime yang ditetapkan. Jika kunjungan memenuhi kondisi beberapa relaxations, tingkat yang paling longgar akan diterapkan. Akibatnya, dari awal kendaraan melalui kunjungan rute secara berurutan hingga akhir kendaraan, tingkat kelonggaran menjadi lebih longgar: yaitu, tingkat kelonggaran tidak menurun seiring berjalannya rute.
Waktu dan urutan kunjungan rute yang tidak memenuhi kondisi nilai minimum relaxations mana pun sepenuhnya dibatasi dan tidak ada kunjungan yang dapat disisipkan ke dalam urutan ini. Selain itu, jika awal atau akhir perjalanan kendaraan tidak memenuhi kondisi relaksasi apa pun, waktu akan ditetapkan, kecuali jika kendaraan kosong.
| Representasi JSON |
|---|
{
"level": enum ( |
| Kolom | |
|---|---|
level |
Tingkat pelonggaran batasan yang berlaku saat kondisi pada atau setelah |
thresholdTime |
Waktu saat atau setelah pelonggaran Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
thresholdVisitCount |
Jumlah kunjungan saat atau setelah relaksasi Jika |
Tingkat
Menyatakan berbagai tingkat pelonggaran batasan, yang diterapkan untuk kunjungan dan kunjungan berikutnya saat memenuhi kondisi nilai minimum.
Enumerasi di bawah ini diurutkan berdasarkan peningkatan kelonggaran.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Tingkat pelonggaran default implisit: tidak ada batasan yang dilonggarkan, yaitu semua kunjungan dibatasi sepenuhnya. Nilai ini tidak boleh digunakan secara eksplisit di |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Waktu mulai kunjungan dan waktu mulai/berakhir kendaraan akan dilonggarkan, tetapi setiap kunjungan tetap terikat pada kendaraan yang sama dan urutan kunjungan harus diperhatikan: tidak ada kunjungan yang dapat disisipkan di antara atau sebelum kunjungan tersebut. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AFTER_THRESHOLD, tetapi urutan kunjungan juga dilonggarkan: kunjungan hanya dapat dilakukan oleh kendaraan ini, tetapi berpotensi tidak dilakukan. |
RELAX_ALL_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, tetapi kendaraan juga dalam kondisi santai: kunjungan benar-benar gratis pada atau setelah waktu minimum dan berpotensi tidak dilakukan. |