WUT_Computer_Science/NotProgramming/MOM/report_three/sections/04-rozwiazanie-efektywne.tex
Krzysztof kuhy Rudnicki ffa5dad02a Split 19 over-cap LaTeX reports, proving each PDF is unchanged
The 250-line cap applies to prose too, and the reports were the worst
offenders -- ENUME's projectA.tex alone was 1,876 lines. Each is now a
preamble plus one \input{} per section, which is how a long LaTeX document is
normally organised; not one byte of prose was rewritten.

"The PDF is unchanged" is checked by a script rather than by eye, because
hashing the PDF cannot work: pdflatex stamps a /CreationDate and an /ID into
every build, so two runs of the SAME source already differ. tex_fingerprint.sh
compares what a reader sees instead -- page count plus a hash of the extracted
text -- and it is stable across rebuilds of untouched sources, which is the
property that makes it usable as a gate.

It earned its keep immediately. Both ECOTE reports quote an example LaTeX
document inside an lstlisting block, so \end{document} appears in the middle
of the file; splitting on the FIRST one stranded everything after it. Same
page count, different text, caught automatically. EOPSY lab3 exposed a second
bug: a \section{} title that runs onto the next line.

Result: 19 .tex over the cap -> 1. The survivor,
ELAC/.../03-building-nfa-...tex, is 418 lines of consecutive tikz figures
with no subsection to split on and needs a hand-placed boundary.

Verified: 29 splits across two passes (section, then subsection for the
pieces still over), every one reporting `unchanged` from
scripts/tex_fingerprint.sh --check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-28 19:47:12 +02:00

79 lines
2.7 KiB
TeX

\section{Rozwiązanie efektywne}
Aby zdefiniować rozwiązanie efektywne sprawdzamy sumaryczy obu funkcji celu dla wartości $\alpha$ i $beta$ od 1 do 10 \\
w tym celu napisany został kod który modyfikuje wartości $\alpha$ i $\beta$ w pętli
\begin{lstlisting}[language=Python, caption={Wyznaczanie alpha i beta}]
koszt_wyniki = []
zadowolenie_wyniki = []
wyniki_funkcji = []
maksymalny_wynik = 0;
for alpha in range(0, 11):
beta = 10 - alpha + sys.float_info.epsilon
alpha /= 10.0
beta /= 10.0
# Update objective function
model.objective = alpha * koszt_dystrybucji
- beta * suma_satysfakcji
# Solve the model
model.solve()
print(alpha)
# Record the wyniki
calkowity_koszt = pulp.value(koszt_dystrybucji)
calkowite_zadowolenie = pulp.value(suma_satysfakcji)
wynik_funkcji = pulp.value(alpha * koszt_dystrybucji
- beta * suma_satysfakcji)
koszt_wyniki.append(calkowity_koszt)
zadowolenie_wyniki.append(calkowite_zadowolenie)
if wynik_funkcji > maksymalny_wynik:
maksymalny_wynik = wynik_funkcji
wyniki_funkcji.append(wynik_funkcji)
print("maksymalny_wynik", maksymalny_wynik, wyniki_funkcji)
\end{lstlisting}
Najwyższy wynik zostął uzyskany dla $\alpha = 10$ i $\beta = 0$ i wynosił on \textbf{156.5}
\paragraph{Symulacja procesu podejmowania decyzji}
Przeprowadzone zostały symulacje dla 5 sytuacji:
\begin{enumerate}
\item Tylko minimalizacja kosztów $\alpha = 1.0$ $\beta = 0.0$
\item Priorytet na minimalizacji kosztów $\alpha = 0.8$ $\beta = 0.2$
\item Równy podział $\alpha = 0.5$ $\beta = 0.5$
\item Priorytet na satysfakcji klientów $\alpha = 0.2$ $\beta = 0.8$
\item Tylko satysfakcja klientów $\alpha = 0.0$ $\beta = 1.0$
\end{enumerate}
Ponownie w celu przeprowadzenia symulacji napisano kod w pythonie
\begin{lstlisting}[language=Python]
# Pseudo-code, assuming model setup as previously discussed
scemariusze = [
(1.0, sys.float_info.epsilon),
(0.8, 0.2),
(0.5, 0.5),
(0.2, 0.8),
(sys.float_info.epsilon, 1.0)]
wyniki = []
for alpha, beta in scemariusze:
model.objective = alpha * koszt_dystrybucji
- beta * suma_satysfakcji
model.solve()
calkowity_koszt = pulp.value(koszt_dystrybucji)
calkowite_zadowolenie = pulp.value(suma_satysfakcji)
wyniki.append(
(alpha, beta, calkowity_koszt, calkowite_zadowolenie)
)
for idx, (alpha, beta, koszt, zadowolenie) in enumerate(wyniki):
print(f"Krok {idx+1}:")
print(f" koszt: {alpha}, zadowolenie: {beta}")
print(f"
Calkowity koszt: {koszt},
zadowolenie klienta: {zadowolenie}\n")
\end{lstlisting}