Indeks
Optimization
(antar muka)DesignShippingNetworkRequest
(pesan)DesignShippingNetworkResponse
(pesan)SolveMathOptModelRequest
(pesan)SolveMathOptModelResponse
(pesan)SolveShiftGenerationRequest
(pesan)SolveShiftGenerationResponse
(pesan)SolveShiftSchedulingRequest
(pesan)SolveShiftSchedulingResponse
(pesan)
Pengoptimalan
One Platform API yang mengekspos serangkaian pemecah masalah pengoptimalan untuk masalah riset operasi tingkat tinggi. MOE:begin_strip
DesignShippingNetwork |
---|
Menyelesaikan masalah desain dan penjadwalan jaringan pengiriman liner (LSNDSP) dari 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 |
---|
Menyelesaikan model input dan menampilkan hasilnya sekaligus. Gunakan metode ini saat Anda tidak memerlukan callback, inkrementalitas, dan tidak perlu melacak progres penyelesaian. |
SolveShiftGeneration |
---|
Menyelesaikan masalah pembuatan shift dari |
SolveShiftScheduling |
---|
Menyelesaikan masalah penjadwalan shift tetap dari |
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 |
ID masalah atau permintaan. |
solver_parameters |
Parameter untuk pemecah. |
ports[] |
Daftar kemungkinan port yang akan dipanggil dalam layanan kapal. Permintaan hanya boleh berisi ID port yang ada dalam daftar ini. |
leg_candidates[] |
Daftar kandidat kaki potensial yang akan ditambahkan ke layanan kapal. Permintaan hanya boleh berisi ID kandidat segmen yang ada dalam daftar ini. |
vessel_classes[] |
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[] |
Daftar permintaan komoditas potensial (yaitu kontainer) yang harus dipenuhi oleh layanan kapal. |
vessel_services[] |
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 |
ID permintaan yang dikaitkan dengan respons ini. |
vessel_services[] |
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[] |
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 |
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 |
Wajib. Representasi matematis dari soal pengoptimalan yang harus dipecahkan. |
parameters |
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 |
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 |
Deskripsi output dari penyelesaian model dalam permintaan. |
messages[] |
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 |
Opsional. Parameter untuk pemecah. |
shift_templates[] |
Wajib. Kumpulan template shift yang menentukan aturan untuk menghasilkan shift. |
employee_demands[] |
Wajib. Total karyawan meminta agar shift yang dihasilkan |
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:
- Setiap shift yang dihasilkan di
employee_schedules
mematuhi aturan yang ditentukan dalamShiftTemplate
yang sesuai. - Setiap peristiwa yang dipilih di setiap shift akan mematuhi aturan yang ditentukan dalam
ShiftTemplate.Event
terkait. - Jumlah total karyawan yang ditetapkan ke serangkaian shift yang dihasilkan dari ShiftTemplate yang sama tidak melebihi
maximum_employee_count
template tersebut. - Sekumpulan karyawan yang ditugaskan mencakup permintaan pada setiap interval tertentu.
Kolom | |
---|---|
solution_status |
Status solusi yang ditampilkan. Jika |
employee_schedules[] |
Kumpulan shift yang dihasilkan oleh pemecah masalah beserta jumlah karyawan yang ditugaskan untuk setiap jadwal. |
demand_coverage_violations[] |
Pelanggaran cakupan permintaan berdasarkan |
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 |
ID masalah atau permintaan. |
solve_parameters |
Parameter untuk mengontrol satu penyelesaian masalah. |
employees[] |
Semua karyawan yang tersedia untuk dijadwalkan. |
shifts[] |
Semua shift untuk mengikuti jadwal. |
coverage_requirements[] |
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 |
role_ids[] |
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[] |
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[] |
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[] |
Spesifikasi anggaran untuk masalah penjadwalan. Tingkat prioritas default untuk setiap persyaratan ini adalah |
assignments_hint[] |
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:
- Setiap ID karyawan ada dalam kumpulan karyawan yang diberikan dalam permintaan.
- Setiap ID peran yang ditetapkan kepada karyawan terdapat dalam kumpulan ID peran untuk karyawan yang bersangkutan.
- Setiap ID pergeseran dimuat dalam kumpulan shift yang diberikan dalam permintaan.
- Setiap ID shift bukan salah satu ID shift yang tidak dapat ditetapkan untuk karyawan tertentu.
- Seorang karyawan tidak akan pernah ditugaskan ke dua {i>shift<i} yang tumpang tindih.
- Untuk jadwal yang diberikan, tidak ada batasan atau permintaan dengan tingkat prioritas
PRIORITY_MANDATORY
yang dilanggar.
Kolom | |
---|---|
request_id |
ID permintaan yang dikaitkan dengan respons ini. |
solution_status |
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[] |
Daftar semua tugas. Setiap |
status_message |
Jika |