lingo中的一些概念解释

简介: lingo中的一些概念解释

减少成本

线性规划中,减少成本(Reduced Cost)是指在当前解决方案下,将一个非基本变量(Non-Basic Variable)引入基本解中,而使目标函数值保持不变的最大可行增量。换句话说,减少成本表示的是引入新的资源所带来的效益或代价。

减少成本与线性规划的单纯形法密切相关。单纯形法是一种优化算法,用于在线性规划中寻找最优解。在单纯形法中,通过迭代地从一个基本解移动到另一个基本解,直到达到最优解。每次迭代都会选择一个非基本变量作为候选变量,并计算其减少成本。

在每次迭代中,计算减少成本的步骤如下:

1. 选择一个非基本变量作为候选变量。

2. 计算该候选变量的减少成本。

    - 减少成本的计算可以通过求解对应的对偶问题或使用线性规划求解软件来获得。

3. 如果候选变量的减少成本小于等于零,则当前解是最优解,算法终止。

4. 如果候选变量的减少成本大于零,选择减少成本最大的候选变量作为新的进基变量(Entering Variable)。

5. 通过迭代的计算,找到新的基本解。

减少成本的概念可以帮助确定在何处引入新资源,以改进解决方案并使目标函数值更优。如果某个候选变量的减少成本为负值,则表示在当前解决方案下,引入该变量将导致目标函数值减小。因此,负减少成本的变量通常是有利于提高目标函数的选择。

总而言之,减少成本是在线性规划中用于确定优化解决方案中资源引入的方向和效益的概念,它在单纯形法等优化算法中起到重要的作用。


当我们解释减少成本时,以一个生产计划的例子来说明会更加清晰。

假设我们有一个制造公司,生产两种产品:A和B。我们想确定每个产品的生产数量,以最大化利润。假设每个产品的单位利润如下:

- 产品A的利润为10美元。

- 产品B的利润为8美元。

此外,我们需要考虑生产每个产品所需的资源和约束条件。假设每个产品在生产过程中需要以下资源:

- 生产产品A需要3个单位的资源X和2个单位的资源Y。

- 生产产品B需要4个单位的资源X和1个单位的资源Y。

同时,我们有限制条件,即我们只有 18 个单位的资源X 和 12 个单位的资源Y 可供使用。

现在,我们可以将这个问题转化为一个线性规划问题,其中决策变量是产品A和产品B的生产数量,目标是最大化利润,并且需要满足资源约束条件。

假设我们有以下决策变量:

- 产品A的生产数量:x1

- 产品B的生产数量:x2

则,我们的线性规划模型如下:

目标函数:最大化利润

Maximize: 10x1 + 8x2

约束条件:

3x1 + 4x2 ≤ 18  (资源X的约束条件)

2x1 + x2 ≤ 12    (资源Y的约束条件)

x1 ≥ 0

x2 ≥ 0

现在,假设我们已经找到了一个初始解决方案,其中 x1 = 3,x2 = 2。我们要检查非基本变量(即 x1 和 x2)的减少成本,以确定是否可以进一步改善解决方案。

我们可以通过计算每个非基本变量对应的单位利润的变化来确定减少成本。在这种情况下,我们需要计算 x1 和 x2 的减少成本。

- 减少成本(x1)= 10 - 0 = 10 (单位利润没有变化)

- 减少成本(x2)= 8 - 0 = 8 (单位利润没有变化)

由于两个减少成本的值都是非负的,说明当前解决方案已经是最优解,没有更多的改进空间。因此,在这种情况下,进一步改变生产数量不会带来更高的利润。

这个例子说明了减少成本的概念如何在线性规划中使用,通过计算减少成本,我们可以确定最优解决方案或者找到进一步优化的方向。

单纯形法

单纯形法是一种用于线性规划问题求解的优化算法。它的原理基于以下思想:通过迭代地移动当前解从而逐步接近最优解,并在每一步中选择一个进基变量和出基变量来更新解的值,直到找到最优解为止。

下面是单纯形法的详细步骤:

1. 转换为标准型:将线性规划问题转化为标准型,也就是将目标函数转为最小化问题,并引入松弛变量将约束条件转化为等式。

2. 初始解:确定初始可行解,一般是通过设定松弛变量等于零获得。

3. 检查最优性:计算当前解的目标函数值,并检查是否符合最优性条件。如果目标函数值为最小值或最大值,则停止算法,当前解即为最优解。否则,继续执行下一步。

4. 选择进基变量:从非基本变量中选择一个作为进基变量。选择准则通常基于减少成本(Reduced Cost),即选择具有负减少成本的变量。如果没有负的减少成本,说明已经达到最优解,最优性条件不成立。

5. 选择出基变量:从基本变量中选择一个作为出基变量。选择准则通常基于最小比率法,即选择使得约束条件最先达到等号的变量。这样可以确保出基后不会使约束条件不满足。

6. 更新解:通过更新基本变量和非基本变量的值来得到新的解。这涉及到基本变量变为非基本变量,非基本变量变为基本变量,同时计算新的解的值。

7. 迭代和检查:检查新的解是否满足最优性条件。如果满足,停止算法,当前解即为最优解。否则,返回步骤4,继续迭代执行。

通过不断迭代步骤4到步骤7,每一次迭代都会使目标函数值不断减小(在最小化问题中)或增大(在最大化问题中)。最终,经过多次迭代,单纯形法会找到一个满足最优性条件的解,即最优解。

需要注意的是,虽然单纯形法在大多数情况下可以高效地找到最优解,但是在某些情况下可能会出现退化问题和循环问题。为了解决这些问题,可以采用一些技术,如人工变量法、Bland法则和双人工法等。

总而言之,单纯形法是一种通过迭代选择进基变量和出基变量来逐步接近最优解的线性规划求解方法。它在实践中被广泛应用,具有较好的效率和可靠性。


让我们通过一个具体的例子来说明单纯形法的步骤。

假设有以下线性规划问题:

最大化目标函数:Z = 6x1 + 5x2

约束条件:

1. 2x1 + x2 ≤ 8

2. x1 + 2x2 ≤ 6

3. x1, x2 ≥ 0

首先,将约束条件转化为等式形式并引入松弛变量,得到以下标准型的问题:

最大化目标函数:Z = 6x1 + 5x2

约束条件:

1. 2x1 + x2 + s1 = 8

2. x1 + 2x2 + s2 = 6

3. x1, x2, s1, s2 ≥ 0

我们现在按照单纯形法的步骤来解决这个问题。

步骤1:转换为标准型已完成。

步骤2:确定初始可行解。我们可以选择x1=0,x2=0作为初始可行解。这将使得s1=8,s2=6。此时,我们的初始基本解为(x1, x2, s1, s2)= (0, 0, 8, 6)。

步骤3:计算目标函数值。将x1=0,x2=0代入目标函数,得到Z=0。由于Z=0不是最大值,我们需要继续进行优化。

步骤4:选择进基变量。我们计算减少成本(Reduced Cost)。

- 对于x1:减少成本(x1)= 6 - 0 = 6

- 对于x2:减少成本(x2)= 5 - 0 = 5

根据减少成本,我们选择减少成本最大的进基变量,即x1。

步骤5:选择出基变量。我们使用最小比率法来选择出基变量。

- 对于约束1(s1):最小比率 = 8 / 2 = 4

- 对于约束2(s2):最小比率 = 6 / 1 = 6

根据最小比率,我们选择最小比率对应的出基变量,即约束1(s1)。

步骤6:更新解。通过更新基本变量和非基本变量来得到新的解。

我们进行行变换,并将s1换出基本解,得到:

1. x1 = 4 - 0.5x2 - 0.5s1

2. s1 = 8 - 2x1 - x2

3. s2 = 6 - x1 - 2x2

此时,我们的新基本解为(x1, s1, s2)= (4, 8, 6)。

步骤7:迭代和检查。我们继续迭代来接近最优解。

- 重新计算目标函数值:根据新基本解,将x1=4代入目标函数,得到Z = 6(4) + 5x2 = 24 + 5x2。

- 计算减少成本:对于x1和x2,减少成本为:减少成本(x1)= 6 - 4 = 2,减少成本(x2)= 5 - 0 = 5。

根据减少成本,我们发现减少成本为负的变量已经没有了,说明我们已经找到了最优解。

因此,最优解为Z = 24,当x1 = 4,x2 = 0时取得。

这个例子演示了单纯形法的步骤,通过迭代选择进基变量和出基变量来逐步接近最优解。实际应用中,单纯形法可以处理更复杂的线性规划问题,并得到最优解。


相关文章
|
1月前
|
人工智能 算法
【算法】深入理解 Prolog:逻辑编程的奇妙世界
【算法】深入理解 Prolog:逻辑编程的奇妙世界
24 0
|
8月前
|
机器学习/深度学习 数据采集 算法
2021-4月 Python机器学习——名词概念学习,概念解释
2021-4月 Python机器学习——名词概念学习,概念解释
147 0
|
4月前
|
人工智能
实例解释在lingo中使用集合模型
实例解释在lingo中使用集合模型
|
8月前
|
编解码 JavaScript
解释基本的3D理论
本文介绍了所有基本理论,这些理论在开始使用 3D 时很有用。
63 0
解释基本的3D理论
|
9月前
解读量子力学:哥本哈根解释与多世界解释
无论选择哪种解释,量子力学依然是一个极为成功的理论,能够准确描述微观世界的行为。不同的解释视角提供了对量子力学的不同解读,激发了科学家们对于量子世界本质的思考和探索。
113 1
解读量子力学:哥本哈根解释与多世界解释
|
9月前
|
存储 人工智能 索引
Yalmip入门教程(3)-约束条件的定义
Yalmip入门教程系列博客第三篇,约束条件的定义。
|
11月前
|
机器学习/深度学习 人工智能 Java
概率统计——重要术语及解释
概率统计——重要术语及解释
概率统计——重要术语及解释
|
11月前
|
程序员 C语言 Windows
计算机程序的构造和解释 - 个人笔记(一)
学习任何语言思想最重要的是思想本身,而scheme由于语言天生的自由性,可以极大的发挥程序员的思想空间
70 0
|
11月前
|
算法 索引 Python
从一道简单算法题里面解释什么叫做 O(1)
从一道简单算法题里面解释什么叫做 O(1)
82 0
|
11月前
|
算法 搜索推荐 程序员
c++模板的概念全新解释(二)
c++模板的概念全新解释(二)
100 0