线性规划VB求解2.doc_第1页
线性规划VB求解2.doc_第2页
线性规划VB求解2.doc_第3页
线性规划VB求解2.doc_第4页
线性规划VB求解2.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Rem 定义动态数组Dim a() As Single, c() As Single, b() As Single, cb() As SingleDim aa() As Single, cba() As Single, xcb() As Integer, xb() As IntegerDim m As Integer, n As Integer, l As Integer, k As Integer, cc As Integer, cm As Integer, ka As IntegerDim qq As Single, tt As Single, z As SinglePrivate Sub Command1_Click()Shown = Val(InputBox(请输入线性规划典范型方程变量的个数 N=?, 输入数据, 0)m = Val(InputBox(请输入线性规划典范型方程约束条件的个数 M=?, 输入数据, 0)Rem 给数组分配空间ReDim a(0 To m + 1, 0 To n + 2)ReDim aa(1 To m + 1, 1 To n + 2)ReDim c(n)ReDim b(m)ReDim cb(m)ReDim cba(n)ReDim xcb(n)ReDim xb(m)Rem 对线性规划约束方程增广矩阵A()进行归零计算For i = 0 To m + 1 For j = 0 To n + 2 a(i, j) = 0 Next jNext iRem 输入线性规划约束方程系数矩阵A()For i = 1 To m For j = 1 To n a(i, j) = Val(InputBox(请输入典范型方程约束条件矩阵的系数 a( & Str(i) & , & Str(j) & ):, 输入数据, 0) Next jNext iRem 输入线性规划约束方程右端常数B()For i = 1 To m b(i) = Val(InputBox(请输入典范型方程约束条件右端的常数 b( & Str(i) & ):, 输入数据, 0)Next iRem 把右端常数写入增广矩阵A()中For i = 1 To m a(i, n + 1) = b(i)Next iRem 输入线性规划目标函数的系数C()For i = 1 To n c(i) = Val(InputBox(请输入典范型方程目标函数的系数 c( & Str(i) & ):, 输入数据, 0)Next iRem 把目标函数的系数写入增广矩阵A()中For i = 1 To n a(0, i) = c(i)Next iRem 输入线性规划单纯形初始表中基变量在目标函数中的系数CB()For i = 1 To m cb(i) = Val(InputBox(请输入线性规划单纯形初始表中基变量在目标函数中的系数CB( & Str(i) & ):, 输入数据, 0)Next iRem 把基变量目标函数的系数写入增广矩阵A()中For i = 1 To m a(i, 0) = cb(i)Next iRem 记录基变量下标值For i = 1 To m xb(i) = Val(InputBox(请输入典范型方程第 & Str(i) & 行,基变量的下标:, 输入数据, 0)Next iRem 检验数的累积数归零并计算检验数For i = 1 To n cba(i) = 0Next iFor i = 1 To n For j = 1 To m cba(i) = cba(i) + a(j, 0) * a(j, i) Next j a(m + 1, i) = a(0, i) - cba(i)Next iRem 计算目标函数值z = 0For i = 1 To m z = z + a(i, 0) * a(i, n + 1)Next ia(m + 1, n + 1) = zRem 打印增广矩阵A()For i = 0 To m + 1 For j = 0 To n + 2 Print a(i, j); Next j PrintNext iPrintRem 判断所有检验数是否都小于等于零cc = 0For i = 1 To n If a(m + 1, i) = 0 Then cc = cc + 1 End IfNext iRem 统计检验数为零的个数cm = 0For i = 1 To n If a(m + 1, i) = 0 Then cm = cm + 1 End IfNext iPrint cc=; cc, cm=; cmRem 判断此单纯形表是否为最优单纯形表Do While cc qq Then qq = a(m + 1, i) l = i End If Next i Print Print l=; l, Rem 统计进基列上A(i,j)小于等于零的个数 ka = 0 For i = 1 To m If a(i, l) 0 Then a(i, n + 2) = a(i, n + 1) / a(i, l) End If Next i tt = 10000 k = 0 For i = 1 To m If a(i, l) 0 And a(i, n + 2) tt Then tt = a(i, n + 2) k = i End If Next i Print k=; k Print Rem 进行初等行变换时,对临时数组归零计算 For i = 1 To m + 1 For j = 1 To n + 2 aa(i, j) = 0 Next j Next i Rem 确定枢轴元素,进行初等行变换 oo = a(k, l) For i = 1 To n + 1 aa(k, i) = a(k, i) / oo Next i For i = 1 To m If i k Then For j = 1 To n + 1 aa(i, j) = a(i, j) + a(k, j) * (-a(i, l) Next j End If Next i Rem 把临时数组AA()的数据写到增广矩阵A()中去 For i = 1 To m + 1 For j = 1 To n + 2 a(i, j) = aa(i, j) Next j Next i a(k, 0) = a(0, l) xb(k) = l Rem 检验数的累积数归零并计算检验数 For i = 1 To n cba(i) = 0 Next i For i = 1 To n For j = 1 To m cba(i) = cba(i) + a(j, 0) * a(j, i) Next j a(m + 1, i) = a(0, i) - cba(i) Next i Rem 计算目标函数值 z = 0 For i = 1 To m z = z + a(i, 0) * a(i, n + 1) Next i a(m + 1, n + 1) = z Rem 判断所有检验数是否都小于等于零 cc = 0 For i = 1 To n If a(m + 1, i) m Then Print 本线性规划有多重最优解! Print 线性规划的最优值为: End IfEnd If Rem 打印线性规划的解和目标函数值For i = 1 To m Print X( & Str(xb(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论