Solusi yang dimasukkan dalam permintaan termasuk informasi tentang kunjungan mana yang harus dibatasi dan bagaimana kunjungan tersebut harus dibatasi.
Representasi JSON |
---|
{ "routes": [ { object ( |
Kolom | |
---|---|
routes[] |
Rute solusi yang akan diinjeksi. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skippedShipments[] |
Melewati pengiriman solusi yang akan dimasukkan. Beberapa solusi mungkin dihilangkan dari solusi asli. Lihat kolom |
constraintRelaxations[] |
Untuk nol kelompok kendaraan atau lebih, tentukan waktu dan frekuensi untuk melonggarkan batasan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan sepenuhnya dibatasi. |
ConstraintRelaxation
Untuk grup kendaraan, tentukan pada batas minimum berapakah batasan kunjungan akan dilonggarkan dan pada tingkat mana. Pengiriman yang tercantum dalam kolom skipped_shipment
dibatasi untuk dilewati; artinya, pengiriman tersebut tidak dapat dilakukan.
Representasi JSON |
---|
{
"relaxations": [
{
object ( |
Kolom | |
---|---|
relaxations[] |
Semua relaksasi membatasi 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 di routes
akan sepenuhnya dibatasi 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 memiliki usedIfRouteIsEmpty
yang ditetapkan ke salah pada model).
relaxations(i).level
menentukan tingkat relaksasi batasan yang diterapkan pada kunjungan #j yang memenuhi:
route.visits(j).start_time >= relaxations(i).threshold_time
DANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, start kendaraan akan 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 thresholdTime
yang ditetapkan. Jika kunjungan memenuhi kondisi beberapa relaxations
, tingkat yang paling longgar akan berlaku. Akibatnya, dari awal kendaraan hingga kunjungan rute hingga ke akhir kendaraan, tingkat relaksasi menjadi lebih santai: yaitu, tingkat relaksasi tidak menurun saat rute berlangsung.
Waktu dan urutan kunjungan rute yang tidak memenuhi ketentuan ambang batas relaxations
sepenuhnya dibatasi dan tidak ada kunjungan yang dapat disisipkan ke dalam urutan ini. Selain itu, jika titik awal atau akhir kendaraan tidak memenuhi kondisi relaksasi apa pun, waktu akan tetap, kecuali jika kendaraan kosong.
Representasi JSON |
---|
{
"level": enum ( |
Kolom | |
---|---|
level |
Tingkat relaksasi batasan yang berlaku saat kondisi pada atau setelah |
thresholdTime |
Waktu saat atau setelah relaksasi Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan maksimal sembilan digit fraksional. Contoh: |
thresholdVisitCount |
Jumlah kunjungan saat atau setelah relaksasi Jika yang ditetapkan adalah |
Tingkat
Menunjukkan berbagai tingkat relaksasi batasan, yang diterapkan untuk kunjungan dan yang mengikuti saat memenuhi kondisi batas.
Enumerasi di bawah ini bertujuan untuk meningkatkan relaksasi.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Tingkat relaksasi default implisit: tidak ada batasan yang dilonggarkan, artinya, 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 santai, tetapi setiap kunjungan tetap terikat pada kendaraan yang sama dan urutan kunjungan harus diperhatikan: 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 longgar: kunjungan tetap terikat dengan 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 ambang batas dan berpotensi tidak dapat dilakukan. |