Solusi yang dimasukkan dalam permintaan termasuk informasi tentang kunjungan yang harus dibatasi dan cara membatasinya.
Representasi JSON |
---|
{ "routes": [ { object ( |
Kolom | |
---|---|
routes[] |
Rute solusi yang akan diinjeksi. Beberapa rute mungkin dihilangkan dari solusi awal. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skippedShipments[] |
Melewati pengiriman solusi untuk diinjeksi. Beberapa bagian mungkin dihilangkan dari solusi awal. Lihat kolom |
constraintRelaxations[] |
Untuk nol kelompok kendaraan atau lebih, tentukan waktu dan seberapa banyak batasan yang akan dilonggarkan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan sepenuhnya dibatasi. |
ConstraintRelaxation
Untuk sekelompok kendaraan, tentukan batasan untuk kunjungan yang akan dilonggarkan dan batas maksimalnya. Pengiriman yang tercantum di kolom skipped_shipment
dibatasi untuk dilewati; yaitu, mereka tidak dapat dilakukan.
Representasi JSON |
---|
{
"relaxations": [
{
object ( |
Kolom | |
---|---|
relaxations[] |
Semua pelonggaran batasan kunjungan yang akan berlaku untuk kunjungan pada 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 pada routes
akan dibatasi sepenuhnya dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan berakhir kendaraan di routes
sepenuhnya dibatasi, kecuali jika kendaraan kosong (yaitu, tidak memiliki kunjungan dan menetapkan usedIfRouteIsEmpty
ke salah dalam model).
relaxations(i).level
menentukan tingkat relaksasi batasan yang diterapkan ke kunjungan #j yang memenuhi:
route.visits(j).start_time >= relaxations(i).threshold_time
DANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, start kendaraan dilonggarkan ke relaxations(i).level
jika memenuhi:
vehicleStartTime >= relaxations(i).threshold_time
DANrelaxations(i).threshold_visit_count == 0
dan ujung kendaraan dilonggarkan kerelaxations(i).level
jika memenuhi:vehicleEndTime >= relaxations(i).threshold_time
DANroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Untuk menerapkan tingkat relaksasi jika kunjungan memenuhi thresholdVisitCount
ATAU thresholdTime
, tambahkan dua relaxations
dengan level
yang sama: satu dengan hanya thresholdVisitCount
yang disetel dan satu lagi dengan hanya thresholdTime
yang disetel. Jika sebuah kunjungan memenuhi kondisi beberapa relaxations
, tingkat yang paling longgar akan berlaku. Hasilnya, dari awal kendaraan hingga kunjungan rute hingga akhir kendaraan, tingkat relaksasi menjadi lebih santai: yaitu, tingkat relaksasi tidak menurun seiring berjalannya rute.
Waktu dan urutan kunjungan rute yang tidak memenuhi kondisi nilai minimum relaxations
akan sepenuhnya dibatasi dan tidak ada kunjungan yang dapat dimasukkan ke dalam urutan ini. Selain itu, jika start atau end kendaraan tidak memenuhi kondisi relaksasi apa pun, waktu yang diperlukan adalah tetap, kecuali jika kendaraan kosong.
Representasi JSON |
---|
{
"level": enum ( |
Kolom | |
---|---|
level |
Level relaksasi batasan yang berlaku saat kondisi pada atau setelah |
thresholdTime |
Waktu saat atau setelah relaksasi Stempel waktu dalam RFC3339 UTC "Zulu" , dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: |
thresholdVisitCount |
Jumlah kunjungan pada saat atau setelah relaksasi Jika |
Tingkat
Mengekspresikan berbagai level relaksasi batasan, yang diterapkan untuk kunjungan dan yang mengikuti ketika memenuhi kondisi ambang batas.
Enumerasi di bawah ini adalah untuk meningkatkan relaksasi.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Tingkat relaksasi default implisit: tidak ada batasan yang longgar, yaitu, semua kunjungan sepenuhnya dibatasi. 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 dengan kendaraan yang sama dan urutan kunjungan harus diamati: tidak ada kunjungan yang dapat disisipkan di antara keduanya atau sebelumnya. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AFTER_THRESHOLD , tetapi urutan kunjungan juga dilonggarkan: kunjungan tetap terikat pada kendaraan mereka. |
RELAX_ALL_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , tetapi kendaraan juga santai: kunjungan sepenuhnya gratis pada atau setelah waktu minimum dan berpotensi mengalami penurunan performa. |