TAS:Situace/Vozidla/Ceny/Penalizace za nedodržení délky směny

Z Solvertech
Skočit na navigaci Skočit na vyhledávání

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).