![排版具有众多约束的优化问题](https://linux22.com/image/424079/%E6%8E%92%E7%89%88%E5%85%B7%E6%9C%89%E4%BC%97%E5%A4%9A%E7%BA%A6%E6%9D%9F%E7%9A%84%E4%BC%98%E5%8C%96%E9%97%AE%E9%A2%98.png)
我正在编写一个包含 50 个约束的优化问题。我的代码如下。
\begin{equation*}
\begin{aligned}
{\underset{x_{i}}{\textnormal{minimise}}} \quad
&800\left(\sum_{i=1}^{89}x_i\right)+99\left(x_{34}+x_{81}\right) \\
\mathllap{\text{subject to} \quad}
&x_{11}+x{12}\geq 1 \\
&x_{13}+x{14}\geq 1 \\
&x_{18}+x{19}\geq 1 \\
....
\end{aligned}
\end{equation*}
为了方便起见,我用省略号“...”表示剩余的约束。出于某种原因,一旦约束到达现有页面的底部,整个优化问题就会在新页面上开始。不仅如此,而且不适合此单个页面的约束也不会显示。
有没有办法智能地格式化这个优化问题?
编辑
我正在使用
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
%% Sets page size and margins
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,marginparwidth=1.75cm]{geometry}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
答案1
\allowdisplaybreaks
该软件包提供的命令amsmath
应该允许在多行显示的方程式内进行分页。但是,正如软件包用户指南第 3.9 节“多行显示中的垂直间距和分页符”中所述,它amsmath
不适\allowdisplaybreaks
用于split
、aligned
、gathered
和alignedat
环境的内容。
为了解决这个问题,我建议您将所有方程式放在一个align*
环境中,而不是将一个aligned
环境嵌套在另一个equation*
环境中。
\documentclass{article} % choose a suitable document class
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%% Sets page size and margins
\usepackage[a4paper,
%top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,
margin=2.5cm,
marginparwidth=1.75cm]{geometry}
%\usepackage{amsmath} % is loaded automatically by 'mathtools'
%\usepackage{amsfonts} % is loaded automatically by 'amssymb'
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
% \usepackage[framed,numbered,autolinebreaks,useliterate]{mcode} % I don't have this package
\begin{document}
\allowdisplaybreaks
\begin{align*}
\underset{x_{i}}{\textnormal{minimise}}\quad
&800\biggl(\,\sum_{i=1}^{89}x_i\biggr)+99(x_{34}+x_{81}) \\
\textnormal{subject to} \quad
&x_{11}+x_{12}\geq 1 \\
&x_{13}+x_{14}\geq 1 \\
&x_{18}+x_{19}\geq 1 \\
&\dots
\end{align*}
\end{document}
答案2
让我提一下,有一个专门的包:optidef
,它定义了几个优化环境,具有各种布局,它们接受一个<b>
可选参数来跨页面打破环境。以下是使用该mini*
环境的代码:
\documentclass{article}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[a4paper, margin=2.5cm, marginparwidth=1.75cm]{geometry}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{optidef} % dedicated package
\begin{document}
\begin{mini*}<b>
{x_{i}}{800\biggl(\,\sum_{i=1}^{89}x_i\biggr)+99(x_{34}+x_{81})}
{}{}
\addConstraint{x_{11}+x_{12}\geq 1}
\addConstraint{x_{13}+x_{14}\geq 1}
\addConstraint{x_{18}+x_{19}\geq 1}
\addConstraint{\dots\dots\dots\dots}
\end{mini*}
\end{document}