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 dimasukkan. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skipped |
Pengiriman solusi yang akan dimasukkan dilewati. Beberapa mungkin dihilangkan dari solusi asli. Lihat kolom |
constraint |
Untuk nol atau beberapa grup kendaraan, menentukan kapan dan seberapa banyak untuk melonggarkan batasan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan dibatasi sepenuhnya. |
ConstraintRelaxation
Untuk grup kendaraan, menentukan pada nilai minimum mana batasan kunjungan akan dilonggarkan dan ke tingkat mana. Pengiriman yang tercantum di kolom skipped_shipment
dibatasi untuk dilewati; yaitu, pengiriman tidak dapat dilakukan.
Representasi JSON |
---|
{
"relaxations": [
{
object ( |
Kolom | |
---|---|
relaxations[] |
Semua pelonggaran batasan kunjungan yang akan berlaku untuk kunjungan di rute dengan kendaraan di |
vehicle |
Menentukan indeks kendaraan tempat Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations
kosong, waktu mulai dan urutan semua kunjungan di routes
akan sepenuhnya dibatasi dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan waktu berakhir kendaraan di routes
dibatasi sepenuhnya, kecuali jika kendaraan kosong (yaitu, tidak memiliki kunjungan dan usedIfRouteIsEmpty
ditetapkan ke salah dalam model).
relaxations(i).level
menentukan tingkat pelonggaran 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, awal kendaraan dilonggarkan ke relaxations(i).level
jika memenuhi:
vehicleStartTime >= relaxations(i).threshold_time
DANrelaxations(i).threshold_visit_count == 0
dan ujung kendaraan dilonggarkan menjadirelaxations(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 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 hingga kunjungan rute secara berurutan hingga akhir kendaraan, tingkat relaksasi menjadi lebih santai: yaitu, tingkat relaksasi tidak menurun seiring kemajuan rute.
Waktu dan urutan kunjungan rute yang tidak memenuhi kondisi nilai minimum relaxations
apa pun akan sepenuhnya dibatasi dan tidak ada kunjungan yang dapat disisipkan ke dalam urutan ini. Selain itu, jika awal atau akhir kendaraan tidak memenuhi kondisi pelonggaran apa pun, waktunya akan tetap, kecuali jika kendaraan kosong.
Representasi JSON |
---|
{
"level": enum ( |
Kolom | |
---|---|
level |
Tingkat pelonggaran batasan yang berlaku saat kondisi pada atau setelah |
threshold |
Waktu saat atau setelah relaksasi Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: |
threshold |
Jumlah kunjungan saat atau setelah relaksasi Jika |
Tingkat
Mengekspresikan berbagai tingkat pelonggaran batasan, yang diterapkan untuk kunjungan dan kunjungan berikutnya jika memenuhi kondisi nilai minimum.
Pengenumerasian di bawah ini diurutkan berdasarkan peningkatan relaksasi.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Tingkat pelonggaran default implisit: tidak ada batasan yang dilonggarkan, yaitu, semua kunjungan sepenuhnya dibatasi. Nilai ini tidak boleh digunakan secara eksplisit di |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Waktu mulai kunjungan dan waktu mulai/akhir 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 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 dilonggarkan: kunjungan sepenuhnya gratis pada atau setelah waktu minimum dan berpotensi tidak dilakukan. |