TAS:Situace/Vozidla/Ceny/Penalizace za nedodržení délky směny
Penalizace se počítá z celkového času každé směny podle funkce zadané ve sloupci. Funkce se zadává výrazem v jediné proměnné x. Povoleny jsou závorky a operace:
- Sčítání +
- Odčítání -
- Násobení *
- Dělení /
- Mocnina ^
Desetinná čísla se zde zapisují s tečkou nebo čárkou, 1.5i 1,5 jsou validní.
Funkci lze zadat po částech ve tvaru piecewise(výraz1; hranice1; výraz2; hranice2; výraz3). Vyhodnotí se jako:
- výraz1 pokud x < hranice1
- výraz2 pokud x < hranice1 < hranice2
- výraz3 pokud harnice2 < x
Seznam vstupů piecewise v závorkách začíná a končí výrazem, může být libovolně dlouhý. Hranice musí být konstantní a zapsány od nejmenší po největší. Například piecewise(x; 2; x ; 1 ; x) tedy není zapsáno správně. Naopak piecewise(x; 1; x; 2; x) je zapsáno správně a ekvivalentní x.
Dále lze ve výrazech používat funkce sin, cos, exp, ln. Jejich argumenty musí být vždy v závorkách, například exp(x).
Příklad použití
Chceme vyrovnat směny řidičů tak, aby byly v rozmezí 4 až 5 hodin. Budeme počítat například penalizaci 1 za každou minutu pod 240 minut a 4 za každou minutu nad 300. Mezi 204 a 300 minutami nechceme penalizovat vůbec.
Zadáváme tedy funkci po částech jako piecewise(240 - x; 240; 0; 300; 4 * (x - 300)).
Pokud se ukáže, že solver nevyrovnává směny dostatečně, můžeme zvolit rychleji rostoucí funkci, například 10 * piecewise(240 - x; 240; 0; 300; 4 * (x - 300)) nebo piecewise((240 - x) ^ 2; 240; 0; 300; 4 * (x - 300) ^ 2).