线性规划VB求解
线性规划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
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 "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 "本线性规划有无界解!"
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
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
Next i End Sub
线性规划VB求解的更多相关文章
- BZOJ3118 : Orz the MST
对于树边显然只需要减少权值,对于非树边显然只需要增加权值 设i不为树边,j为树边 X[i]:i增加量 X[j]:j减少量 C[i]:修改1单位i的代价 对于每条非树边i(u,v),在树上u到v路径上的 ...
- 数值优化(Numerical Optimization)学习系列-文件夹
概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...
- Image Processing and Analysis_15_Image Registration:a survey of image registration techniques——1992
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 数值优化(Numerical Optimization)学习系列-目录
数值优化(Numerical Optimization)学习系列-目录 置顶 2015年12月27日 19:07:11 下一步 阅读数 12291更多 分类专栏: 数值优化 版权声明:本文为博主原 ...
- [转] 数值优化(Numerical Optimization)学习系列-目录
from:https://blog.csdn.net/fangqingan_java/article/details/48951191 概述数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接 ...
- Python小白的数学建模课-05.0-1规划
0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...
- Python小白的数学建模课-06 固定费用问题
Python 实例介绍固定费用问题的建模与求解. 学习 PuLP工具包中处理复杂问题的快捷使用方式. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人. 前文讲到几种典型 ...
- [转]利用excel进行线性规划求解
利用线性回归方法求解生产计划 方法一: 1.建立数学模型: 设变量:设生产拉盖式书桌x台,普通式书桌y台,可得最大利润 确定目标函数及约束条件 目标函 ...
- 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)
1.线性规划模型: 2.使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://doc ...
随机推荐
- C语言:互质
今天遇到一道奇怪的程序题,和平常的不同.同样都是互质,但是一般的题目都是判断两个数字是否互质,但这道题则是给定一个数字n,要求输出所有小于等于n的与n互质的数,题目已经在下面给出: 质数与互质概念不是 ...
- java笔试面试第二天
没想到第二次面试到了第二周,也是我在上海找工作的第二周,说实话,没有真本事找工作是真的难,虽然正在召开的十九大上,大大们纷纷表态国力正盛,经济稳步增长,就业压力逐渐缓解,但是社会终究是社会,要么靠实力 ...
- Jsp自学2
Jsp简单来说就是java代码与Html代码的组合,类,方法,属性跟网页展示夹杂在一起.Jsp就是Servlet,但比Servle简单,不需要配置web.xml(当然也可以配置).Jsp由模板数据与元 ...
- PHP 面试官问:你说说Redis的几个过期策略?
在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期.当设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的. 设置过期时间 expire ke ...
- 【最新发布】最新Python学习路线,值得收藏
随着AI的发展,Python的薪资也在逐年增加,但是很多初学者会盲目乱学,连正确的学习路线都不清楚,踩很多坑,为此经过我多年开发经验以及对目前行业发展形式总结出一套最新python学习路线,帮助大家正 ...
- spring源码1
1.beans核心类 1.DefaultListableBeanFactory xmlBeanFactory xmlBeanFactory继承自DefaultListableBeanFactory,D ...
- ESP8266 智能配网 断电重连
ESP8266 智能配网 断电重连 #include <ESP8266WiFi.h> bool autoConfig() { WiFi.begin(); for (int i = 0; i ...
- .NET Core 获取数据库上下文实例的方法和配置连接字符串
目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...
- Docker+Dubbo+Zookeeper实现RPC远程调用
Docker+Dubbo+Zookeeper 1.安装Docker 1.1卸载旧版本的Docker //如果Docker处于与运行状态 未运行可跳过 [root@MrADiao ~]# systemc ...
- 力扣(LeetCode)寻找数组的中心索引 个人题解
给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法. 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和. 如果数组不存在中心索引,那么我 ...