<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum CakePHP.org.pl - Wyznaczanie wydajności pracy maszyn w zadanych okresach]]></title>
		<link>http://forum.cakephp.org.pl/topic/90/wyznaczanie-wydajnosci-pracy-maszyn-w-zadanych-okresach/</link>
		<description><![CDATA[Najświeższe odpowiedzi w Wyznaczanie wydajności pracy maszyn w zadanych okresach.]]></description>
		<lastBuildDate>Sun, 02 Aug 2009 08:28:52 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Wyznaczanie wydajności pracy maszyn w zadanych okresach]]></title>
			<link>http://forum.cakephp.org.pl/post/429/#p429</link>
			<description><![CDATA[<p>Witam,<br />Borykam się ostatnio z jednym problemem, zanim coś konkretnie zacznę robić chciałbym się poradzić bardziej doświadczonych kolegów.<br />Docelowo chodzi o wyznaczanie wydajności pracy maszyn w zadanym okresie czasu. Niby na pierwszy rzut oka nic nadzwyczaj skomplikowanego, ale jak zwykle diabeł tkwi w szczegółach.<br />Wydajność jest wyliczana na podstawie przyrostów z liczników odczytywanych co tydzień i następnie dzielonych przez całkowitą ilość godzin jakie w zadanym tygodniu mogła pracować dana maszyna, typowo 5 dni * 24h = 120h. Powiedzmy że z przyrostu z licznika odczytano 60h co daje 50% wydajności w okresie tygodnia.<br />Oczywiście w realnym świecie zdarzają się święta, urlopy, przestoje itp zakały które powodują, że wartość 120h zmienia się w obie strony.<br />Często zdarza się że produkcja rusza wcześniej i całkowity czas wynosi wtedy np 128 godzin, muszę to oczywiście uwzględniać w swoich obliczeniach wydajności. Ilość maszyn pracujących wówczas jest także mniejsza, bo pracuje tylko kilka gniazd produkcyjnych z kilkunastu.</p><p>Moje przemyślenia w tym temacie skupiają się oczywiście na takiej organizacji danych by było łatwo napisać algorytm do wyznaczania tych nazwijmy to &quot;idealnych&nbsp; (100%) czasów pracy&quot;. Kluczem do sprawnej pracy jest odpowiednia organizacja danych obejmująca wszystkie niuanse opisane powyżej. Drugim moim zmartwieniem jest objętość danych: 365dni i ok 50 maszyn. Potrzebne są niewątpliwie pewne optymalizacje w tym zakresie. Oto moje pomysły jak do tej pory:</p><p>Planuję stworzenie tabeli opisującej tylko dni wolne od pracy i takie w których maszyny nie pracują przez 24 godziny. Dni wolnych jest mniej niż pracujących więc myślę że to będzie rozsądne rozwiązanie. Domyślnie każdy dzień spoza tabeli jest pracujący.<br /></p><div class="codebox"><pre><code>create table day_exceptions(
    id integer unsigned not null auto_increment,
    created datetime not null, // czas utworzenia wpisu, sprawa dyskusyjna, być może to wleci w przyszłości
    day_exc date not null, // data danego wolnego dnia
    machine_id integer unsigned not null, // numer maszyny której dotyczy dany rekord
    hours  tinyint unsigned not null default 0, // ilość godzin planowanej produkcji danego &quot;wolnego&quot; dnia {0, 8, 16, 24}h
primary key (id)
);</code></pre></div><p>Tyle jeśli chodziło by o przechowywanie danych, inna kwestia to dodawanie nowych danych, planuję dwie opcje:<br />1 - dodawanie pojedynczych dni do tabeli<br />2 - dodawanie zakresów dni, czyli powiedzmy od 1 maja 2009 do 5 maja 2009.<br />Tutaj zaczyna się problem kontroli poprawności wprowadzanych danych. Trzeba bowiem sprawdzić czy dla danej maszyny dana data nie jest już obstawiona. Na &quot;łatwość&quot; sprawdzania poprawności ma jak wiadomo organizacja samych danych w tabeli więc widać doskonale jak ważne jest dobre zaplanowanie wszystkiego. Wracamy więc do punktu wyjścia.</p><p>Jeśli drogi Forumowiczu dotarłeś aż tutaj to gratuluję Ci cierpliwości i oczekuję bardzo na wszelkie opnie, krytykę, jakieś inne pomysły czy rozwiązania które obejmą specyfikę tego problemu. Jedna dobra rada pozwoli potem zaoszczędzić sporo czasu. Jak zawsze dobry pomysł to podstawa.</p>]]></description>
			<author><![CDATA[null@example.com (Cookie)]]></author>
			<pubDate>Sun, 02 Aug 2009 08:28:52 +0000</pubDate>
			<guid>http://forum.cakephp.org.pl/post/429/#p429</guid>
		</item>
	</channel>
</rss>

