线性规划VB求解

Rem 定义动态数组
Dim a() As Single, c() As Single, b() As Single, cb() As Single
Dim aa() As Single, cba() As Single, xcb() As Integer, xb() As Integer
Dim m As Integer, n As Integer, l As Integer, k As Integer, cc As Integer, cm As Integer, ka As Integer
Dim qq As Single, tt As Single, z As Single Private Sub Command1_Click() Show
n = Val(InputBox("请输入线性规划典范型方程变量的个数 N=?", "输入数据", ))
m = Val(InputBox("请输入线性规划典范型方程约束条件的个数 M=?", "输入数据", )) Rem 给数组分配空间
ReDim a( To m + , To n + )
ReDim aa( To m + , To n + )
ReDim c(n)
ReDim b(m)
ReDim cb(m)
ReDim cba(n)
ReDim xcb(n)
ReDim xb(m) Rem 对线性规划约束方程增广矩阵A()进行归零计算
For i = To m +
For j = To n +
a(i, j) =
Next j
Next i Rem 输入线性规划约束方程系数矩阵A()
For i = To m
For j = To n
a(i, j) = Val(InputBox("请输入典范型方程约束条件矩阵的系数 a(" & Str(i) & "," & Str(j) & "):", "输入数据", ))
Next j
Next i Rem 输入线性规划约束方程右端常数B()
For i = To m
b(i) = Val(InputBox("请输入典范型方程约束条件右端的常数 b(" & Str(i) & "):", "输入数据", ))
Next i Rem 把右端常数写入增广矩阵A()中
For i = To m
a(i, n + ) = b(i)
Next i Rem 输入线性规划目标函数的系数C()
For i = To n
c(i) = Val(InputBox("请输入典范型方程目标函数的系数 c(" & Str(i) & "):", "输入数据", ))
Next i Rem 把目标函数的系数写入增广矩阵A()中
For i = To n
a(, i) = c(i)
Next i Rem 输入线性规划单纯形初始表中基变量在目标函数中的系数CB()
For i = To m
cb(i) = Val(InputBox("请输入线性规划单纯形初始表中基变量在目标函数中的系数CB(" & Str(i) & "):", "输入数据", ))
Next i Rem 把基变量目标函数的系数写入增广矩阵A()中
For i = To m
a(i, ) = cb(i)
Next i Rem 记录基变量下标值
For i = To m
xb(i) = Val(InputBox("请输入典范型方程第" & Str(i) & "行,基变量的下标:", "输入数据", ))
Next i Rem 检验数的累积数归零并计算检验数
For i = To n
cba(i) =
Next i
For i = To n
For j = To m
cba(i) = cba(i) + a(j, ) * a(j, i)
Next j
a(m + , i) = a(, i) - cba(i)
Next i Rem 计算目标函数值
z =
For i = To m
z = z + a(i, ) * a(i, n + )
Next i
a(m + , n + ) = z Rem 打印增广矩阵A()
For i = To m +
For j = To n +
Print a(i, j);
Next j
Print
Next i
Print Rem 判断所有检验数是否都小于等于零
cc =
For i = To n
If a(m + , i) <= Then
cc = cc +
End If
Next i Rem 统计检验数为零的个数
cm =
For i = To n
If a(m + , i) = Then
cm = cm +
End If
Next i Print "cc="; cc, "cm="; cm Rem 判断此单纯形表是否为最优单纯形表
Do While cc < n Rem 统计检验数最大值并确定进基列
qq = 0.00001
l =
For i = To n
If a(m + , i) > qq Then
qq = a(m + , i)
l = i
End If
Next i
Print
Print "l="; l, Rem 统计进基列上A(i,j)小于等于零的个数
ka =
For i = To m
If a(i, l) <= Then
ka = ka +
End If
Next i Rem 若各进基列上A(i,j)全都小于等于零,则本线性规划有无界解
If ka = m Then
Print "本线性规划有无界解!"
Print
Exit Do
End If Rem 计算比值θ并按最小比值准则确定出基行
For i = To m
If a(i, l) > Then
a(i, n + ) = a(i, n + ) / a(i, l)
End If
Next i tt =
k =
For i = To m
If a(i, l) > And a(i, n + ) < tt Then
tt = a(i, n + )
k = i
End If
Next i Print "k="; k
Print Rem 进行初等行变换时,对临时数组归零计算
For i = To m +
For j = To n +
aa(i, j) =
Next j
Next i Rem 确定枢轴元素,进行初等行变换
oo = a(k, l)
For i = To n +
aa(k, i) = a(k, i) / oo
Next i For i = To m
If i <> k Then
For j = To n +
aa(i, j) = a(i, j) + a(k, j) * (-a(i, l)) Next j
End If Next i Rem 把临时数组AA()的数据写到增广矩阵A()中去
For i = To m +
For j = To n +
a(i, j) = aa(i, j)
Next j
Next i a(k, ) = a(, l)
xb(k) = l Rem 检验数的累积数归零并计算检验数
For i = To n
cba(i) =
Next i
For i = To n
For j = To m
cba(i) = cba(i) + a(j, ) * a(j, i)
Next j
a(m + , i) = a(, i) - cba(i)
Next i Rem 计算目标函数值
z =
For i = To m
z = z + a(i, ) * a(i, n + )
Next i
a(m + , n + ) = z Rem 判断所有检验数是否都小于等于零
cc =
For i = To n
If a(m + , i) <= Then
cc = cc +
End If
Next i Rem 统计检验数为零的个数
cm =
For i = To n
If a(m + , i) = Then
cm = cm +
End If
Next i Rem 打印增广矩阵A()
For i = To m +
For j = To n + Print a(i, j); Next j
Print
Next i
Print Loop Rem 判断此单纯形表是否为最优单纯形表
If cc = n Then Rem 判断本线性规划有唯一最优解或者有多重最优解
If cm = m Then
Print "本线性规划有唯一最优解!"
Print "线性规划的最优解为:"
ElseIf cm > m Then
Print "本线性规划有多重最优解!"
Print "线性规划的最优值为:"
End If
End If Rem 打印线性规划的解和目标函数值
For i = To m Print "X(" & Str(xb(i)) & ")="; a(i, n + ), Next i
Print "其它变量为零。"
Print "Z="; a(m + , n + )
Print Rem 打印增广矩阵A()
For i = To m +
For j = To n + Print a(i, j); Next j
Print
Next i End Sub

线性规划VB求解的更多相关文章

  1. BZOJ3118 : Orz the MST

    对于树边显然只需要减少权值,对于非树边显然只需要增加权值 设i不为树边,j为树边 X[i]:i增加量 X[j]:j减少量 C[i]:修改1单位i的代价 对于每条非树边i(u,v),在树上u到v路径上的 ...

  2. 数值优化(Numerical Optimization)学习系列-文件夹

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...

  3. Image Processing and Analysis_15_Image Registration:a survey of image registration techniques——1992

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  4. 数值优化(Numerical Optimization)学习系列-目录

    数值优化(Numerical Optimization)学习系列-目录 置顶 2015年12月27日 19:07:11 下一步 阅读数 12291更多 分类专栏: 数值优化   版权声明:本文为博主原 ...

  5. [转] 数值优化(Numerical Optimization)学习系列-目录

    from:https://blog.csdn.net/fangqingan_java/article/details/48951191 概述数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接 ...

  6. Python小白的数学建模课-05.0-1规划

    0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...

  7. Python小白的数学建模课-06 固定费用问题

    Python 实例介绍固定费用问题的建模与求解. 学习 PuLP工具包中处理复杂问题的快捷使用方式. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人. 前文讲到几种典型 ...

  8. [转]利用excel进行线性规划求解

                           利用线性回归方法求解生产计划 方法一: 1.建立数学模型: 设变量:设生产拉盖式书桌x台,普通式书桌y台,可得最大利润 ‚确定目标函数及约束条件 目标函 ...

  9. 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)

    1.线性规划模型: 2.使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://doc ...

随机推荐

  1. 详解Spring Security的HttpBasic登录验证模式

    一.HttpBasic模式的应用场景 HttpBasic登录验证模式是Spring Security实现登录验证最简单的一种方式,也可以说是最简陋的一种方式.它的目的并不是保障登录验证的绝对安全,而是 ...

  2. 美团店铺数据抓取 token解析与生成

    美团.点评网的token都是用一套加密算法,实际上就是个gzip压缩算法.加密了2次,第一次是加密了个sign值,然后把sign值带进去参数中进行第二次加密,最后得出token 分析请求 打开上海美食 ...

  3. Kubernetes Horizontal Pod Autoscaling

    HPA介绍 Horizo​​ntal Pod Autoscaler基于观察到的CPU利用率(或借助自定义指标 支持,基于其他一些应用程序提供的指标)自动缩放复制控制器,部署或副本集中的Pod数量 .请 ...

  4. 语义分割学习之SegNet的C++编译

    Abstract 安装好Segnet并使用Python进行训练和测试之后,考虑项目的应用,需要在C++的工程环境下进行继续开发,所以这里的主要内容是用C++建立工程,使用相应的数据集和权重参数文件进行 ...

  5. 在react中配置less

    在创建项目之后执行 $ yarn eject 抽离配置文件 会多出config和script文件夹 接下来安装less yarn add less less-loader 或者 npm install ...

  6. shell配置文件

    个人配置主要集中在-/.profile文件中 打开新的交互式shell时,配置文件的执行顺序是/etc/profile  /etc/bashrc  ~/.profile   最后是~/.bashrc ...

  7. linux磁盘分区、格式化、挂载

    新建分区的操作步骤,如下图: 1)RAID卡: 机器有没有RAID卡可以在开机时看有没有出现配置RAID什么的提示(亲测),系统运行时有没有,不知道! 服务器大多有这个新加硬盘后不修改raid,开即f ...

  8. Grid表格的js触发事件

    没怎么接触过Grid插件: 解决的问题是:点击Grid表行里的内容触发js方法弹出模态框,用以显示选中内容的详细信息. 思路:给准备要触发的列加上一个css属性,通过这个css属性来获取元素并触发js ...

  9. inventory

    1.设置主机的默认inventory mode. 2. 设置自动Populate 数据

  10. Java入门系列之集合HashMap源码分析(十四)

    前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在 ...