文档库 最新最全的文档下载
当前位置:文档库 › 利用修正单纯形法解线性规划问题精

利用修正单纯形法解线性规划问题精

利用修正单纯形法解线性规划问题精
利用修正单纯形法解线性规划问题精

利用修正单纯形法解线性规划问题一软件示意:

二代码说明:

Dim A(1 To 3, 1 To 6) As Double '矩阵A

Dim a1(1 To 3) As Double '矩阵A的第一列向量

Dim a2(1 To 3) As Double '矩阵A的第二列向量

Dim a3(1 To 3) As Double '矩阵A的第三列向量

Dim a4(1 To 3) As Double '矩阵A的第四列向量

Dim a5(1 To 3) As Double '矩阵A的第五列向量

Dim a6(1 To 3) As Double '矩阵A的第六列向量

Dim B_(1 To 3, 1 To 3) As Double '基矩阵B的逆矩阵

Dim XB(1 To 3) As Double '基本可行解

Dim b(1 To 3) As Double '右端向量b

Dim C(1 To 6) As Double '检验数

Dim CB(1 To 3) As Double '基本可行解对应的检验数

Dim π(1 To 3) As Double '单纯形乘子矢量

Dim r(1 To 6) As Double '检验矢量r

Dim r_min As Double '检验矢量最小值

Dim k_sign As Integer '检验矢量最小值对应的位置

Dim Y(1 To 3, 0 To 6) As Double '矩阵y

Dim just_vector(1 To 3) As Double

Dim liji_min As Double '用于判断离基变量所用值

Dim r_sign As Integer '用于记录离基变量对应的位置

Dim main_yuan As Double '用于存放主元

Dim Erk(1 To 3, 1 To 3) As Double

Dim Exchange_B(1 To 3, 1 To 3) '在矩阵Erk与矩阵B_进行乘法运算时,作为矩阵B_的替换矩阵

Dim Exchange_XB(1 To 3) '在矩阵Erk与XB_进行乘法运算时,作为XB_的替换矩阵

Dim iterative_time As Integer '定义迭代的次数

Dim XB_optimization(1 To 6) As Double '最优解

Private Sub Command1_Click()'窗口1

For iterative_time = 1 To 1000 '开始了迭代循环

Select Case k_sign

Case 1

If (r_sign - 3) = 3 Then

CB(1) = C(2) '付值给基本可行解对应的检验数

CB(2) = C(3)

CB(3) = C(6)

XB_optimization(1) = 0

XB_optimization(2) = XB(1)

XB_optimization(3) = XB(2)

XB_optimization(4) = 0

XB_optimization(5) = 0

XB_optimization(6) = XB(3)

End If

Case 2

If (r_sign - 3) = 1 Then

CB(1) = C(2) '付值给基本可行解对应的检验数

CB(2) = C(5)

CB(3) = C(6)

XB_optimization(1) = 0

XB_optimization(2) = XB(1)

XB_optimization(3) = 0

XB_optimization(4) = 0

XB_optimization(5) = XB(2)

XB_optimization(6) = XB(3)

End If

Case 3

If (r_sign - 3) = 2 Then

CB(1) = C(2) '付值给基本可行解对应的检验数

CB(2) = C(3)

CB(3) = C(6)

XB_optimization(1) = 0

XB_optimization(2) = XB(1)

XB_optimization(3) = XB(2)

XB_optimization(4) = 0

XB_optimization(5) = 0

XB_optimization(6) = XB(3)

End If

End Select

For i = 1 To 3 '计算单纯形乘子矢量

π(i) = CB(1) * B_(1, i) + CB(2) * B_(2, i) + CB(3) * B_(3, i) Next i

For j = 1 To 6 '计算检验矢量r

r(j) = C(j) - (π(1) * A(1, j) + π(2) * A(2, j) + π(3) * A(3, j))

Next j

r_min = r(1) '预先给定一个值

k_sign = 1

For i = 1 To 6 '找出最小检验值

If (r(i) < r_min) Then

r_min = r(i) '最小检验值

k_sign = i '最小检验值所在位置,对应进基矢量位置

End If

Next i

If r_min < 0 Then

For i = 1 To 3 '对应进基矢量所得的y值

Y(i, k_sign) = B_(i, 1) * A(1, k_sign) + B_(i, 2) * A(2, k_sign) + B_(i, 3) * A(3, k_sign)

Next i

For i = 1 To 3 '确定离基变量

If Y(i, k_sign) <> 0 Then

just_vector(i) = Y(i, 0) / Y(i, k_sign)

End If

Next i

For i = 1 To 3

If (just_vector(i)) > 0 Then

liji_min = just_vector(i) '预先给定一个值

Exit For

End If

Next i

r_sign = 4

For i = 1 To 3 '找出最小检验值

If ((just_vector(i) <= liji_min) And (just_vector(i) > 0)) Then

liji_min = just_vector(i) '最小检验值

r_sign = i + 3 '最小检验值所在位置,对应进基矢量位置 End If

Next i

main_yuan = Y(r_sign - 3, k_sign)

If main_yuan <> 0 Then

Select Case (r_sign - 3) '计算矩阵Erk

Case 1

Erk(1, 1) = 1 / main_yuan

Erk(2, 1) = -Y(2, k_sign) / main_yuan

Erk(3, 1) = -Y(3, k_sign) / main_yuan

For i = 2 To 3

For j = 1 To 3

Erk(j, i) = A(j, i + 3)

Next j

Next i

Case 2

Erk(1, 2) = -Y(1, k_sign) / main_yuan

Erk(2, 2) = 1 / main_yuan

Erk(3, 2) = -Y(3, k_sign) / main_yuan

For j = 1 To 3

Erk(j, 1) = A(j, 4)

Next j

For j = 1 To 3

Erk(j, 3) = A(j, 6)

Next j

Case 3

Erk(1, 3) = -Y(1, k_sign) / main_yuan

Erk(2, 3) = -Y(2, k_sign) / main_yuan

Erk(3, 3) = 1 / main_yuan

For i = 1 To 2

For j = 1 To 3

Erk(j, i) = A(j, i + 4)

Next j

Next i

End Select

End If

For i = 1 To 3 '给矩阵Exchange_B(i, j)付值

For j = 1 To 3

Exchange_B(i, j) = B_(i, j)

Next j

Next i

For i = 1 To 3 '计算B的新可逆矩阵B_

For j = 1 To 3

B_(i, j) = Erk(i, 1) * Exchange_B(1, j) + Erk(i, 2) * Exchange_B(2, j) + Erk(i, 3) * Exchange_B(3, j)

Next j

Next i

For i = 1 To 3 '给Exchange_XB(i)付值

Exchange_XB(i) = XB(i)

Next i

For i = 1 To 3 '计算基本可行解

XB(i) = Erk(i, 1) * Exchange_XB(1) + Erk(i, 2) * Exchange_XB(2) + Erk(i, 3) * Exchange_XB(3)

Y(i, 0) = XB(i)

Next i

Else

MsgBox ("优化完毕!")

Exit For

End If

Next iterative_time

Command2.Enabled = True '使能按钮

Command3.Enabled = True '使能按钮

Form1.Text1(1).Text = XB_optimization(1) '显示最优解x1

Form1.Text1(2).Text = XB_optimization(2) '显示最优解x2

Form1.Text1(3).Text = XB_optimization(3) '显示最优解x3

Form1.Text1(4).Text = XB_optimization(4) '显示最优解x4

Form1.Text1(5).Text = XB_optimization(5) '显示最优解x5

Form1.Text1(6).Text = XB_optimization(6) '显示最优解x6

Form1.Text1(0).Text = C(1) * XB_optimization(1) + C(2) * XB_optimization(2) + C(3) * XB_optimization(3) + C(4) * XB_optimization(4) + C(5) * XB_optimization(5) + C(6) * XB_optimization(6) '显示最优值Z

Form1.Text1(7) = iterative_time - 1 '显示迭代次数

End Sub

Private Sub Command2_Click()

End '结束程序

End Sub

Private Sub Command3_Click()

Form1.Show '调用优化结果显示窗口

End Sub

Private Sub Form_Load()

Dim i, j As Integer

For i = 1 To 3 '付值给系数矩阵A

For j = 1 To 6

A(i, j) = Quotiety_A(j + 6 * (i - 1)).Text '付值给系数矩阵A Next j

Next i

For i = 1 To 6 '将矩阵A列分块(a1,a2,a3,a4,a5,a6)

For j = 1 To 3

Select Case i

Case 1

a1(j) = A(j, i)

Case 2

a2(j) = A(j, i)

Case 3

a3(j) = A(j, i)

Case 4

a4(j) = A(j, i)

Case 5

a5(j) = A(j, i)

Case 6

a6(j) = A(j, i)

End Select

Next j

Next i

For i = 1 To 3 '付值给基矩阵B的逆矩阵B_

For j = 1 To 3

Select Case i

Case 1

B_(j, i) = a4(j)

Case 2

B_(j, i) = a5(j)

Case 3

B_(j, i) = a6(j)

End Select

Next j

Next i

For i = 1 To 6 '付值给检验数

Select Case i

Case 1

C(1) = C_quotiety(0).Text

Case 2

C(2) = C_quotiety(1).Text

Case 3

C(3) = C_quotiety(2).Text

Case 4

C(4) = C_quotiety(3).Text

Case 5

C(5) = C_quotiety(4).Text

Case 6

C(6) = C_quotiety(5).Text

End Select

Next i

b(1) = b_quotiety(0).Text '付值给右端向量b

b(2) = b_quotiety(1).Text

b(3) = b_quotiety(2).Text

For i = 1 To 3 '计算初始基本可行解

XB(i) = B_(i, 1) * b(1) + B_(i, 2) * b(2) + B_(i, 3) * b(3) Y(i, 0) = XB(i)

Next i

CB(1) = C(4) '付值给初始基本可行解对应的检验数

CB(2) = C(5)

CB(3) = C(6)

End Sub

Private Sub Command1_Click()'窗口2

Unload Form1 '关闭优化结果显示窗口

End Sub

使用C语言实现单纯形法求解线性规划问题

上机实验报告 一、实验目的和要求 1、目的: ●掌握单纯形算法的计算步骤,并能熟练使用该方法求解线性规划问题。 ●了解算法→程序实现的过程和方法。 2、要求: ●使用熟悉的编程语言编制单纯形算法的程序。 ●独立编程,完成实验,撰写实验报告并总结。 二、实验内容和结果 1、单纯形算法的步骤及程序流程图。 (1)、算法步骤

(2)、程序图 各段代码功能描述: (1)、定义程序中使用的变量 #include #include #define m 3 /*定义约束条件方程组的个数*/ #define n 5 /*定义未知量的个数*/ float M=1000000.0; float A[m][n]; /*用于记录方程组的数目和系数;*/ float C[n]; /*用于存储目标函数中各个变量的系数*/

float b[m]; /*用于存储常约束条件中的常数*/ float CB[m]; /*用于存储基变量的系数*/ float seta[m]; /*存放出基与入基的变化情况*/ float delta[n]; /*存储检验数矩阵*/ float x[n]; /*存储决策变量*/ int num[m]; /*用于存放出基与进基变量的情况*/ float ZB=0; /*记录目标函数值*/ (2)、定义程序中使用的函数 void input(); void print(); int danchunxing1(); int danchunxing2(int a); void danchunxing3(int a,int b); (3)、确定入基变量,对于所有校验数均小于等于0,则当前解为最优解。 int danchunxing1() { int i,k=0; int flag=0; float max=0; for(i=0;i

使用Excel规划求解解 线性规划问题

使用Excel规划求解解线性规划问题 引言 最近,开始学习运筹学,期望通过学习后能够解决许多困扰自已的难题。 刚开始时,选了很多教材,最后以Hamdy A.Taha著的《Operations Research:An Introduction》开始学习。(该书已由人民邮电出版社出版,书名《运筹学导论-初级篇(第8版)》,不知为什么,下载链接中只有该书配套的部分习题解答,而书中所说的光盘文件找不到下载的地方,因为中译本没有配光盘,因此也就错过了许多示例文件。不知道哪位有配套光盘文件,可否共享???) 线性规划求解的基本知识 线性规划模型由3个基本部分组成: ?决策变量(variable) ?目标函数(objective) ?约束条件(constraint) 示例:营养配方问题 (问题)某农场每天至少使用800磅特殊饲料。这种特殊饲料由玉米和大豆粉配制而成,含有以下成份: 特殊饲料的营养要求是至少30%的蛋白质和至多5%的纤维。该农场希望确定每天最小成本的饲料配制。 (解答过程) 因为饲料由玉米和大豆粉配制而成,所以模型的决策变量定义为: x1=每天混合饲料中玉米的重量(磅) x2=每天混合饲料中大豆粉的重量(磅) 目标函数是使配制这种饲料的每天总成本最小,因此表示为: min z=0.3×x1+0.9×x2 模型的约束条件是饲料的日需求量和对营养成份的需求量,具体表示为: x1+x2≥800 0.09×1+0.6×2≥0.3(x1+x2) 0.02×1+0.06×2≤0.05(x1+x2) 将上述不等式化简后,完整的模型为:

min z=0.3×1+0.9×2 s.t.x1+x2≥800 0.21×1-0.3×2≤0 0.03×1-0.01×2≥0 x1,x2≥0 可以使用图解法确定最优解。下面,我们介绍使用Excel的规划求解加载项求解该模型。使用Excel规划求解解线性规划问题 步骤1安装Excel规划求解加载项 单击“Office按钮——Excel选项——加载项——(Excel加载项)转到”,出现“加载宏”对话框,如下图所示。选择“规划求解加载项”,单击“确定”。 此时,在“数据”选项卡中出现带有“规划求解”按钮的“分析”组,如下图所示。 步骤2设计电子表格 使用Excel求解线性规划问题时,电子表格是输入和输出的载体,因此设计良好的电子表格,更加易于阅读。本例的电子表格设计如下图所示:

图解法和单纯形法求解线性规划问题

图解法和单纯形法求解以下线性规划问题 1.1 图解法解线性规划问题 只含两个变量的线性规划问题,可以通过在平面上作图的方法求解,步骤如下: (1)以变量x1为横坐标轴,x2为纵坐标轴,适当选取单位坐标长度建立平面坐标直 角坐标系。由变量的非负性约束性可知,满足该约束条件的解均在第一象限内。 (2)图示约束条件,找出可行域(所有约束条件共同构成的图形)。 (3)画出目标函数等值线,并确定函数增大(或减小)的方向。 (4)可行域中使目标函数达到最优的点即为最优解。 然而,由于图解法不适用于求解大规模的线性规划问题,其实用意义不大。 1.2 单纯形法解线性规划问题 它的理论根据是:线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。顶点所对应的可行解称为基本可行解。 单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。 单纯形法的一般解题步骤可归纳如下:①把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。②若基本可行解不存在,即约束条件有矛盾,则问题无解。③若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解。④按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。⑤若迭代过程中发现问题的目标函数值无界,则终止迭代。 1.3 线性规划问题的标准化 使用单纯形法求解线性规划时,首先要化问题为标准形式

最新单纯形法解线性规划问题

一、用单纯形第Ⅰ阶段和第Ⅱ阶段解下列问题 s.t. 解:1)、将该线性问题转为标准线性问题 一、第一阶段求解初始可行点 2)、引入人工变量修改约束集合 取人工变量为状态变量,问题变量和松弛变量为决策变量,得到如下单纯形表,并是所有决策变量的值为零,得到人工变量的非负值。 2 -2 -1 1 2 1 1 -1 -1 1 2 -1 -2 1 2 5 -2 -4 1 -1 1 5 0 0 0 0 0 3)、对上述单纯形表进行计算,是目标函数进一步减小,选为要改变的决策变量,计算改变的限值。 2 -2 -1 1 2 1 1 1 -1 -1 1 0 2 -1 -2 1 2 0 5 -2 -4 1 -1 1 5 1 0 0 0 0 0 0 1 0 0 0 4)、由于,为人工变量,当其到达零值时,将其从问题中拿掉保证其值不会再变。同时将以改变的决策变量转换为状态变量。增加的值使目标函数值更小。 1 -3 1 1 1 0 1 1 -1 1

1 -3 1 1 1 0 0 0 0 0 0 0 0 5)使所有人工变量为零的问题变量的值记为所求目标函数的初始可行点,本例为, 二、第二阶段用单纯形法求解最优解 -2 2 1 0 1 1 -1 0 -2 1 2 1 5 1 3 要使目标函数继续减小,需要减小或的值,由以上计算,已经有两个松弛变量为零,因此或不能再减小了,故该初始可行点即为最优解。

2、求解问题 s.t. 如果目标函数变成,确定使原解仍保持最优的c值范围,并把目标函数最 大值变达成c的函数。 解:先采用单纯形法求解最优解,再对保持最优解时C值的范围进行讨论。 1)将问题华为标准线性问题 s.t. 2)用单纯形表表示约束条件,同时在不引入人工变量的前提下,取松弛变量得初始值为零值,求解初始解和最优解 10 -1 -1 -1 10 -20 1 5 1 -20 -2 -1 -1 0 0 0 0 要使目标函数继续减小,可以增大,增大的限值是10。 10 -1 -1 -1 10 0 -20 1 5 1 -20 -10 -2 -1 -1 0 -20 0 0 0 10 0 0 3)转轴。将为零的松弛变量和决策变量交换进行转轴 10 -1 -1 -1 10 -10 4 0 -1 -10 0 -20 1 1 2 -20

单纯形法典型例题

科学出版社《运筹学》教材 第一章引言 第二章线性规划,姜林 第三章对偶规划,姜林 第四章运输问题,姜林 第五章整数规划,姜林 第六章非线性规划,姜林 第七章动态规划,姜林 第八章多目标规划,姜林 第九章图与网络分析,熊贵武 第十章排队论,熊贵武 第十一章库存论,王勇 第十二章完全信息博弈,王勇 第十三章不完全信息博弈,王勇 第十四章决策论与影响图 第十五章运筹学模型的计算机求解 成年人每天需要从食物中摄取的营养以及四种食品所含营养和价格见下表。问 如何选择食品才能在满足营养的前提下使购买食品的费用最小? 食品名称热量(kcal) 蛋白质(g) 钙(mg)价格(元)猪肉1000 50 400 14 鸡蛋800 60 200 6

大米900 20 300 3 白菜200 10 500 2 营养需求量 2000 55 800 解:设需猪肉、鸡蛋、大米和白菜各需 x1,x2,x3,x4斤。则热量的需求量为: 2000 20090080010004 3 2 1 x x x x 蛋白质 某工厂要做100套钢架,每套有长 3.5米、2.8米和2根2.4米的圆钢组成(如右图)已知原 料长12.3米,问应如何下料使需用的原材料最省。 解:假设从每根 12.3米的原材料上截取 3.5米、2.8米和2根2.4 米,则每根原材料需浪费 1.2米,做100套需浪费材料 120米,现 采用套裁的方法。 方案一二三四五六3.5 2.8 2.4 0 0 5 0 4 0 1 2 1 1 3 0 2 0 2 2 1 1 合计剩余 12 0.3 11.2 1.1 11.5 0.8 11.9 0.4 11.8 0.5 12.2 0.1 现在假设每种方案各下料x i (i=1、2、3、4、5、6),则可列出方程: minZ=0.3x 1+1.1x 2+0.8x 3+0.4x 4+0.5x 5+0.1x 6 约束条件: x 3+x 4+2x 5+2x 6=100 4x 2+2x 3+3x 4+x 6=100 5x 1+x 3+2x 5+x 6=200 ,,,800 50030020040055 102060503000 2009008001000. .23614min 4 3214 3 2 1 4 32 14 32 14321x x x x x x x x x x x x x x x x t s x x x x z

使用单纯形法解线性规划问题

使用单纯形法解线性规划问题 要求:目标函数为:123min 3z x x x =-- 约束条件为: 123123 1312321142321,,0 x x x x x x x x x x x -+≤??-++≥?? -+=??≥? 用单纯形法列表求解,写出计算过程。 解: 1) 将线性规划问题标准化如下: 目标函数为:123max max()3f z x x x =-=-++ s.t.: 123412356 1371234567211 42321,,,,,,0 x x x x x x x x x x x x x x x x x x x -++=??-++-+=??-++=??≥? 2) 找出初始基变量,为x 4、x 6、x 7,做出单纯形表如下: 表一:最初的单纯形表 变量 基变量 x 1 x 2 x 3 x 4 x 5 x 6 x 7 b i x 4 1 -2 1 1 0 0 0 11 x 6 -4 1 2 0 -1 1 0 3 x 7 -2 0 1 0 0 0 1 1 -f -3 1 1 3) 换入变量有两种取法,第一种取为x 2,相应的换出变量为x 6,进行第一次迭代。迭代后新的单纯形表为: 表二:第一种换入换出变量取法迭代后的单纯形表 变量 基变量 x 1 x 2 x 3 x 4 x 5 x 6 x 7 b i x 4 -7 5 1 -2 2 3

x2-4120-1103 x7-20100011 -f10-101-10-3 由于x1和x5对应的系数不是0就是负数,所以此时用单纯形法得不到最优解。 表一中也可以把换入变量取为x3,相应的换出变量为x7,进行一次迭代后的单纯形表为: 表三:第二种换入换出变量取法迭代后的单纯形表 变量 基变量x1x2x3x4x5x6x7 b i x43-20100-110 x60100-11-21 x3-20100011 -f-110000-1-1 4)表三中,取换入变量为x2,换出变量为x6,进行第二次迭代。之后的单纯形 表为: 表四:第二次迭代后的单纯形表 变量 基变量x1x2x3x4x5x6x7 b i x43001-22-512 x20100-11-21 x3-20100011 -f-10001-11-2 5)表四中,取换入变量为x7,换出变量为x3,进行第三次迭代。之后的单纯形 表为: 表五:第三次迭代后的单纯形表 变量 基变量x1x2x3x4x5x6x7 b i x4-7051-22017 x2-4120-1103 x7-20100011 -f10-101-10-3可以看出,此时x1,x5对应的系数全部非零即负,故迭代结束,没有最优解。 结论: 综上所述,本线性规划问题,使用单纯形法得不到最优解。

第1章线性规划及单纯形法

线性规划及单纯形法 一.选择 1. 运筹学应用分析、试验、(C )的方法,对经济管理系统中人、财、物等有限资源进行统筹安排,为决策者提供有依据的最优方案,以实现最有效的管理。 A 统筹 B 量化 C 优化 D 决策 2. 运筹学研究的基本手段是(A )。 A 建立数学模型 B 进行数学分析 C 进行决策分析 D 建立管理规范 3. 运筹学研究的基本特点是( C )。 A 进行系统局部独立分析 B 考虑系统局部优化 C 考虑系统的整体优化 D 进行系统的整体决策 4. 线性规划问题的数学模型包含三个组成要素:决策变量、目标函数、(B ) A 表达式 B 约束条件 C 方程变量 D 价值系数 5. 线性规划问题的基可行解X 对应线性规划问题可行域(凸集)的( C ) A 边 B 平面 C 顶点 D 内部 6. 目标函数取极小化(Z min )的线性规划问题可以转化为目标函数取极大化即(C )的线性规划问题求解 A Z min B )min(Z - C )max(Z - D Z max - 7. 标准形式的线性规划问题,最优解(C )是可行解 A 一定 B 一定不 C 不一定 D 无法确定 8. 在线性规划问题中,称满足所有约束条件方程和非负限制的解为( C )。 A 最优解 B 基可行解 C 可行解 D 基解 9. 生产和经营管理中经常提出任何合理安排,使人力、物力等各种资源得到充分利用,获得最大的效益,这就是所谓的(D ) A 管理问题 B 规划问题 C 决策问题 D 优化问题 10. 在线性规划问题中,图解法适合用于处理变量( B )个的线性规划问题 A 1 B 2 C 3 D 4 11. 求解线性规划问题时,解的情况有:唯一最优解、无穷多最优解、( C )、无可行解 A 无解B 无基解 C 无界解 D 无基可行解 12. 在用图解法求解的时,找不到满足约束条件的公共范围,这时问题有(D ),其原因是模型本身有错误,约束条件之间相互矛盾,应检查修正。 A 唯一最优解 B 无穷多最优解 C 无界解D 无可行解 13. 线性规划问题的基可行解()T n X X X ,,1 =为基可行解的充要条件是X 的正分量所对 应的系数列向量是(B ) A 线性相关 B 线性独立 C 非线性独立 D 无法判断 14. 线性规划问题进行最优性检验和解的判别时,如果当0≤j σ时,人工变量仍留在基本量中且不为零,(D ) A 唯一最优解 B 无穷多最优解 C 无界解 D 无可行解 15.如果集合C 中任意两个点21,X X 其连线上的所有点也都是集合C 中的点,称C 为(B )

《运筹学》习题线性规划部分练习题及答案

《运筹学》线性规划部分练习题 一、思考题 1.什么是线性规划模型,在模型中各系数的经济意义是什么? 2.线性规划问题的一般形式有何特征? 3.建立一个实际问题的数学模型一般要几步? 4.两个变量的线性规划问题的图解法的一般步骤是什么? 5.求解线性规划问题时可能出现几种结果,那种结果反映建模时有错误? 6.什么是线性规划的标准型,如何把一个非标准形式的线性规划问题转化成标准形式。 7.试述线性规划问题的可行解、基础解、基础可行解、最优解、最优基础解的概念及它们之间的相互关系。 8.试述单纯形法的计算步骤,如何在单纯形表上判别问题具有唯一最优解、有无穷多个最优解、无界解或无可行解。 9.在什么样的情况下采用人工变量法,人工变量法包括哪两种解法? 10.大M 法中,M 的作用是什么?对最小化问题,在目标函数中人工变量的系数取什么?最大化问题呢? 11.什么是单纯形法的两阶段法?两阶段法的第一段是为了解决什么问题?在怎样的情况下,继续第二阶段? 二、判断下列说法是否正确。 1.线性规划问题的最优解一定在可行域的顶点达到。 2.线性规划的可行解集是凸集。 3.如果一个线性规划问题有两个不同的最优解,则它有无穷多个最优解。 4.线性规划模型中增加一个约束条件,可行域的范围一般将缩小,减少一个约束条件,可行域的范围一般将扩大。 5.线性规划问题的每一个基本解对应可行域的一个顶点。 6.如果一个线性规划问题有可行解,那么它必有最优解。 7.用单纯形法求解标准形式(求最小值)的线性规划问题时,与 > j σ 对应的变量都 可以被选作换入变量。 8.单纯形法计算中,如不按最小非负比值原则选出换出变量,则在下一个解中至少有一个基变量的值是负的。 9.单纯形法计算中,选取最大正检验数k σ对应的变量k x作为换入变量,可使目标函数值得到最快的减少。 10.一旦一个人工变量在迭代中变为非基变量后,该变量及相应列的数字可以从单纯形表中删除,而不影响计算结果。 三、建立下面问题的数学模型 1.某公司计划在三年的计划期内,有四个建设项目可以投资:项目Ⅰ从第一年到 第三年年初都可以投资。预计每年年初投资,年末可收回本利120% ,每年又可以重新将所获本利纳入投资计划;项目Ⅱ需要在第一年初投资,经过两年可收回本利150% ,又可以重新将所获本利纳入投资计划,但用于该项目的最大投资额不得超过20万元;项目Ⅲ需要在第二年年初投资,经过两年可收回本利160% ,但用于该项目的最大投资额不得超过15万元;项目Ⅳ需要在第三年年初投资,年末可收回本利140% ,但用于该项目的最大投资额不得超过10万元。在这个计划期内,该公司第一年可供投资的资金有30万元。问怎样的投资方案,才能使该公司在这个计划期获得最大利润? 2.某饲养场饲养动物,设每头动物每天至少需要700克蛋白质、30克矿物质、100克维生素。现有五种饲料可供选用,各种饲料每公斤营养成分含量及单 价如下表2—1所示:

单纯形法求解线性规划的步骤

单纯形法求解线性规划的步骤 1>初始化 将给定的线性规划问题化成标准形式,并建立一个初始表格,它最右边的单元格都就是非负的(否则无解),接下来的m 列组成一个m*m的单元矩阵(目标行的单元格则不必满足这一条件),这m列确定了初始的基本可行解的基本变量,而表格中行用基本变量来表示 2>最优化测试 如果目标行的所有单元格都就是非负的(除了最右列中代表目标函数值的那个单元格),就可以停止了,该表格代表了一个最优解,它的基本变量的值在最右列中,而剩下的非基本变量都为0 3>确定输入变量 从目标行的前n个单元格中选择一个负的单元格(选择绝对值最大的那个)该单元格所在的列确定的输入变量及主元列 4>确定分离变量 对于主元列的每个正单元格,求出θ比率(如果主元格的单元格为负或为0,说明该问题就是无解的,算法终止),找出θ比率最小的列,改行确定了分离变量与主元行 5>建立下一张表格 将主元行的所有单元格除以主元得到新的主元行,包括主元行在内的每一行,要减去改行主元列单元格与新主元行的成绩(除主元行为1外,这一步将主元列的所有单元格变成0)、把主元列的变量名进行代换,得到新的单纯形表,返回第一步 为求简单 在本程序中,需要自己建立标准矩阵(比如加入松弛变量等工作需要用户自己完成),程序的输入有两种方式: 1:指定行与列,由用户自行输入每一个元素SimpleMatrix(introw=0,int col=0); 2:直接在主程序中初始化一个二维数组,然后利用构造函数SimpleMatrix(introw,int col,double **M) 来初始化与处理(本程序所用的实例用的就是这种方法) 程序中主要的函数以及说明 ~SimpleMatrix(); 销毁动态分配的数组、用于很难预先估计矩阵的行与列,所以在程序中才了动态的内存分配、需要重载析构函数bool Is_objectLine_All_Positive(); //判断目标行就是否全部为非负数,最后一列不作考虑 这个函数用来判断就是否已经存在最优解 bool Is_MainCol_All_Negative(int col);//判断主元列就是否全部为负数或零 这个函数用来判断线性规划就是否就是无解的 bool Is_column_all_Positive(int col); //判断col列中就是否全部为正(不包括目标行)

单纯形法求解线性规划的步骤

单纯形法求解线性规划的步骤

单纯形法求解线性规划的步骤 1>初始化 将给定的线性规划问题化成标准形式,并建立一个初始表格,它最右边的单元格都是非负的(否则无解),接下来的m列组成一个m*m的单元矩阵(目标行的单元格则不必满足这一条件),这m列确定了初始的基本可行解的基本变量,而表格中行用基本变量来表示 2>最优化测试 如果目标行的所有单元格都是非负的(除了最右列中代表目标函数值的那个单元格),就可以停止了,该表格代表了一个最优解,它的基本变量的值在最右列中,而剩下的非基本变量都为0 3>确定输入变量 从目标行的前n个单元格中选择一个负的单元格(选择绝对值最大的那个)该单元格所在的列确定的输入变量及主元列 4>确定分离变量 对于主元列的每个正单元格,求出θ比率(如果主元格的单元格为负或为0,说明该问题是无解的,算法终止),找出θ比率最小的列,改行确定了分离变量和主元行 5>建立下一张表格 将主元行的所有单元格除以主元得到新的主元行,包括主元行在内的每一行,要减去改行主元列单元格和新主元行的成绩(除主元行为1外,这一步将主元列的所有单元格变成0).把主元列的变量名进行代换,得到新的单纯形表,返回第一步 为求简单 在本程序中,需要自己建立标准矩阵(比如加入松弛变量等工作需要用户自己完成),程序的输入有两种方式: 1:指定行和列,由用户自行输入每一个元素SimpleMatrix(introw=0,int col=0); 2:直接在主程序中初始化一个二维数组,然后利用构造函数SimpleMatrix(introw,int col,double **M) 来初始化和处理(本程序所用的实例用的是这种方法) 程序中主要的函数以及说明 ~SimpleMatrix(); 销毁动态分配的数组.用于很难预先估计矩阵的行和列,所以在程序中才了动态的内存分配.需要重载析构函数 bool Is_objectLine_All_Positive(); //判断目标行是否全部为非负数,最后一列不作考虑 这个函数用来判断是否已经存在最优解 bool Is_MainCol_All_Negative(int col);//判断主元列是否全部为负数或零 这个函数用来判断线性规划是否是无解的 bool Is_column_all_Positive(int col); //判断col列中是否全部为正(不包括目标行)

线性规划单纯形法matlab解法

%单纯形法matlab程序-ssimplex % 求解标准型线性规划:max c*x; . A*x=b; x>=0 % 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标 % 输出变量sol是最优解, 其中松弛变量(或剩余变量)可能不为0 % 输出变量val是最优目标值,kk是迭代次数 % 例:max 2*x1+3*x2 % . x1+2*x2<=8 % 4*x1<=16 % 4*x2<=12 % x1,x2>=0 % 加入松驰变量,化为标准型,得到 % A=[1 2 1 0 0 8; % 4 0 0 1 0 16; % 0 4 0 0 1 12; % 2 3 0 0 0 0]; % N=[3 4 5]; % [sol,val,kk]=ssimplex(A,N) % 然后执行 [sol,val,kk]=ssimplex(A,N)就可以了。 function [sol,val,kk]=ssimplex(A,N) [mA,nA]=size(A); kk=0; % 迭代次数 flag=1;

while flag kk=kk+1; if A(mA,:)<=0 % 已找到最优解 flag=0; sol=zeros(1,nA-1); for i=1:mA-1 sol(N(i))=A(i,nA); end val=-A(mA,nA); else for i=1:nA-1 if A(mA,i)>0&A(1:mA-1,i)<=0 % 问题有无界解 disp('have infinite solution!'); flag=0; break; end end if flag % 还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i; % 进基变量的下标 end

使用单纯形法解线性规划问题

使用单纯形法解线性规划 问题 The Standardization Office was revised on the afternoon of December 13, 2020

使用单纯形法解线性规划问题 要求:目标函数为:123min 3z x x x =-- 约束条件为: 123123 1312321142321,,0 x x x x x x x x x x x -+≤??-++≥?? -+=??≥? 用单纯形法列表求解,写出计算过程。 解: 1)将线性规划问题标准化如下: 目标函数为:123max max()3f z x x x =-=-++ .: 1234123561371234567211 42321,,,,,,0x x x x x x x x x x x x x x x x x x x -++=??-++-+=??-++=??≥? 2)找出初始基变量,为x 4、x 6、x 7,做出单纯形表如下: 表一:最初的单纯形表 3) 换入变量有两种取法,第一种取为x 2,相应的换出变量为x 6,进行第一 次迭代。迭代后新的单纯形表为: 表二:第一种换入换出变量取法迭代后的单纯形表

由于x1和x5对应的系数不是0就是负数,所以此时用单纯形法得不到最优解。 表一中也可以把换入变量取为x3,相应的换出变量为x7,进行一次迭代后的单纯形表为: 表三:第二种换入换出变量取法迭代后的单纯形表 4)表三中,取换入变量为x2,换出变量为x6,进行第二次迭代。之后的单纯形表为: 表四:第二次迭代后的单纯形表 5)表四中,取换入变量为x7,换出变量为x3,进行第三次迭代。之后的单纯形表为: 表五:第三次迭代后的单纯形表

第一章线性规划及单纯形法习题

第一章 线性规划及单纯形法习题 1.用图解法求解下列线性规划问题,并指出问题具有唯一最优解、无穷最优解还是无可行解。 (1)??? ??≥≥+≥++=0,42266432min 2121212 1x x x x x x x x z (2) ??? ??≥≥+≥++=0,12432 223max 2 121212 1x x x x x x x x (3) ?? ? ??≤≤≤≤≤++=8 3105120 106max 21212 1x x x x x x z (4) ??? ??≥≤+-≥-+=0,2322 265max 1 2212121x x x x x x x x z 2.将下列线性规划问题化成标准形式。 (1)????? ? ?≥≥-++-≤+-+-=-+-+-+-=无约束 43214321432143214321,0,,2321422 245243min x x x x x x x x x x x x x x x x x x x x z (2) ????? ? ?≥≤≥-++-≤-+-=++-+-=无约束 32143213213213 21,0,023*******min x x x x x x x x x x x x x x x x z 3.对下列线性规划问题找出所有基本解,指出哪些是基可行解,并确定最优解。 (1) ??? ?? ? ?=≥=-=+-+=+++++=)6,,1(0231024893631223min 61432143213 21 j x x x x x x x x x x x x x x z j (2) ??? ??=≥=+++=+++++-=)4,,1(0102227 4322325min 432143214321 j x x x x x x x x x x x x x z j 4.分别用图解发法和单纯形法求解下述问题,并对照单纯形表中的各基本可行解对应图解法中可行域的哪一顶点。

单纯形法在线性规划中的应用

单纯形法在线性规划中的应用 摘要 求解线性规划问题,就是在各项资源条件的限制下,如何确定方案,使预期的目标达到最优。本文重点介绍了求解线性规划问题目前最常见的两种方法,图解法和单纯形法。图解法适合于只含两个变量的线性规划问题,文中只做了简单的描述。而单纯形法是求解线性规划问题的通用方法,适合于求解大规模的线性规划问题,本文作了重点描述,对单纯形法中的基本概念如基变量、非基变量、基向量、非基向量、可行基以及基本可行解等概念作了详细的陈述,在此基础上,介绍了线性规划问题的标准化、单纯形法的基本原理、确定初始可行解、最优性检验、解的判别、基本可行解的改进、换入变量的确定-最大增加原则、换出变量的确定-最小比值原则、表格单纯形法、大M法、两阶段法等。 关键词:线性规划图解法单纯形法基变量基向量可行基基本可行解

正文 引言 在生产管理和经济活动中,经常遇到这些问题,如生产计划问题,即如何合理利用有限的人、财、物等资源,以便得到最好的经济效果;材料利用问题,即如何下料使用材最少;配料问题,即在原料供应量的限制下如何获取最大利润;劳动力安排问题,即如何用最少的劳动力来满足工作的需要;运输问题,即如何制定调运方案,使总运费最小;投资问题,即从投资项目中选取方案,使投资回报最大等等。对于这些问题,都能建立相应的线性规划模型。事实上,线性规划就是利用数学为工具,来研究在一定条件下,如何实现目标最优化。 解线性规划问题目前最常见的方法有两种,图解法和单纯形法。单纯形法是求解线性规划问题的通用方法。 1 线性规划问题的求解方法 1.1 图解法解线性规划问题 只含两个变量的线性规划问题,可以通过在平面上作图的方法求解,步骤如下: (1)以变量x 1为横坐标轴,x 2 为纵坐标轴,适当选取单位坐标长度建立平面 坐标直角坐标系。由变量的非负性约束性可知,满足该约束条件的解均在第一象限内。 (2)图示约束条件,找出可行域(所有约束条件共同构成的图形)。 (3)画出目标函数等值线,并确定函数增大(或减小)的方向。 (4)可行域中使目标函数达到最优的点即为最优解。 然而,图解法虽然直观、简便,但当变量数多于三个以上时,其实用意义不大。

2-线性规划问题的图解法

第二节 线性规划问题的图解法 对一个线性规划问题,建立数学模型之后,面临着如何求解的问题。这里先介绍含有两个未知变量的线性规划问题的图解法,它简单直观。 图解法的步骤: 步骤1:确定可行域。 第1步: 绘制约束等式直线,确定由约束等式直线决定的两个区域中哪个区域对应着由约束条件所定义的正确的不等式。我们通过画出指向正确区域的箭头,来说明这个正确区域。 第2步:确定可行域。 步骤2:画出目标函数的等值线,标出目标值改进的方向。 步骤3:确定最优解。用图示的方式朝着不断改进的目标函数值的方向,移动目标函数的等值线,直到等值线正好接触到可行域的边界。等值线正好接触到可行城边界的接触点对应着线性优化模型的最优解。 例1-3,用图解法求解线性规划问题 12 12121212max 23221228..416412,0 z x x x x x x s t x x x x =++≤??+≤??≤??≤?≥?? 解: 图1-3 (1) 画出线性规划问题的可行域,它是为以O(0,0)、A(0,3)、B(2,3)、C(4,2)、 D(0,4)为顶点的凸5边形,如图1-3。 (2) 画出一条目标函数的等值线12236x x +=,图1-3中红颜色的虚 线。

(3) 目标函数的等值线往上移动时,目标函数值增大(图1-3中红颜 色的实线)。由于问题的解要满足全部约束条件,因此目标函数的 等值线要与可行域有交点。当目标函数的等值线移动到 122314x x +=时,它与可行域只有一个交点,再往上移动时,与 可行域不再有交点。这就是说最优解为:124,2x x ==,最优目标 函数值为14。 例1-3中求解得到问题的最优解是唯一的,但对一般线性规划问题,求解结果还可能出现以下几种情况: (1)唯一最优解(2)多重最优解。 (3)无界解。 (4)无可行解。 这里我们不再举例,请大家自己阅读教材。 当线性规划问题的求解结果出现(3)、(4)两种情况时,一般说明线性规划问题建模有错误。前者缺乏必要的约束条件,后者是有矛盾的约束条件,建模时应注意。

使用单纯形法解线性规划问题

使用单纯形法解线性规划问题 要求:目标函数为:123min 3z x x x =-- 约束条件为: 123123 1312321142321,,0 x x x x x x x x x x x -+≤??-++≥?? -+=??≥? 用单纯形法列表求解,写出计算过程。 解: 1) 将线性规划问题标准化如下: 目标函数为:123max max()3f z x x x =-=-++ s.t.: 123412356 1371234567211 42321,,,,,,0 x x x x x x x x x x x x x x x x x x x -++=??-++-+=??-++=??≥? 2) 找出初始基变量,为x 4、x 6、x 7,做出单纯形表如下: 表一:最初的单纯形表 3) 换入变量有两种取法,第一种取为x 2,相应的换出变量为x 6,进行第一次迭代。迭代后新的单纯形表为: 表二:第一种换入换出变量取法迭代后的单纯形表

由于x1和x5对应的系数不是0就是负数,所以此时用单纯形法得不到最优解。 表一中也可以把换入变量取为x3,相应的换出变量为x7,进行一次迭代后的单纯形表为: 表三:第二种换入换出变量取法迭代后的单纯形表 4)表三中,取换入变量为x2,换出变量为x6,进行第二次迭代。之后的单纯形表为: 表四:第二次迭代后的单纯形表 5)表四中,取换入变量为x7,换出变量为x3,进行第三次迭代。之后的单纯形表为: 表五:第三次迭代后的单纯形表 可以看出,此时x1,x5对应的系数全部非零即负,故迭代结束,没有最优解。 结论: 综上所述,本线性规划问题,使用单纯形法得不到最优解。

单纯形法例题

单纯形法例题 1、例1、目标函数 max z=2+3 约束条件: 解:首先要将约束条件化为标准形:由此可以看出我们需要加上三个松弛变量, .得到的标准形式为: max z=2+3+ 0+0+0 然后要将其初始的单纯形表画出来: 23000 b 08121004 01640010- 01200013 23000 由初始单纯形表可以看出,为换入变量,而为换出变量;然后根据:= (也就是如果与主元素同行,则用现在的值除以主元素即可得到即将要填入的值,否则,就用现在的值减去与主元素构成矩形的边角上的值的乘积再除以主元素之后的值。例如:上面的第一行所对应的b值为8-(12*2)/4=2,故填入值应该为2。而则是由我们根据非基变量的检验数的大小,挑选出最大的那个,作为换入变量,然后用b的值除以该换入变量所在的列的所有值,得到列的值。 23000 b 02010-1/22 016400104 3301001/4- 2000-3/4由于在检验数中仍然存在大于等于0的数,而且P1,P5的坐标中有正分量存在,所以需要继续进行迭代运算。通过观察可以看出主元素为1,换入变量为,换出变量为,故得到的单纯形表如下:

23000 b 221010-1/2- 0800-414 3301001/412 00-201/4由于检验数中存在正数,且P5和P3中有正分量存在,所以需要继续迭代(换入变 23000 b 241001/40 0400-21/21 32011/2-1/80 00-3/2-1/80 (4,2,0,0,4),故目标函数值z=2*4+2*3=14 2、合理利用线材问题,现在要做100套钢架,每套用长为,,和的钢各一根, 已知原料长,问应如何下料,使用的原材料最省; 解:首先我们必须要清楚该问题的需要设立的变量是什么。我们分析一下问题,做100套钢架,需要长的钢100根,的钢100根,的钢100根。而一份原料长度是, 长度/m 下料根数 截取方案 12345 112 212 3132所用长度 剩余长度0 方案,使得剩余的总长度最少。由此,我们可以将目标函数和约束条件表述出来: 目标函数:min z=+++ 约束条件 首先可以写出线性方程组的矩阵形式:发现不存在单位矩阵,所以要采用人造基的方式,也就是要添加人工变量:,那么线性方程组可以

用单纯形法求解线性规划问题

目录 一.摘要 (2) 二.实验目的 (2) 三.实验内容 (2) 四.建立数学模型 (3) 五.实验原理 (5) 六.MALTAB程序代码及注释 (7) 七.结果运行测试 (13) 八.心得与感悟 (15)

一.摘要: 线性规划是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法.研究线性约束条件下线性目标函数的极值问题的数学理论和方法,英文缩写LP。 自1946年G.B.Dantizig提出单纯形法以来,它一直是求解线性规划问题的最有效的数学方法之一。单纯形法的理论根据是:线性规划问题的可行域是 n 维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。顶点所对应的可行解称为基本可行解。通过引入普通单纯形法,依次迭代并判断,逐步逼近,最后得到最优解。若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。 关键字:线性规划,单纯形法,最优值,最优解 二.实验目的: 1.加强学生分析问题能力,锻炼数学建模能力。 2.了解并掌握MATLAB软件中的线性规划问题的编程、求解和分析。 3.利用所学的MALTAB语言,完成对单纯形法问题的编程设计。 三.实验内容: 某商场决定,营业员每周连续工作5天后连续休息2天,轮流休息,据统计,商场每天需要营业员如下:星期一:300,二:300;三:350,四:400,五:480,六:600;日:500; (1)商场人力资源部应如何安排每天上班的人数才能使商场总的营业员最少 (2)若商场可以雇佣临时工,上班时间同正式工,若正式工每天工资80,临时工每天100,问商场是否应雇佣临时工及雇佣多少名?

线性规划单纯形法matlab解法

线性规划单纯形法matlab解法 %单纯形法matlab程序-ssimplex % 求解标准型线性规划:max c*x; s.t. A*x=b; x>=0 % 本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b % N是初始的基变量的下标 % 输出变量sol是最优解, 其中松弛变量(或剩余变量)可能不为0 % 输出变量val是最优目标值,kk是迭代次数 % 例:max 2*x1+3*x2 % s.t. x1+2*x2<=8 % 4*x1<=16 % 4*x2<=12 % x1,x2>=0 % 加入松驰变量,化为标准型,得到 % A=[1 2 1 0 0 8; % 4 0 0 1 0 16; % 0 4 0 0 1 12; % 2 3 0 0 0 0]; % N=[3 4 5]; % [sol,val,kk]=ssimplex(A,N) % 然后执行 [sol,val,kk]=ssimplex(A,N)就可以了。 function [sol,val,kk]=ssimplex(A,N) [mA,nA]=size(A); kk=0; % 迭代次数

flag=1; while flag kk=kk+1; if A(mA,:)<=0 % 已找到最优解 flag=0; sol=zeros(1,nA-1); for i=1:mA-1 sol(N(i))=A(i,nA); end val=-A(mA,nA); else for i=1:nA-1 if A(mA,i)>0&A(1:mA-1,i)<=0 % 问题有无界解 disp('have infinite solution!'); flag=0; break; end end if flag % 还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i; % 进基变量的下标

相关文档
相关文档 最新文档