Package google.research.optimization.v1

Indeks

Pengoptimalan

One Platform API yang mengekspos serangkaian pemecah masalah pengoptimalan untuk masalah riset operasi tingkat tinggi. MOE:begin_strip

DesignShippingNetwork

rpc DesignShippingNetwork(DesignShippingNetworkRequest) returns (DesignShippingNetworkResponse)

Menyelesaikan masalah desain dan penjadwalan jaringan pengiriman liner (LSNDSP) dari DesignShippingNetworkRequest yang ditentukan.

LSNDSP merupakan masalah optimasi kompleks yang berupaya menemukan desain dan penjadwalan jaringan pengiriman kapal yang optimal. Tujuannya adalah untuk meminimalkan total biaya pengoperasian jaringan, sekaligus memenuhi sebanyak mungkin permintaan kargo antar pelabuhan.

LSNDSP dapat dipecah menjadi dua submasalah utama: desain dan penjadwalan jaringan. Submasalah desain jaringan menentukan serangkaian port yang akan dilayani oleh jaringan, jumlah kapal yang akan dikerahkan di setiap rute, dan rute yang akan diambil kapal. Submasalah penjadwalan menentukan jadwal pelayaran untuk kapal, dengan mempertimbangkan waktu yang dibutuhkan untuk berlayar antar pelabuhan, waktu yang dibutuhkan untuk memuat dan membongkar kargo, dan permintaan transportasi kargo antar pelabuhan.

Secara sederhana, LSNDSP adalah masalah dalam menentukan porta mana yang harus dilayani, berapa banyak kapal yang akan digunakan, dan bagaimana menjadwalkan kapal sehingga biaya pengoperasian jaringan diminimalkan sekaligus memaksimalkan pendapatan untuk memenuhi permintaan kargo. Subkomponen LSNDSP yang menantang adalah perutean kargo, yang menentukan permintaan mana yang harus dipenuhi dan rute mana yang akan ditetapkan ke kargo untuk memaksimalkan pendapatan.

SolveMathOptModel

rpc SolveMathOptModel(SolveMathOptModelRequest) returns (SolveMathOptModelResponse)

Menyelesaikan model input dan menampilkan hasilnya sekaligus. Gunakan metode ini saat Anda tidak memerlukan callback, inkrementalitas, dan tidak perlu melacak progres penyelesaian.

SolveShiftGeneration

rpc SolveShiftGeneration(SolveShiftGenerationRequest) returns (SolveShiftGenerationResponse)

Menyelesaikan masalah pembuatan shift dari SolveShiftGenerationRequest yang ditentukan dengan menghasilkan pergeseran dari template shift tertentu untuk memenuhi permintaan karyawan.

SolveShiftScheduling

rpc SolveShiftScheduling(SolveShiftSchedulingRequest) returns (SolveShiftSchedulingResponse)

Menyelesaikan masalah penjadwalan shift tetap dari SolveShiftSchedulingRequest yang ditentukan dengan menetapkan karyawan untuk shift sehingga preferensi penjadwalan karyawan dimaksimalkan dan pelanggaran batasan penjadwalan dapat diminimalkan.

DesignShippingNetworkRequest

Permintaan ini berisi instance LSNDSP dan harus berisi satu set port, satu set kandidat kaki, satu set kelas kapal, dan satu set komoditas yang harus dipenuhi.

Kolom
request_id

string

ID masalah atau permintaan.

solver_parameters

SolverParameters

Parameter untuk pemecah.

ports[]

Port

Daftar kemungkinan port yang akan dipanggil dalam layanan kapal. Permintaan hanya boleh berisi ID port yang ada dalam daftar ini.

leg_candidates[]

LegCandidate

Daftar kandidat kaki potensial yang akan ditambahkan ke layanan kapal. Permintaan hanya boleh berisi ID kandidat segmen yang ada dalam daftar ini.

vessel_classes[]

VesselClass

Daftar kelas kapal untuk menjalankan layanan kapal. Perhatikan bahwa semua kapal dari kelas yang sama sepenuhnya dapat dipertukarkan. Permintaan hanya boleh berisi ID kelas kapal yang ada dalam daftar ini.

commodity_demands[]

CommodityDemand

Daftar permintaan komoditas potensial (yaitu kontainer) yang harus dipenuhi oleh layanan kapal.

vessel_services[]

VesselService

Jaringan layanan kapal yang valid (biasanya kondisi jaringan saat ini) dapat disediakan untuk digunakan sebagai titik awal pengoptimalan.

DesignShippingNetworkResponse

Respons menyimpan solusi ke instance LSNDSP yang diteruskan dalam permintaan. Jalur transportasi umum ini berisi jaringan layanan kapal dan jalur permintaan komoditas yang valid. Total permintaan komoditas yang melewati setiap segmen tidak boleh melebihi kapasitas kelas kapal yang melayani segmen ini. Perhatikan bahwa tidak memiliki layanan kapal tanpa permintaan terpenuhi selalu merupakan solusi yang layak untuk masalah desain dan penjadwalan jaringan pengiriman kapal.

Kolom
request_id

string

ID permintaan yang dikaitkan dengan respons ini.

vessel_services[]

VesselService

Jaringan layanan kapal. Untuk setiap kelas kapal, jumlah total kapal yang digunakan tidak boleh melebihi jumlah kapal yang tersedia untuk kelas ini.

commodity_demand_paths[]

CommodityDemandPath

Daftar semua jalur permintaan komoditas yang dilalui oleh permintaan komoditas positif. Perhatikan bahwa beberapa ID permintaan komoditas mungkin tidak disertakan jika tidak ada permintaan yang dikirimkan. Atau, permintaan komoditas dapat dipenuhi sebagian. Untuk setiap permintaan komoditas, total kuantitas yang dipenuhi tidak boleh melebihi total permintaan. Terakhir, commodity_demand_paths bergantung pada vessel_services (lihat definisi CommodityDemandPath).

SolveMathOptModelRequest

Meminta solusi jarak jauh unary di MathOpt.

Kolom
solver_type

SolverTypeProto

Opsional. Jenis pemecah soal untuk menyelesaikan soal secara numerik. Perhatikan bahwa jika pemecah masalah tidak mendukung fitur tertentu dalam model, prosedur pengoptimalan tidak akan berhasil.

model

ModelProto

Wajib. Representasi matematis dari soal pengoptimalan yang harus dipecahkan.

parameters

SolveParametersProto

Opsional. Parameter untuk mengontrol satu penyelesaian. Parameter enable_output ditangani secara khusus. Untuk pemecah masalah yang mendukung callback pesan, menyetelnya ke benar (true) akan membuat server mendaftarkan callback pesan. Pesan yang dihasilkan akan ditampilkan di SolveMathOptModelResponse.messages. Untuk pemecah masalah lainnya, menyetel enable_output ke true akan menghasilkan error.

model_parameters

ModelSolveParametersProto

Opsional. Parameter untuk mengontrol solusi tunggal yang spesifik untuk model input (lihat SolveParametersProto untuk parameter independen model).

SolveMathOptModelResponse

Respons untuk penyelesaian jarak jauh unary di MathOpt.

Kolom
result

SolveResultProto

Deskripsi output dari penyelesaian model dalam permintaan.

messages[]

string

Jika SolveParametersProto.enable_output telah digunakan, ini akan berisi pesan log untuk pemecah masalah yang mendukung callback pesan.

SolveShiftGenerationRequest

Permintaan untuk menyelesaikan masalah Pembuatan Shift. Aturan untuk menghasilkan shift diuraikan di setiap ShiftTemplate. Beberapa perubahan dalam respons dapat dibuat dari satu ShiftTemplate. Shift yang dihasilkan dan dipilih oleh pemecah masalah harus mematuhi aturan yang diuraikan dalam ShiftTemplate dan mencakup permintaan karyawan yang ditentukan.

Kolom
solver_config

SolverConfig

Opsional. Parameter untuk pemecah.

shift_templates[]

ShiftTemplate

Wajib. Kumpulan template shift yang menentukan aturan untuk menghasilkan shift.

employee_demands[]

EmployeeDemand

Wajib. Total karyawan meminta agar shift yang dihasilkan shift_templates harus ditanggung

SolveShiftGenerationResponse

Respons untuk masalah Pembuatan Shift. Jika solution_status yang ditampilkan adalah SOLVED, kumpulan pergeseran valid yang dihasilkan oleh pemecah masalah akan ditampilkan di employee_schedules. Untuk jadwal shift yang valid, properti berikut akan berlaku:

  1. Setiap shift yang dihasilkan di employee_schedules mematuhi aturan yang ditentukan dalam ShiftTemplate yang sesuai.
  2. Setiap peristiwa yang dipilih di setiap shift akan mematuhi aturan yang ditentukan dalam ShiftTemplate.Event terkait.
  3. Jumlah total karyawan yang ditetapkan ke serangkaian shift yang dihasilkan dari ShiftTemplate yang sama tidak melebihi maximum_employee_count template tersebut.
  4. Sekumpulan karyawan yang ditugaskan mencakup permintaan pada setiap interval tertentu.

Kolom
solution_status

ShiftGenerationSolutionStatus

Status solusi yang ditampilkan. Jika solution_status bukan SOLVED, employee_schedules akan kosong.

employee_schedules[]

EmployeeSchedule

Kumpulan shift yang dihasilkan oleh pemecah masalah beserta jumlah karyawan yang ditugaskan untuk setiap jadwal.

demand_coverage_violations[]

DemandCoverageViolation

Pelanggaran cakupan permintaan berdasarkan employee_counts yang ditetapkan dalam employee_schedules yang ditentukan. employee_demands yang diberikan dalam permintaan digabungkan -- jika dua interval employee_demand tumpang-tindih, permintaan dijumlahkan di bagian interval yang tumpang-tindih.

SolveShiftSchedulingRequest

Permintaan untuk API penjadwalan tenaga kerja. Setidaknya, permintaan tersebut menentukan serangkaian karyawan, serangkaian shift, serangkaian kemungkinan peran yang dapat dilakukan oleh karyawan, dan serangkaian persyaratan cakupan. Persyaratan cakupan menentukan, selama jangka waktu tertentu, jumlah karyawan yang diperlukan untuk memenuhi setiap peran. Karyawan yang ditugaskan ke shift juga ditugaskan ke satu (dan hanya satu) peran untuk shift tersebut, dan karyawan tidak dapat ditugaskan ke dua {i>shift<i} yang tumpang tindih. Lihat SolveShiftSchedulingResponse di bawah untuk detail selengkapnya tentang apa yang membuat penetapan shift valid.

Batasan penjadwalan tambahan dapat ditentukan untuk setiap karyawan untuk lebih membatasi masalah. Semua batasan penjadwalan dan persyaratan cakupan diberikan tingkat prioritas (WAJIB, TINGGI, MEDIUM, RENDAH). Semua batasan dengan tingkat prioritas PRIORITY_MANDATORY harus dipenuhi oleh pemecah masalah. Batasan dengan prioritas lain apa pun dapat dilanggar oleh pemecah, tetapi pelanggaran ini diminimalkan sesuai urutan prioritas. Lihat enum Priority untuk detail selengkapnya tentang cara penanganan tingkat prioritas untuk setiap batasan.

Pemecah masalah akan mencoba memaksimalkan nilai ShiftPreference.preference untuk setiap Karyawan selama batasan yang diberikan. Pemecah masalah tidak akan melanggar batasan agar dapat memenuhi preferensi yang lebih banyak; pemecah masalah hanya akan melanggar batasan jika tugas penjadwalan tidak memungkinkan berdasarkan batasan yang diberikan.

Catatan tentang waktu: Semua waktu dalam masalah ditentukan menggunakan pesan DateTime. Pesan ini menyertakan kolom TimeZone. Zona Waktu diasumsikan menjadi UTC, kecuali jika ditentukan sebaliknya oleh pengguna. Pesan DateTime hanya boleh ditetapkan hingga menit; semua detik dan nano akan diabaikan.

Kolom
request_id

string

ID masalah atau permintaan.

solve_parameters

SolveParameters

Parameter untuk mengontrol satu penyelesaian masalah.

employees[]

Employee

Semua karyawan yang tersedia untuk dijadwalkan.

shifts[]

Shift

Semua shift untuk mengikuti jadwal.

coverage_requirements[]

CoverageRequirement

Persyaratan cakupan untuk seluruh cakrawala perencanaan. Daftar ini menentukan jumlah karyawan yang harus menjalankan setiap peran, atau memiliki keterampilan, selama jangka waktu atau daftar ID shift. Semua persyaratan cakupan harus ditentukan dengan jangka waktu atau daftar ID perubahan (tetapi tidak keduanya). Periode waktu (jika diberikan) untuk persyaratan cakupan tidak boleh tumpang-tindih untuk setiap lokasi yang ditentukan. Tingkat prioritas default untuk setiap batasan ini adalah PRIORITY_MANDATORY untuk persyaratan peran dan PRIORITY_LOW untuk persyaratan keterampilan. Lihat enum Priority untuk detail selengkapnya.

role_ids[]

string

Daftar semua peran yang memungkinkan di seluruh tenaga kerja. Setiap karyawan harus memiliki setidaknya satu peran yang dapat ditugaskan kepada mereka untuk shift. Peran mengacu pada penugasan pekerjaan tertentu selama {i>shift<i} (yaitu perawat terdaftar, koki eksekutif, pelayan, dll.). Saat seorang karyawan ditugaskan ke shift, mereka juga diberi satu peran tertentu.

skill_ids[]

string

Daftar semua keterampilan yang tersedia di seluruh tenaga kerja. Keterampilan mengacu pada kualifikasi tambahan yang mungkin dimiliki seorang karyawan yang tidak berhubungan dengan pekerjaan tertentu yang dapat ditugaskan (yaitu sertifikasi, bahasa yang digunakan, dll.). Daftar ini boleh kosong. Ketika seorang karyawan ditugaskan untuk sebuah {i>shift<i}, mereka harus memenuhi semua keterampilan yang dibutuhkan untuk {i>shift<i} itu.

location_ids[]

string

Daftar semua kemungkinan lokasi untuk rangkaian shift dalam jadwal. Daftar ini boleh kosong. Menentukan lokasi yang berbeda dapat berguna ketika, misalnya, manajer perawat ingin menjadwalkan banyak perawat di berbagai unit rumah sakit atau, misalnya, manajer hotel ingin menjadwalkan karyawan di beberapa hotel.

budget_requirements[]

BudgetRequirement

Spesifikasi anggaran untuk masalah penjadwalan. Tingkat prioritas default untuk setiap persyaratan ini adalah PRIORITY_LOW. Lihat enum Priority untuk detail selengkapnya.

assignments_hint[]

ShiftAssignment

Geser penugasan untuk digunakan sebagai solusi tentatif (alias petunjuk solusi) untuk masalah penjadwalan. Petunjuk penetapan akan diabaikan jika tugas bertentangan dengan shift yang tidak dapat ditetapkan atau permintaan penjadwalan.

SolveShiftSchedulingResponse

Respons untuk API penjadwalan tenaga kerja. Untuk setiap respons, shift_assignments akan kosong jika solution_status yang ditampilkan adalah NOT_SOLVED_DEADLINE_EXCEEDED atau INFEASIBLE. Jika solution_status yang ditampilkan adalah OPTIMAL atau FEASIBLE, penetapan shift yang valid akan ditampilkan dalam shift_assignments. Untuk penetapan shift yang valid, properti berikut berlaku:

  1. Setiap ID karyawan ada dalam kumpulan karyawan yang diberikan dalam permintaan.
  2. Setiap ID peran yang ditetapkan kepada karyawan terdapat dalam kumpulan ID peran untuk karyawan yang bersangkutan.
  3. Setiap ID pergeseran dimuat dalam kumpulan shift yang diberikan dalam permintaan.
  4. Setiap ID shift bukan salah satu ID shift yang tidak dapat ditetapkan untuk karyawan tertentu.
  5. Seorang karyawan tidak akan pernah ditugaskan ke dua {i>shift<i} yang tumpang tindih.
  6. Untuk jadwal yang diberikan, tidak ada batasan atau permintaan dengan tingkat prioritas PRIORITY_MANDATORY yang dilanggar.

Kolom
request_id

string

ID permintaan yang dikaitkan dengan respons ini.

solution_status

SolutionStatus

Status solusi yang ditampilkan. Jika solusi tidak FEASIBLE atau OPTIMAL, kolom lain dalam proto ini mungkin kosong. Jika statusnya NOT_SOLVED_DEADLINE_EXCEEDED, batas waktu tercapai tanpa menemukan solusi yang layak atau menentukan apakah solusi yang layak ada. Permintaan mungkin tidak layak jika batasan tingkat prioritas WAJIB tidak dapat dipenuhi.

shift_assignments[]

ShiftAssignment

Daftar semua tugas. Setiap ShiftAssignment menentukan karyawan, shift yang ditugaskan kepada mereka, dan peran yang ditugaskan kepada mereka untuk shift tersebut.

status_message

string

Jika solution_status tidak optimal, kolom ini mungkin berisi informasi tambahan tentang pemecah.