Questions tagged «linear-programming»

在给定数学模型中找到最佳结果的数学和计算方法,其中需求列表表示为线性关系。

2
具有固定数量的变量的整数编程
H. Lenstra在1983年发表的著名论文《具有固定数量的变量的整数编程》指出,具有固定数量的变量的整数程序可以在时间多项式中求解数据长度。 我的解释如下。 通常,整数编程仍然是NP完整的,但是如果我手头上典型的问题大小(例如大约10.000个变量,任意数量的约束)在实践中可行,那么我可以构建一种算法,该算法可以按多项式缩放约束数量,但不能变量和约束的数量。 该结果也适用于二进制编程,因为我可以通过添加适当的约束将任何整数强制为0-1。 我的解释正确吗? 这个结果有实际意义吗?也就是说,有没有可用的实现,或者它已用于CPLEX,Gurobi或Mosek等流行的求解器中? 本文引述如下: 出于我们的目的,此长度可以定义为n·m·log(a + 2),其中a表示A和b的系数的绝对值的最大值。实际上,由于所讨论的问题是NP完全问题,因此不可能存在这样的多项式算法 [...] 推测[5],[10],对于n的任何固定值,都存在一个用于求解整数线性规划问题的多项式算法。在本文中,我们通过展示这种算法来证明这一猜想。可以限制我们的算法运行时间的多项式次数是n的指数函数。

1
单纯形法的数值稳定性
单纯形算法通常在实数运算中或在离散世界中使用精确计算进行处理。但是,它似乎最常通过浮点算法实现。 这就提出了一个问题,即单纯形算法是否应视为数值算法,尤其是舍入误差如何影响计算。我对实际实现不感兴趣,但对理论基础不感兴趣。 您是否知道有关此问题的任何研究?

2
LP的最小最大解
如今,线性编程当然已广为人知。我们有许多工作描述了可行解的结构和最优解的结构。我们拥有强大的对偶性,多重时间算法等。 但是,关于LP的最小极大解又有什么了解呢?或等效地,最大最小解决方案? (这不是一个真正的研究问题,但是也许我们可以在假期中使用一些技术性不强的东西。有待研究的问题,但我只发现了一些零星的论文提到了这个问题。) 为简单起见,让我们集中讨论打包和覆盖LP。在包装的LP,我们都给出了非负矩阵。一种载体,X是可行的,如果X ≥ 0和甲X ≤ 1。我们说x是最大的,如果可行的话,我们不能贪婪地增加任何分量。也就是说,如果ÿ ≥ 0和ÿ ≠ 0,则X + ý是不可行的。最后,x是一个AAAxxxx≥0x≥0x \ge 0Ax≤1Ax≤1Ax \le 1xxxy≥0y≥0y \ge 0y≠0y≠0y \ne 0x+yx+yx + yxxx最小最大解,如果它使所有最大解中的目标函数最小。∑ixi∑ixi\sum_i x_i (您可以类似地定义覆盖LP的最大最小解决方案。) 最小最大解的空间是什么样的?我们如何找到这样的解决方案?找到这样的解决方案有多困难?我们如何近似这样的解决方案?谁来研究这些东西,什么才是正确的术语? 这些问题最初是由边缘控制集和最小最大匹配引起的。众所周知(而且很容易看出),最小最大匹配是最小边沿支配集;相反,给定一个最小的边控制集,很容易构造一个最小的最大匹配。 因此,从本质上讲,它们是相同的问题。这两个问题都是NP难题和APX难题。有一个简单的2近似算法:任何最大匹配。 但是,它们的“自然” LP松弛看起来非常不同。如果您遇到边缘支配集问题并形成自然的LP松弛,那么您将获得覆盖LP。但是,如果您遇到寻找最小最大匹配的问题,并尝试提出LP松弛,那么您会得到什么呢?好吧,分数匹配当然是装箱LP的可行解决方案。那么最大分数匹配是这种LP的最大解,因此最小最大分数匹配是这种LP的最小最大解。:)

1
找到一个将多面体均匀分裂的切割平面
假设我们有一个标准形式的多面体: 甲X = bX ≥ 0一个X=bX≥0\begin{equation*} \begin{array}{rl} \mathbf{A}\mathbf{x} = \mathbf{b} \\\\ \mathbf{x} \ge 0 \end{array} \end{equation*} 有什么已知的方法可以找到一个超平面来分裂多面体,使得超平面每一侧的顶点数量大致相同?(即最小化分割两侧顶点基数绝对差的算法)。d x + d0= 0dX+d0=0\mathbf{d} \mathbf{x} +d_0= 0 另外,关于此问题的复杂性是否有任何已知结果? 附录:限制裁员类型: 这是原始问题的一种变体,希望它比原始问题更容易解决: 有没有一种方法可以有效地计算或估计形式的超平面会为哪个坐标产生分裂两边的顶点基数的最小绝对差?“有效”是指所有可能的拆分都比穷举顶点基数更有效。一世一世id一世X一世+ d0= 0d一世X一世+d0=0d_ix_i + d_0 = 0 注意:经过几天的小改进,我也在MathOverflow上发布了此问题。

1
在优化中放宽约束
我有一个可行性问题,可以如下所述。我在维向量空间中得到了一个点,我想找到最接近点,它满足以下形式的一组“约束”d q p ℓ 0pppdddqqqpppℓ0ℓ0\ell_0 给定集合,最多可以为非零。{ q Ĵ,Ĵ ∈ 小号}小号∈ [ 1 … d]S∈[1…d]S \in [1\ldots d]{ qĴ,Ĵ ∈ 小号}{qj,j∈S}\{q_j, j \in S\} 紧密度的概念各不相同,但是现在假设这样的方便距离就足够了。ℓ22ℓ22\ell_2^2 在提供“足够接近”的多边形以近似原始约束的意义上,是否存在对线性约束的任何已知松弛,即“好”,在这里我对“足够接近”的定义也相当灵活

1
如果条件的LP公式
我有以下LP: / *目标函数* / 最小值:1 w + 2 x + 0.5 y + z; / *可变范围* / w + x <= T1; w + y = U1; x + z = U2; T1 = 50; U1 = 70; U2 = 25; 在这种情况下,U1 + U2> T1,最优解为y = 70和z =25。我想强制执行以下条件:在将值w和x赋值给y和z之前,先给w和x变量赋值。如果U1 + U2 …

1
为什么互补松弛很重要?
在谈论对偶性时,通常会教互补松弛(CS)。从数学的角度来看,它在原始约束和对偶约束/变量之间建立了良好的关系。 申请CS的两个主要原因(如研究生课程和教科书中所述): 检查LP的最优性 帮助解决双重问题 从实用的角度来看,考虑到当今解决LP的计算能力和多项式算法,CS仍然有意义吗?我们总是可以解决双重问题,并解决以上两点。我同意在CS的帮助下解决双重问题“效率更高”,是吗?还是CS不仅满足您的需求?除了以上两点,CS到底在哪里有用?在谈论近似算法时,我经常看到涉及CS概念的文章,但我不了解它在其中的作用。

2
用半定编程可以解决什么,而用线性编程不能解决?
我对线性程序很熟悉,因为它们可以解决线性目标函数和线性约束的问题。但是,半定规划可以解决线性规划不能解决的问题?我已经知道半定程序是线性程序的一般化。 另外,如何识别可以使用半定编程解决的问题?半线性编程无法通过线性编程解决的一个典型问题是什么? 非常感谢您的任何答复。

2
线性系统如何/为什么对计算机科学如此重要?
最近,我开始涉足数学优化,并且对此非常喜欢。似乎很多优化问题可以通过线性程序轻松表达和解决(例如,网络流量,边缘/顶点覆盖,旅行推销员等),我知道其中一些是NP难点的,但关键是它们可以如果未得到最佳解决,则“框架化为线性程序”。 那让我开始思考:在整个学校/学院中,我们一直都被教导线性方程组,线性代数系统。看到LP表达各种算法的强大功能,这真是令人着迷。 问题:尽管我们周围普遍存在非线性系统,但是线性系统对计算机科学为何如此重要?我确实知道,它们有助于简化理解,并且在大多数情况下在计算上易于处理,是吗?这个“近似值”有多好?我们过度简化了吗,结果在实践中仍然有意义吗?还是仅仅是“自然”,即最令人着迷的问题确实只是线性的? 确保“线性代数/方程/编程”是CS的基石是否安全?如果不是,那么有什么矛盾呢?我们多久处理一次非线性问题(我在理论上不一定是指,但从“可解决性”的角度来看也是如此,即仅说它是NP并不能解决问题;应该很好地近似解决这个问题并将其降落)线性吗?)

1
有效地求解所有系数均等于1的严格线性不等式的系统,而无需使用一般的LP解算器?
除了使用通用的LP解算器,每个标题都提供一种解决变量不等式系统的方法 xi,…,xkxi,…,xkx_i, \ldots, x_k 不等式的形式 ∑i∈Ixi&lt;∑j∈Jxj∑i∈Ixi&lt;∑j∈Jxj\sum_{i \in I} x_i < \sum_{j \in J} x_j?那么关于不等式的特殊情况呢?不等式构成了一个幂集成员的总和{xi,…,xk}{xi,…,xk}\{x_i, \ldots, x_k\}?

2
线性程序的中点解决方案
有一个线性程序,我不仅要寻求一个解决方案,而且要拥有一个假定最小值的多面体表面尽可能中心的解决方案。 先验地,由于各种原因,我们期望最小化的面应该是高维的,包括最小化的目标函数是许多约束的最大值: 最小化 ϵϵ\epsilon 服从 fi(x¯)≤ϵ&lt;0fi(x¯)≤ϵ&lt;0f_i(\bar x) \leq \epsilon < 0 与 fifif_i 线性和 xi&gt;0xi&gt;0x_i > 0 对所有人 iii 和 ∑ixi=1∑ixi=1\sum_i x_i = 1。 当然,我们永远不会从单纯形算法中获得任何类似集中性的属性。但是,任何常规的内部点算法都具有这种特性吗?甚至可以保证尽可能避免顶点或低尺寸的面吗? 实际上,我可能很满足于一个简单的二次程序,该程序可以找到整个多面体的中点,因为中心性比最小性更重要,只是模糊地好奇其他线性编程算法是否提供相关的属性。 更新:我已将基本问题简化为一个可通过拉格朗日乘法器解决的简单约束最小化问题,但是上述问题仍然很有趣。

3
一次编程的线性编程解决方案,带有有序变量
我遇到了一系列线性编程问题:最大化 c′xc′xc' x 服从 Ax≤bAx≤bA x\le b, x≥0x≥0x\ge0。的要素AAA, bbb和 ccc 是非负整数 ccc严格肯定。(xxx 也应该是必不可少的,但我稍后会担心。) 在我的应用程序中经常会遇到系数 AAA 和 ccc 简化的单程算法为每种选择提供了最佳解决方案 bbb:单遍算法确定元素 x1,…,xnx1,…,xnx_1,\dots,x_n 依次选择每个 xjxjx_j 尽可能与已确定的值一致 x1,…,xj−1x1,…,xj−1x_1,\dots,x_{j-1}。在单纯形语言中,输入变量的顺序只是x1x1x_1 至 xnxnx_n,它在之后终止 nnn脚步。与完整的单纯形相比,这节省了大量时间。 当以下列的列 AAA 和的元素 ccc从“便宜”到“昂贵”排序。“便宜”变量是AAA 通常具有较小的值,为此, ccc 很大:对于 xxx 您会获得很多输出,并且对约束的需求不是很高 bbb。因此该算法只是说“先做简单的事情”。 我的问题是: AAA 和 ccc 可以向我们保证,这种简化算法适用于所有 bbb?我最初的猜想是AAA 应该在每一行中增加,但这是不正确的。 这是一些例子 c=(1,1,1)c=(1,1,1)c=(1,1,1): A1=⎛⎝⎜113122130⎞⎠⎟A1=(111123320)A_1=\begin{pmatrix} 1 & 1 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.