<jupyter_start><jupyter_text>2. Optimizacijska naloga         <NAME>, Lucami, FE      Kontakt: prof. dr. <NAME>, <EMAIL>, skype=akosir_sid  1   2. Optimizacijska naloga  Cilji  Cilji poglavja- Spoznati formulacijo optimizacijske naloge v splošnem- Razumeti pomen    - Optimizacijskega prostora    - Kriterijske funkcije    - Omejitev pri optimizaciji ter dopustnih rešitev 2   2. Optimizacijska naloga  Cilji  Poglavja 2.1. Definicija optimizacijske naloge■ Definicija $\large{*}$■ Izbrane lastnosti optimizacijske naloge $\large{*}$ 2.2. Rešljivost in reševanje optimizacijske naloge■ Rešljivost $\large{*}$■ Algoritmi za reševanje optimizacijske naloge $\large{*}$■ Orodja za reševanje optimizacijske naloge $\large{*}$ 3   2. Optimizacijska naloga   2.1. Definicija optimizacijske naloge  ■ Definicija optimizacijske naloge (1)- Natančna formulacija je pomembna zato, ker lastnosti vključenih funkcij in množic odločajo o izboru algoritmov, ki jih lahko uporabimo - **Definicija (Optimizacijska naloga)**  Naj bo $\Omega$ množica rešitev in $X\subset\Omega$ množica dopustnih rešitev. Definirana naj bo kriterijska funkcija     $$ c: X \to ℝ. $$Naj bo $\Phi$ predikat dopustnosti, definiran na množici rešitev $\Omega$ . Dopustne so tiste rešitve iz $\Omega$, ki zadoščajo predikatu dopustnosti, torej    $$ X = \{x\in\Omega: \Phi(𝑥)\}. $$- Označimo	$$ argmin(X, c)= \{ x\in X: \forall y\in X, c(y)\geq c(x) \} $$in $$ min(𝑋, c) = \{ c(x): x \in X, \forall y\in X, c(y)\geq c(x) \}. $$- Ni nujno ena sama rešitev! 4   2. Optimizacijska naloga   2.1. Definicija optimizacijske naloge  ■ Definicija optimizacijske naloge (2)- Definiramo še $$ argmax(X, c) = argmin(X, -c) $$$$ min(X, c) = -max(X, -c)$$- Optimizacijska naloga je$$ (\Omega, \Phi, c, F), $$kjer je$$ F\in \{argmin, argmax\}. $$- Rešitev optimizacijske naloge $(\Omega, \Phi, c, F)$ je eno od     - $argmin(X, c)$    - $argmax(X, c)$    - $x\in X$, za katerega je razlika $x - argmin(X, c)$ ali $x - argmax(X, c)$ dovolj majhna- Navadno označimo$$ x^* = argmin(X, c) \qquad\mbox{ali}\qquad x^* = argmax(X, c). $$ 5<jupyter_code># Volume maximization expample: constrained optimisation
import numpy as np
from scipy.optimize import minimize

# Cost function
def V2D(x):
    return -x[0]*x[1]

# Constraints
cons = ({'type': 'eq', 'fun' : lambda x: np.array([2*x[0] + 2*x[1] - l])})

# Initial value
l = 7.0
x0 = np.array([1, 1])

# Optimisation
res = minimize(V2D, x0, constraints=cons, options={'disp': True})

print ('Results: ', res.x)
# Volume maximization expample: Unconstrained optimisation
import numpy as np
from scipy.optimize import minimize


# Cost function
def V1D(a, l):
    return -a*(l/2-a)

# Initial value
l, h = 7.0, 3.0
a0 = np.array([1])

# Optimisation
res = minimize(V1D, a0, l, options={'gtol': 1e-6, 'disp': True})

print ('Result: ', res.x)<jupyter_output>Optimization terminated successfully.
         Current function value: -3.062500
         Iterations: 2
         Function evaluations: 6
         Gradient evaluations: 3
Result:  [1.75]
{'fraction_non_alphanumeric': 0.14281002638522428, 'fraction_numerical': 0.01945910290237467, 'mean_word_length': 3.8762057877813505, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '575636', 'license': 'MIT', 'n_tokens_mistral': 1269, 'n_tokens_neox': 1236, 'n_words': 355, 'path': 'AKosir-OPvTK-Lec02_OptimTask_SLO.ipynb', 'repo_name': 'andrejkk/OPvTK', 'size': '3069'}