Çalışanları vardiyalara atayarak, çalışanların belirli bir SolveShiftSchedulingRequest
yılındaki sabit vardiya zaman çizelgesi sorununu çözer. Planlama tercihleri en üst düzeye çıkarılır ve planlama kısıtlaması ihlalleri en aza indirilir.
HTTP isteği
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
URL, gRPC Kod Dönüştürme söz dizimini kullanır.
İstek içeriği
İstek gövdesi, aşağıdaki yapıya sahip verileri içerir:
JSON gösterimi |
---|
{ "requestId": string, "solveParameters": { object ( |
Alanlar | |
---|---|
requestId |
Sorun veya istek kimliği. |
solveParameters |
Sorunun tek bir çözümünü kontrol edecek parametreler. |
employees[] |
Müsait olan tüm çalışanlar için zaman planlaması yapılabilir. |
shifts[] |
Tüm vardiyaları zaman çizelgesini oluşturmak. |
coverageRequirements[] |
Planlama döneminin tamamı için kapsam gereksinimleri. Bunlar, bir zaman aralığı veya vardiya kimlikleri listesi süresince her bir rolü yerine getirmesi ya da bir beceriye sahip olması gereken çalışan sayısını belirtir. Tüm kapsam koşulları, zaman aralıkları veya kaydırma kimlikleri listesi (ikisi birden değil) ile belirtilmelidir. Kapsam gereksinimlerinin zaman aralıkları (verilmişse) her bir konum için çakışamaz. Bu kısıtlamaların her biri için varsayılan öncelik düzeyi, rol gereksinimleri için |
roleIds[] |
İş gücü genelindeki olası tüm rollerin listesi. Her çalışanın bir vardiya için atanabilecek en az bir rolü olmalıdır. Rol, vardiya sırasında yapılan belirli bir iş atamasını ifade eder (ör.kayıtlı hemşire, şef, garson vb.). Bir çalışan bir vardiyaya atandığında, aynı zamanda tek bir role atanır. |
skillIds[] |
İş gücündeki olası tüm becerilerin listesi. Beceri, bir çalışanın belirli bir atanabilir işle ilgili olmayan (ör. sertifikalar, konuşulan diller) sahip olabileceği tüm ekstra nitelikleri ifade eder. Bu liste boş olabilir. Bir çalışan vardiyaya atandığında, o vardiya için gereken tüm becerileri edinmesi gerekir. |
locationIds[] |
Zaman çizelgesindeki kayma grubu için mümkün olan tüm konumların listesi. Bu liste boş olabilir. Örneğin bir hemşire yöneticisi bir hastanedeki farklı birimlerde çok sayıda hemşire randevusu almak istediğinde veya örneğin bir otel yöneticisi birden fazla otelde çalışanları planlamak istediğinde farklı konumlar belirtmek yararlı olabilir. |
budgetRequirements[] |
Zaman çizelgesi problemi için bütçe spesifikasyonu. Bu gereksinimlerin her biri için varsayılan öncelik düzeyi |
assignmentsHint[] |
Zaman çizelgesi oluşturma problemine belirsiz bir çözüm (çözüm ipucu) olarak kullanılacak atamaları kaydırın. Atama, atanamayan bir vardiya veya planlama isteğiyle çelişiyorsa atama ipuçları yoksayılır. |
Yanıt gövdesi
İş gücü planlama API'sinin yanıtı. Döndürülen solutionStatus
değeri NOT_SOLVED_DEADLINE_EXCEEDED
veya INFEASIBLE
ise her yanıt için shiftAssignments
boş olur. Döndürülen solutionStatus
değeri OPTIMAL
veya FEASIBLE
ise shiftAssignments
içinde geçerli bir vardiya ataması döndürülür. Geçerli bir kaydırma ataması için aşağıdaki özellikler muhafaza edilir:
- Her çalışan kimliği, istekte belirtilen çalışan grubunda yer alır.
- Çalışana atanan her rol kimliği, söz konusu çalışana ait rol kimlikleri grubunda yer alır.
- Her vardiya kimliği, istekte belirtilen kaymalar grubunda yer alır.
- Her vardiya kimliği, belirtilen çalışanın atanamayan vardiya kimliklerinden biri değildir.
- Bir çalışan hiçbir zaman çakışan iki vardiyaya atanmaz.
- Belirtilen zaman planlamasında, öncelik düzeyi
PRIORITY_MANDATORY
olan kısıtlamaların veya isteklerin hiçbiri ihlal edilmedi.
Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:
JSON gösterimi |
---|
{ "requestId": string, "solutionStatus": enum ( |
Alanlar | |
---|---|
requestId |
Bu yanıtın ilişkilendirildiği isteğin kimliği. |
solutionStatus |
Döndürülen çözümün durumu. Çözüm GEÇİCİ veya OPTİMİZASYON değilse bu protokoldeki diğer alanlar boş olabilir. Durum NOT_SOLVED_DEADLINE_EXCEEDED ise, zaman sınırına, uygulanabilir bir çözüm sunulmadan veya uygulanabilir bir çözüm mevcut olup olmadığı belirlenmeden ulaşılmıştır. ZORUNLU öncelik düzeyi kısıtlamalarının tümü karşılanamıyorsa istekler uygulanabilir olmayabilir. |
shiftAssignments[] |
Tüm ödevlerin listesi. Her |
statusMessage |
|
SolveParameters
Kaydırma planlama probleminin tek bir çözümünü kontrol eden parametreler.
JSON gösterimi |
---|
{ "timeLimit": string } |
Alanlar | |
---|---|
timeLimit |
Çözme aracının problem üzerinde harcaması gereken maksimum süre. Ayarlanmazsa varsayılan olarak 1 dakika olur. Bu değer sabit bir sınır değildir ve iletişim ek yükünü hesaba katmaz. Sorunu çözmek için beklenen gecikme, bu değeri biraz aşabilir. En fazla dokuz kesir basamağı olan ve " |
Çalışan
Planlanacak bir iş gücü çalışanı.
JSON gösterimi |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
Alanlar | |
---|---|
id |
Bu çalışana atanan benzersiz kimlik. |
roleIds[] |
Bu çalışanın gerçekleştirebileceği rol kimlikleri. En az bir rol belirtilmelidir. Bir çalışan bir vardiyaya atandığında, kendisi de bu listedeki tek bir role atanır. Çalışan, planlama zaman aralığı boyunca farklı rollere atanabilir. |
skillIds[] |
Bu çalışanın sahip olduğu beceri kimlikleri. Bu liste boş olabilir. Bir çalışan vardiyaya atandığında, burada listelenen becerilerin herhangi bir alt kümesini, atanan vardiya boyunca gereken beceri gereksinimlerini karşılamak için kullanır. |
shiftPreferences[] |
Bu çalışanın tercihlerini değiştirin. Burada belirtilen vardiyalar, çalışanın zaman planlaması sırasında atanmayı tercih ettiği vardiyaları temsil eder. |
schedulingConstraints[] |
Bu çalışan için zaman çizelgesi kısıtlamaları listesi. Bu kısıtlamaların her biri için varsayılan öncelik düzeyi |
resourceConstraints[] |
|
shiftRequests[] |
Çalışan için vardiya isteklerinin listesi. Talep, bir çalışanın belirli vardiyalara atanması veya atanmamış olmasıyla ilgili olabilir. Çalışana yönelik sabit zamanlama atamaları, |
hourlyContract |
Çalışanın normal ve fazla mesai saatlik ücretlerini belirten sözleşme. |
ShiftPreference
Belirli bir vardiya kimliği için sayısal tercih.
JSON gösterimi |
---|
{ "shiftId": string, "preference": integer } |
Alanlar | |
---|---|
shiftId |
Tercihin belirtildiği Üst Karakter Kimliği. |
preference |
Daha büyük tercih değerleri, daha istenen bir değişimi gösterir. |
SchedulingConstraint
Belirli bir çalışan için belirli zaman çizelgesi kısıtlaması. Belirtilen kısıtlama yalnızca belirtilen [startDateTime,
endDateTime)
aralığında uygulanır.
JSON gösterimi |
---|
{ "priority": enum ( |
Alanlar | |
---|---|
priority |
Bu planlama kısıtlamasının öncelik düzeyi. Tüm planlama kısıtlamaları için varsayılan öncelik |
startDateTime |
Bu planlama kısıtlamasının geçerli olduğu başlangıç zamanı (dahil). |
endDateTime |
Bu planlama kısıtlamasının geçerli olacağı (hariç) bitiş zamanı. |
Birleştirme alanı type . Belirtilen kısıtlama türü. Her kısıtlama yalnızca yukarıda belirtilen zaman aralığı içinde uygulanır. type şunlardan yalnızca biri olabilir: |
|
minimumMinutes |
Çalışanın çalışabileceği minimum dakika sayısı. Çalışan, zaman aralığıyla (tamamen veya kısmen) çakışan bir vardiyaya atandıysa bu vardiyanın zaman aralığıyla çakıştığı dakika sayısı bu sayıya dahil edilir. |
maximumMinutes |
Çalışanın zaman aralığında çalışabileceği maksimum dakika sayısı. Çalışan, zaman aralığıyla (tamamen veya kısmen) çakışan bir vardiyaya atandıysa bu vardiyanın zaman aralığıyla çakıştığı dakika sayısı bu sayıya dahil edilir. |
minimumConsecutiveWorkDays |
Çalışanın art arda çalışabileceği minimum gün sayısı. Bir çalışan, belirli bir gün içinde başlayan bir vardiyaya atanmışsa o gün çalışıyor. İlgili zaman aralığında başlayan ve bir çalışanın atandığı tüm vardiyalar bu sayıya dahil edilir. |
maximumConsecutiveWorkDays |
Çalışanın art arda çalışabileceği maksimum gün sayısı. Bir çalışan, belirli bir gün içinde başlayan bir vardiyaya atanmışsa o gün çalışıyor. İlgili zaman aralığında başlayan ve bir çalışanın atandığı tüm vardiyalar bu sayıya dahil edilir. |
minimumShiftCount |
Bir çalışanın çalışabileceği minimum vardiya sayısı. Çalışanın atandığı zaman aralığıyla tamamen örtüşen tüm vardiyalar bu sayıya dahil edilir. |
maximumShiftCount |
Bir çalışanın çalışabileceği maksimum vardiya sayısı. Çalışanın atandığı zaman aralığıyla tamamen örtüşen tüm vardiyalar bu sayıya dahil edilir. |
minimumRestMinutes |
Bir çalışanın bir vardiya bittikten sonra başka bir vardiyaya atanmadan önce dinlenmesi gereken minimum dakika sayısı. Bu kısıtlama, [ |
Öncelik
Bir çalışanın zaman çizelgesindeki herhangi bir kısıtlama veya kapsam gereksinimleri için öncelik düzeyi. Bunlar arasında SchedulingConstraint
, ResourceConstraint
, ShiftRequest
ve CoverageRequirement
bulunmaktadır. Çelişen kısıtlamalar söz konusu olabileceğinden, tüm kısıtlamaları karşılamak her zaman mümkün değildir. Dolayısıyla, her kısıtlama türünün, tam bir zaman çizelgesine verilen tüm kısıtlamaların göreceli önemi hakkında çözücüyü bilgilendiren bir önceliği vardır (kullanıcı tarafından veya varsayılan tarafından verilir).
Sıralamalar | |
---|---|
PRIORITY_UNSPECIFIED |
Bilinmeyen öncelik düzeyi. |
PRIORITY_LOW |
En düşük öncelik düzeyi. Bu önceliğe sahip kısıtlamalar, diğer kısıtlamalardan daha az önemlidir. Uygun bir çözüm bulunamazsa ihlal durumu ilk olarak değerlendirilir. |
PRIORITY_MEDIUM |
Öncelik düzeyi orta. Bu önceliğe sahip kısıtlamalar, PRIORITY_LOW önceliğine sahip kısıtlamalardan daha önemlidir ancak PRIORITY_HIGH öncelikli kısıtlamalardan daha az önemlidir. Tüm kısıtlamalar PRIORITY_LOW önceliğiyle gevşetildikten sonra uygun bir çözüm bulunamazsa bir sonraki ihlalde PRIORITY_MEDIUM önceliğinin kısıtlamaları dikkate alınır. |
PRIORITY_HIGH |
En yüksek öncelik düzeyi. Bu öncelik düzeyiyle yapılan kısıtlamalar en önemlidir. Bunlar, düşük öncelik seviyelerinin kısıtlamaları gevşetildikten sonra uygun bir çözüm bulunamazsa en son ihlal olarak değerlendirileceklerdir. |
PRIORITY_MANDATORY |
Çözme aracı tarafından ihlal edilemeyecek bir şeyi temsil eden öncelik düzeyi. Çözücü SolutionStatus.INFEASIBLE değeri döndürüyorsa bu durum çok fazla PRIORITY_MANDATORY kısıtlamasından kaynaklanıyor olabilir. |
ResourceConstraint
Belirli bir "kaynağın" miktarını sınırlandıran genel bir kısıtlama kullanma konusunda karar vermiştir. Bu, daha spesifik SchedulingConstraint
özelliğinin kullanıcı için daha esnek olan soyut bir sürümüdür. SchedulingConstraint.type
içinde belirtilemeyen birçok planlama kısıtlaması, bunun yerine bu mesaj kullanılarak belirtilebilir.
JSON gösterimi |
---|
{
"priority": enum ( |
Alanlar | |
---|---|
priority |
Bu kaynak kısıtlamasının öncelik düzeyi. Tüm kaynak kısıtlamaları için varsayılan öncelik |
resourceUsages |
Vardiyalarda kullanılan kaynak miktarı. Örneğin, bu kısıtlama bir çalışanın belirli bir hafta içinde çalıştığı minimum ve maksimum saatler için geçerliyse bu harita, o hafta gerçekleşen kaymaları ve her bir vardiyanın saat cinsinden uzunluğunu içerir.
|
minimumResourceUsage |
Bir kaynak kısıtlamasının karşılanması için minimum kaynak kullanımı. |
maximumResourceUsage |
Bir kaynak kısıtlamasının karşılanması için maksimum kaynak kullanımı. |
ShiftRequest
Bir çalışanın belirli bir vardiyaya atanması veya atanmaması isteği.
JSON gösterimi |
---|
{ "priority": enum ( |
Alanlar | |
---|---|
priority |
Bu planlama isteğinin öncelik düzeyi. Tüm planlama istekleri için varsayılan öncelik |
shiftIds[] |
Planlama isteğinin değiştirme kimlikleri. |
type |
İstek türü (ör. isteğin vardiya grubuna atanıp atanmadığı). |
WorkStatus
Bir çalışanın çalışıp çalışmadığı.
Sıralamalar | |
---|---|
WORK_STATUS_UNSPECIFIED |
Çalışma durumu bilinmiyor. |
STATUS_WORK |
Çalışan bir çalışanı temsil eden durum. |
STATUS_NOT_WORK |
Çalışmayan bir çalışanı temsil eden durum. |
HourlyContract
Bir çalışana ödenecek ücreti belirlemek için taban saatlik ücreti, ücret farklarını ve fazla mesai çarpanlarını belirtir. Farklı yerlerdeki düzenlemelerde, fazla mesai ücretinin farklı şekilde hesaplanması gerekebilir. Çözücü, toplam maliyetin bir temsilini en aza indirmek veya bütçeyi karşılamak için fazla mesai ücretini tahmin eder (bkz. BudgetRequirement
). Maaşları hesaplamak için bir araç olarak tasarlanmamıştır.
JSON gösterimi |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
Alanlar | |
---|---|
baseHourlyRate |
Fazla mesai dışında bir saat çalışmanın ücreti. Çalışan için birden fazla ücret geçerliyse bu taban saatlik ücrete göre ücret farkı uygulanır. Ayrıca, birden fazla ücret varsa taban saatlik ücret bu ücretlerin minimum değeri olmalıdır. |
hourlyRateShiftDifferentials |
|
overtimePeriods[] |
Fazla mesai sayısının hesaplanması gereken tüm dönemlerin listesi. Bu dönemler çakışmamalıdır. |
OvertimePeriod
Fazla mesai ücretinin belirlenmesinde kullanılan sabit ve düzenli olarak yinelenen bir süre (genellikle 168 saat veya art arda 24 saatlik yedi dönem). Her dönemin bir fazla mesai çarpanı vardır (ör. 1.5) baseHourlyRate
ile göreli (uzun süreli olmayan) çalışma olarak kabul edilen saat sayısına ilişkin bir sınırlama ile birlikte. startDateTime
(dahil) ve endDateTime
(hariç) zaman aralığıyla çakışan tüm değişimler, söz konusu dönemde çalışılan toplam saat sayısına dahil edilir. Çakışma kısmiyse yalnızca çakışan saatler sayılır.
JSON gösterimi |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
Alanlar | |
---|---|
overtimeMultiplier |
Fazla mesai saatlik ücreti hesaplamak için kullanılan çarpan (1,0'dan büyük veya eşit olmalıdır). Fazla mesai saatlik ücreti genellikle |
startDateTime |
Uzatma süresinin başlangıç zamanı. Bu saatteki bir değişim çakışırsa söz konusu değişimin bulunduğu saatler |
endDateTime |
Uzatma süresinin bitiş zamanı. Bu saatteki bir değişim çakışırsa böyle bir değişimin olduğu saatler |
maximumRegularHours |
Düzenli olarak (fazla mesai dışı) ödenen maksimum çalışma saati sayısı. Bu miktar pozitif olmalıdır. |
üst karakter
Vardiya, çalışanların çalışabilecekleri sabit bir zaman aralığını belirtir.
JSON gösterimi |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
Alanlar | |
---|---|
id |
Bu varlığa atanan benzersiz kimlik. |
locationId |
Bu geçişin gerçekleştirildiği konumun kimliği. Bu alan boş olabilir. |
startDateTime |
Vardiyanın başlangıç zamanı (dahil). |
endDateTime |
Vardiyanın bitiş zamanı (hariç). Çözücü şu anda yalnızca 24 saatten kısa olan değişimlere izin vermektedir. |
breakRules[] |
Kaydırma sırasında oluşan kesme kurallarının listesi. Bu değişimi yapan çalışanlara |
BreakRule
Bir vardiya dahilinde bir aranın ne zaman başlayabileceğini ve bu aranın süresini belirleyen kural. Dikkate alınan tüm olası araların listesi ruleIncrementMinutes
'lik artışlarla belirlenir. Örneğin, bir ara kuralı 10:00 ile 11:00 arasında başlayabilecek 30 dakikalık bir arayı modelliyorsa ve kural artımı 20 dakikaysa dikkate alınacak aralar listesi şu şekildedir: [10:00, 10:30], [10:20, 10:50], [10:1:1, 1, 0:1, 1, 1,0:10, 1].
JSON gösterimi |
---|
{ "earliestStartTime": { object ( |
Alanlar | |
---|---|
earliestStartTime |
Aranın en erken başlangıç zamanı (dahil). Yalnızca |
latestStartTime |
Aranın en geç başlangıç zamanı (dahil). Yalnızca |
durationMinutes |
Aranın dakika cinsinden süresi. |
ruleIncrementMinutes |
[İsteğe bağlı] Bu ara kuralında dikkate alınabilecek tüm aralar için dakika cinsinden süre artımı. Ayarlanmazsa varsayılan olarak |
CoverageRequirement
Kapsam şartı, belirli bir zaman dilimi süresince ve belli bir konumdaki bir dizi rol ve/veya beceri için gereken çalışan sayısını belirtir. Belirli bir konumdaki DateTime aralıkları çakışamaz. Alternatif olarak, zaman aralığı ve konum yerine değiştirme kimlikleri listesi sağlanabilir. Yalnızca belirli bir pozisyona atanabilen (veya belirli bir beceriye sahip olan) çalışanlar bu şartı karşılayabilir.
Belirli bir pozisyon ve/veya beceri için, kapsam şartını, belirli bir zaman aralığındaki (veya shiftIds
bölgesindeki her vardiyada) en az targetEmployeeCount
sayıda çalışan çalıştığında karşılar. Buna karşın, zaman aralığı içinde herhangi bir noktada (veya shiftIds
ayındaki herhangi bir değişiklikte) söz konusu zaman aralığı içinde çalışan sayısı targetEmployeeCount
değerinden azsa kapsam şartı ihlal edilir. Çalışan sayısı, targetEmployeeCount
olan kişiden daha fazla olduğunda da şartı karşılar ancak aşırı personel sayısı, çözücü tarafından en aza indirilir.
JSON gösterimi |
---|
{ "startDateTime": { object ( |
Alanlar | |
---|---|
startDateTime |
Kapsam koşulu için başlangıç zamanı (dahil). Ayarlanırsa |
endDateTime |
Kapsam şartının bitiş zamanı (hariç). Ayarlanırsa |
locationId |
Çalışanların gerekli olduğu konum. |
shiftIds[] |
Ayarlandığı takdirde rol ve beceri gereksinimleri bu listedeki her vardiya kimliğine ayrı ayrı uygulanır. ShiftId'ler boş değilse |
roleRequirements[] |
İlgili zaman aralığı içinde, belirlenen rollere atanması gereken çalışan sayısı. Her rol kimliği için en fazla bir |
skillRequirements[] |
Belirtilen zaman aralığı içinde vardiyalara atanan, belirli becerilere sahip gerekli çalışan sayısı. Her beceri kimliği için en fazla bir |
RoleRequirement
Belirtilen süre içinde belirli bir pozisyona atanacak çalışan sayısının zorunlu olması.
JSON gösterimi |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Alanlar | |
---|---|
roleId |
Koşulun rol kimliği. |
targetEmployeeCount |
Belirli bir zaman aralığında ilgili pozisyona atanan, istenen çalışan sayısı. |
priority |
Bu koşul kısıtlaması için öncelik düzeyidir. Tüm kaynak kısıtlamaları için varsayılan öncelik |
SkillRequirement
Söz konusu zaman aralığı boyunca çalışan ve belirtilen becerilere sahip olan gerekli çalışan sayısı.
JSON gösterimi |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Alanlar | |
---|---|
skillId |
Koşul için beceri kimliği. |
targetEmployeeCount |
Belirli bir beceriye sahip, istenen zaman aralığında çalışan, istenen sayıda çalışan. |
priority |
Bu koşul kısıtlaması için öncelik düzeyidir. Tüm kaynak kısıtlamaları için varsayılan öncelik |
BudgetRequirement
Belirli bir aralık için bütçe gereksinimleri.
JSON gösterimi |
---|
{ "totalBudget": number, "startDateTime": { object ( |
Alanlar | |
---|---|
totalBudget |
Verilen aralık için toplam bütçe. Öncelik
|
startDateTime |
Bu bütçenin geçerli olduğu başlangıç zamanı. Bir başlangıç zamanı belirtilmemişse, verilen tüm vardiyaların en erken başlangıç zamanı olarak ayarlanır. |
endDateTime |
Bu bütçenin geçerli olduğu bitiş zamanı. Bir bitiş zamanı belirtilmezse belirlenen tüm vardiyaların en geç bitiş zamanı olarak ayarlanır. |
priority |
Belirtilen zaman aralığında bütçe koşulunu karşılamaya yönelik öncelik düzeyi. Varsayılan öncelik Bu öncelik diğer kısıtlama önceliklerinden daha yüksekse ve |
ShiftAssignment
Rol ataması yapmak için bir çalışan.
JSON gösterimi |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
Alanlar | |
---|---|
employeeId |
Atanan çalışan kimliği. |
shiftId |
Çalışana atanan vardiya kimliği. |
roleId |
Çalışanın vardiya için atandığı rol kimliği. |
breaks[] |
Bu vardiya ataması için araların listesi. |
Ara
Bir çalışanın mesai süresince işine ara verdiği bir dönem.
JSON gösterimi |
---|
{
"startDateTime": {
object ( |
Alanlar | |
---|---|
startDateTime |
Aranın başlangıç zamanı. |
durationMinutes |
Aranın dakika cinsinden süresi. |
SolutionStatus
Çözücünün yanıtında sağlanan çözüm (zaman çizelgesi) durumu.
Sıralamalar | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Yanıt için belirtilmemiş durum. |
FEASIBLE |
Döndürülen zaman çizelgesi uygun ancak optimum olmayabilir. |
OPTIMAL |
Döndürülen program optimum durumda. |
INFEASIBLE |
Verilen kısıtlamalar için uygun bir zaman çizelgesi yok. Çözücü, PRIORITY_MANDATORY öncelik düzeyine sahip kısıtlamaların herhangi bir alt kümesi karşılanamazsa bu değeri döndürebilir. |
NOT_SOLVED |
Program bulunamadı. |
NOT_SOLVED_DEADLINE_EXCEEDED |
Belirtilen zaman sınırı dahilinde program bulunamadı. |