\begin{algorithm}
\caption{MADS algoritması}\label{alg:mABC}
\small
\begin{algorithmic}[1]
\NoNumber{\textbf{Başlama}}
\State $\qquad$ $\Delta^0 \in (0,\infty)$ \Comment{ Çerçeve Boyutunun Başlangıç Değeri }
\State $\qquad$ $D = GZ $\Comment{ Pozitif kapsayan matris }
\State $\qquad$ $\tau \in (0,1), \: \tau \in \mathbb{Q} $\Comment{ Örgü adım uzunluğu güncelleştirme parametresi }
\State $\qquad$ $\epsilon_{stop} \in [0, \infty) $\Comment{ Durma kriteri }
\State $\qquad$ $k \gets 0$\Comment{ İterasyon sayacı }
\NoNumber{ \textbf{Parametre değişimi} }
\State $\qquad$ Örgü Adım Uzunluğunu $\delta^k = min\lbrace \delta^k , {(\delta^k)}^2\rbrace $ olarak güncelle
\NoNumber{ \textbf{Arama}}
\State $\qquad$ Eğer $M^k$ nın sonlu alt kümesi $S^k$ nın elemanı t için $f(t) < f(x^k)$ ise $x^{k+1} \gets t$ ve $\delta^{k+1} \gets \tau^{-1} \delta^k$ yap ve 10'a geç aksi halde 8'e geç
\NoNumber{ \textbf{Havuz}}
\State $\qquad$ Bir pozitif kapsayan küme $\mathds{D}^k_\Delta$ öyleki $F^k$ çerçevenin $\Delta^k$ boyutundaki alt kümesi $ P^k = \lbrace x^k + \delta^k d : d \in \mathds{D}^k_\Delta \rbrace $ olsun. Eğer $f(t) < f(x^k)$ olacak şekilde $t \in P^k$ varsa $x^{k+1} \gets t$ ve $\delta^{k+1} \gets \tau^{-1} \delta^k$ yap aksi halde $x^k$ yerel örgü optimumlayanıdır.
\State $\qquad$ $x^{k+1} \gets x^k$ ve $\delta^{k+1} \gets \tau \: \delta^k $ yap
\NoNumber{ \textbf{Sonlandırma} }
\State $\qquad$ Eğer $\Delta^{k+1} \geq \epsilon_{stop}$ise $k \gets k+1$ yap ve 7'ye geç aksi halde durdur.
\end{algorithmic}
\end{algorithm}
在上面提到的代码中,我遇到了多个错误,例如
! Extra \endcsname.\ALG@makebeginrepeat ...\ALG@thisblock \endcsname\relax \def \ALG@thisblock... \State
! Missing \endcsname inserted.<to be readagain>\ALG@currentblock@1 \State
请帮忙。
编辑:我使用过的软件包
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{booktabs}
\usepackage{lscape}
\usepackage{floatrow}
\usepackage{adjustbox}
\usepackage{multirow,tabularx}
\usepackage{rotating}
\usepackage{epstopdf}
\usepackage{float}
\floatsetup[table]{capposition=top}
% Change float style of algorithm from "ruled" to "plaintop"
\floatstyle{plaintop}
\restylefloat{algorithm}
% Make algorithm captions left-aligned
\usepackage{caption}
\captionsetup[algorithm]{singlelinecheck=off}
\usepackage[textwidth=5.8in]{geometry}
\usepackage[none]{hyphenat}
\usepackage{microtype}
\usepackage[turkish]{babel}
\usepackage{amsmath}
\usepackage{arevmath}
\usepackage{epstopdf}
\usepackage{ dsfont }
\usepackage{rotating}
\usepackage{algorithmicx}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\setlength{\parindent}{1em}
\setlength{\parskip}{1em}
\renewcommand{\baselinestretch}{1.5}
\hyphenchar\font=-1
\floatname{algorithm}{Algoritma}
\def\NoNumber#1{{\def\alglinenumber##1{}\State #1}\addtocounter{ALG@line}{-1}}
答案1
\NoNumber
contains的定义@
是命令的一部分,因此必须将定义括在\makeatletter
和之间\makeatother
。
但即使进行了这样的更改, 的定义仍然\NoNumber
存在缺陷:如果在 之后直接使用,则会出现错误\begin{algorithmic}[1]
。应改用\Statex
。
\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{dsfont,amssymb}
\begin{document}
\begin{algorithm}
\caption{MADS algoritması}\label{alg:mABC}
\small
\begin{algorithmic}[1]
\Statex \textbf{Başlama}
\State $\qquad$ $\Delta^0 \in (0,\infty)$ \Comment{ Çerçeve Boyutunun Başlangıç Değeri }
\State $\qquad$ $D = GZ $\Comment{ Pozitif kapsayan matris }
\State $\qquad$ $\tau \in (0,1), \: \tau \in \mathbb{Q} $\Comment{ Örgü adım uzunluğu güncelleştirme parametresi }
\State $\qquad$ $\epsilon_{stop} \in [0, \infty) $\Comment{ Durma kriteri }
\State $\qquad$ $k \gets 0$\Comment{ İterasyon sayacı }
\Statex \textbf{Parametre değişimi}
\State $\qquad$ Örgü Adım Uzunluğunu $\delta^k = min\lbrace \delta^k , {(\delta^k)}^2\rbrace $ olarak güncelle
\Statex \textbf{Arama}
\State $\qquad$ Eğer $M^k$ nın sonlu alt kümesi $S^k$ nın elemanı t için $f(t) < f(x^k)$ ise $x^{k+1} \gets t$ ve $\delta^{k+1} \gets \tau^{-1} \delta^k$ yap ve 10'a geç aksi halde 8'e geç
\Statex \textbf{Havuz}
\State $\qquad$ Bir pozitif kapsayan küme $\mathds{D}^k_\Delta$ öyleki $F^k$ çerçevenin $\Delta^k$ boyutundaki alt kümesi $ P^k = \lbrace x^k + \delta^k d : d \in \mathds{D}^k_\Delta \rbrace $ olsun. Eğer $f(t) < f(x^k)$ olacak şekilde $t \in P^k$ varsa $x^{k+1} \gets t$ ve $\delta^{k+1} \gets \tau^{-1} \delta^k$ yap aksi halde $x^k$ yerel örgü optimumlayanıdır.
\State $\qquad$ $x^{k+1} \gets x^k$ ve $\delta^{k+1} \gets \tau \: \delta^k $ yap
\Statex \textbf{Sonlandırma}
\State $\qquad$ Eğer $\Delta^{k+1} \geq \epsilon_{stop}$ise $k \gets k+1$ yap ve 7'ye geç aksi halde durdur.
\end{algorithmic}
\end{algorithm}
\end{document}