Algorithmicx, equation e split

  • Creatore
    Topic
  • #87124
    Up
    0
    Down
    ::


    buongiorno, sto cercando di scrivere un’algoritmo al cui interno é presente una equazione con dei vincoli. Per scrivere tali vincoli utilizzo l’ambiente split. Nella compilazione, latex mi da errori del tipo “Missing \endcsname inserted state” e non riesco a capire dove sia l’errore. Allego il mio codice.

    `\begin{algorithm}
    \caption{The Weighted Sum of Random Kitchen Sinks fitting procedure}
    \small
    \begin{algorithmic}
    \Require{A dataset $\{x_i,y_i\}_{i=1,…,m}$ of $m$ points, a bounded feature function $|\phi(x,w)| \leq 1$, an integer $K$, a scalar $C$ and a probability distribution $p(w)$ on the parameters of $\phi$}
    \Ensure{A function $\Hat f(x) = \sum\limits_{k=1}^{K}\phi(x;w_k)\alpha_k$}
    \State Draw $w_1,…,w_K$ iid from $p$
    \State Featurize the input: $z_i \gets \lbrack \phi(x_i;w_1),…,\phi(x_i;w:K)\rbrack^\top$
    \State With $w$ fixed, solve the empirical risk minimization problem:
    \State\begin{equation}
    \begin{split}
    & \min_{\alpha \in \mathbb{R}^K} \frac{1}{m}\sum\limits_{i=1}^{m}c(\alpha^\top z_i,y_i)\\
    \mbox{subject to } & ||\alpha||_{\infty}\leq \frac{C}{K}
    \end{split}
    \end{equation}
    \end{algorithmic}
    \end{algorithm}`

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #87125
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        ftabaro” post=86514buongiorno, sto cercando di scrivere un’algoritmo al cui interno é presente una equazione con dei vincoli. Per scrivere tali vincoli utilizzo l’ambiente split. Nella compilazione, latex mi da errori del tipo “Missing \endcsname inserted state” e non riesco a capire dove sia l’errore. Allego il mio codice.

        `\begin{algorithm}
        \caption{The Weighted Sum of Random Kitchen Sinks fitting procedure}
        \small
        \begin{algorithmic}
        \Require{A dataset $\{x_i,y_i\}_{i=1,…,m}$ of $m$ points, a bounded feature function $|\phi(x,w)| \leq 1$, an integer $K$, a scalar $C$ and a probability distribution $p(w)$ on the parameters of $\phi$}
        \Ensure{A function $\Hat f(x) = \sum\limits_{k=1}^{K}\phi(x;w_k)\alpha_k$}
        \State Draw $w_1,…,w_K$ iid from $p$
        \State Featurize the input: $z_i \gets \lbrack \phi(x_i;w_1),…,\phi(x_i;w:K)\rbrack^\top$
        \State With $w$ fixed, solve the empirical risk minimization problem:
        \State\begin{equation}
        \begin{split}
        & \min_{\alpha \in \mathbb{R}^K} \frac{1}{m}\sum\limits_{i=1}^{m}c(\alpha^\top z_i,y_i)\\
        \mbox{subject to } & ||\alpha||_{\infty}\leq \frac{C}{K}
        \end{split}
        \end{equation}
        \end{algorithmic}
        \end{algorithm}`

        Ciao,
        a me questo codice funziona (la prossima volta dichiara esplicitamente i pacchetti, grazie), per cui l’errore è da qualche altra parte:

        `\documentclass{article}
        \usepackage{amsmath}
        \usepackage{amsfonts}

        \usepackage{algorithm}
        \usepackage{algpseudocode}

        \begin{document}

        \begin{algorithm}
        \caption{The Weighted Sum of Random Kitchen Sinks fitting procedure}
        \small
        \begin{algorithmic}
        \Require{A dataset $\{x_i,y_i\}_{i=1,…,m}$ of $m$ points, a bounded feature function $|\phi(x,w)| \leq 1$, an integer $K$, a scalar $C$ and a probability distribution $p(w)$ on the parameters of $\phi$}
        \Ensure{A function $\Hat f(x) = \sum\limits_{k=1}^{K}\phi(x;w_k)\alpha_k$}
        \State Draw $w_1,…,w_K$ iid from $p$
        \State Featurize the input: $z_i \gets \lbrack \phi(x_i;w_1),…,\phi(x_i;w:K)\rbrack^\top$
        \State With $w$ fixed, solve the empirical risk minimization problem:
        \State\begin{equation}
        \begin{split}
        & \min_{\alpha \in \mathbb{R}^K} \frac{1}{m}\sum\limits_{i=1}^{m}c(\alpha^\top z_i,y_i)\\
        \mbox{subject to } & ||\alpha||_{\infty}\leq \frac{C}{K}
        \end{split}
        \end{equation}
        \end{algorithmic}
        \end{algorithm}

        \end{document}`
        R.

      • #87126
        Up
        0
        Down
        ::


        ok grazie, scusa se non ho messo i pacchetti, mi sono dimenticato. Io uso due distribuzione MikTex e MacTex Live su due diversi computer, c’é una ragione per cui spesso e volentieri Miktex mi da errori che MacTrx Live non trova?

      • #87127
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::

          ftabaro” post=86517ok grazie, scusa se non ho messo i pacchetti, mi sono dimenticato. Io uso due distribuzione MikTex e MacTex Live su due diversi computer, c’é una ragione per cui spesso e volentieri Miktex mi da errori che MacTrx Live non trova?

          Non saprei dirti. Eventualmente installa TeX Live al posto di MikTeX…
          R.

        • #87128
          Up
          0
          Down
          ::


          eh avessi i permessi per faro, ma grazie lo stesso 🙂

        • #87129
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::

            ftabaro” post=86517ok grazie, scusa se non ho messo i pacchetti, mi sono dimenticato. Io uso due distribuzione MikTex e MacTex Live su due diversi computer, c’é una ragione per cui spesso e volentieri Miktex mi da errori che MacTrx Live non trova?

            Probabilmente è una questione di aggiornamenti; MacTeX sul Mac può essere aggiornato anche quotidianamente; MiKTeX di solito è un pochino in ritardo nei sui aggiornamenti. Ma in entrambi i casi bisogna farlo a mano, non sono aggiornamenti automatici.

          • #87130
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::

              ftabaro” post=86520eh avessi i permessi per faro, ma grazie lo stesso 🙂

              Ok, ma solo per questa volta: permesso accordato 🙂
              R.

            • #87131
              Up
              0
              Down
              ::


              ok controllando il sorgente pare che si sia un blocco non chiuso in un altro algoritmo. Posto un MWE, è lungo e diviso in due sezioni. Rileggendo non sono stato in grado di capire cosa ho lasciato aperto (:oops: ). Se qualcuno avesse voglia/tempo di buttarci un occhio sarebbe gesto molto apprezzato. Grazie.

              `\documentclass{article}
              \usepackage{amsmath,amsfonts,algorithm,algpseudocode}

              \begin{document}

              \begin{algorithm}[!h]
              \caption{Vincent-Soille watershed algorithm}\label{wshedPseudocode}
              \small
              \begin{algorithmic}[1]
              \Procedure{Watershed-by-Immersion}{}
              \Require{digital grey scale image $G = (D,E,im)$}
              \Ensure{labelled watershed image \textit{lab} on $D$}
              \State{\# define \textsc{init} -1 } \Comment{initial value of $lab$ image}
              \State{\# define \textsc{mask} -2 } \Comment{initial value of each level}
              \State{\# define \textsc{wshed} 0 } \Comment{label of watershed pixel}
              \State{\# define \textsc{fictitious} (-1,-1) } \Comment{fictitious pixel $\notin D$}
              \State$curlab \gets 0$ \Comment{$curlab$ is the current label}
              \State$fifo\_init(queue)$
              \For{\textbf{all} $p \in D$}
              \State $lab\lbrack p \rbrack \gets \textsc{init}; dist\lbrack p \rbrack \gets 0$ \Comment{$dist$ is a work image of distances}
              \EndFor
              \State{SORT pixels in increasing order of grey values from $h_{min}$ to $h_{max}$}
              \State
              \State{Start Flooding}
              \For{$h = h_{min}$ to $h_{max}$} \Comment{Geodesic SKIZ of level $h-1$ inside level $h$}
              \For{\textbf{all} $p \in D$ \textbf{with} $im\lbrack p\rbrack = h$} \Comment{mask all pixel at level h, these are directly accessible because of the sorting step}
              \State{$lab\lbrack p \rbrack \gets \textsc{mask}$ }
              \If{$p$ has a neighbour $q$ \textbf{with} ($lab \lbrack q \rbrack = \textsc{wshed}$)}
              \Comment{Initialize queue with neighbours at level $h$ of current basins or watersheds}
              \State $dist\lbrack p \rbrack \gets 1; fifo\_add(p,queue)$
              \EndIf
              \EndFor
              \State$curdist \gets 1; fifo\_add(\textsc{fictitious},queue)$

              \Loop \Comment{extend basins}
              \State $p \gets fifo\_remove(queue)$
              \If {$p = \textsc{fictitious}$}
              \If {$ fifo\_empty(queue)$}
              \State{\textsc{break}}
              \Else
              \State $fifo\_add(\textsc{fictitious},queue $)
              \State $curdist \gets curdist +1 $
              \State $ p \gets fifo\_remove(queue)$
              \EndIf
              \EndIf

              \For{\textbf{all} $q \in N_G(p)$}\Comment{labelling $p$ by inspecting neighbours}
              \If{$dist\lbrack q \rbrack < curdist$ \textbf{and} $lab\lbrack q \rbrack > 0$ \textbf{or} $lab\lbrack q \rbrack > \textsc{wshed}$}
              \State{$q$ belongs to an existing basin or watershed}
              \algstore{bkbreak}
              \end{algorithmic}
              \end{algorithm}
              \clearpage
              \begin{algorithm}[!h]
              \begin{algorithmic}[1]
              \algrestore{bkbreak}

              \If{$lab\lbrack q \rbrack > 0$}
              \If{$lab\lbrack p \rbrack = \textsc{mask}$ \textsc{or} $lab\lbrack p \rbrack > \textsc{wshed}$}
              \State $lab\lbrack p \rbrack \gets lab\lbrack q \rbrack $
              \ElsIf{$lab\lbrack p \rbrack \neq lab\lbrack q \rbrack $}
              \State $lab\lbrack p \rbrack \gets \textsc{wshed} $
              \EndIf
              \ElsIf{$lab\lbrack p \rbrack = \textsc{mask} $}
              \State$lab\lbrack p \rbrack \gets \textsc{wshed} $
              \EndIf
              \ElsIf{$lab\lbrack q \rbrack = \textsc{mask}$ \textsc{and} $dist\lbrack q \rbrack = 0$} \Comment{$q$ is a plateau pixel}
              \State$dist\lbrack q \rbrack \gets curdist + 1; fifo\_add(1,queue)$
              \EndIf
              \EndFor
              \EndLoop
              \State{detect and process new minima at level $h$}
              \For{\textbf{all} $p \in D$ \textbf{with} $im \lbrack p \rbrack = h$}
              \State$dist \lbrack p \rbrack = 0$ \Comment{reset distance to zero}
              \If{$lab\lbrack p \rbrack = \textsc{mask}$} \Comment{$p$ is inside a new minimum}
              \State{$curlab \gets curlab +1$} \Comment{create a new label}
              \State{$fifo\_add(p,queue);lab\lbrack p \rbrack \gets curlab$}
              \While{\textbf{not} $fifo\_empty(queue)$}
              \State{$q \gets fifo\_remove(queue)$}
              \For{\textbf{all} $r \in N_G(q)$}\Comment{inspect neighbours of $q$}
              \If{$lab\lbrack r \rbrack = \textsc{mask}$}
              \State{$fifo\_add(r,queue); lab\lbrack r \rbrack \gets curlab$}
              \EndIf
              \EndFor
              \EndWhile
              \EndIf
              \EndFor
              \EndFor
              \State{End Flooding}
              \end{algorithmic}
              \end{algorithm}
              \end{document}`

            • #87132
              robitex
              Amministratore del forum
                Up
                0
                Down
                ::


                Ciao,
                tra una scossa e l’altra (siamo ancora sotto sciame sismico) ho controllato il tuo sorgente e la documentazione del pacchetto:
                semplicemente mancano gli \EndProcedure ed alcuni \EndFor.
                Sistemali nel punto in cui terminano i costrutti.
                Saluti.
                R.

              • #87133
                Up
                0
                Down
                ::


                Grazie del supporto. Spero niente di grave con le scosse… forza e coraggio!

              • #87134
                robitex
                Amministratore del forum
                  Up
                  0
                  Down
                  ::

                  ftabaro” post=86540Grazie del supporto. Spero niente di grave con le scosse… forza e coraggio!

                  Grazie per il supporto.
                  Il tuo atteggiamento in generale, corrisponde proprio allo stato d’animo per affrontare queste situazioni.
                  Colgo l’occasione per rassicurare gli amici del GuIT. Abbiamo avuto tutto sommato e per fortuna pochi danni (almeno fino ad ora).
                  Soltanto stamani ho avuto un po’ di tempo dopo le verifiche che abbiamo condotto nel fine settimana.
                  R.

              Visualizzazione 9 filoni di risposte
              • Devi essere connesso per rispondere a questo topic.

              Go to top