<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum CakePHP.org.pl - Wyznaczanie wydajności pracy maszyn w zadanych okresach]]></title>
	<link rel="self" href="http://forum.cakephp.org.pl/feed/atom/topic/90/"/>
	<updated>2009-08-02T08:28:52Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.cakephp.org.pl/topic/90/wyznaczanie-wydajnosci-pracy-maszyn-w-zadanych-okresach/</id>
		<entry>
			<title type="html"><![CDATA[Wyznaczanie wydajności pracy maszyn w zadanych okresach]]></title>
			<link rel="alternate" href="http://forum.cakephp.org.pl/post/429/#p429"/>
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Cookie]]></name>
				<uri>http://forum.cakephp.org.pl/user/214/</uri>
			</author>
			<updated>2009-08-02T08:28:52Z</updated>
			<id>http://forum.cakephp.org.pl/post/429/#p429</id>
		</entry>
</feed>

