线性规划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 ...
随机推荐
- css3 svg 物体跟随路径动画教程
css3 svg 物体跟随路径动画教程https://www.jianshu.com/p/992488f3f3fc
- C# IV: 数据库基础操作2
需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...
- kafka线上滚动升级方案记录
kafka升级方案 为什么进行kafka升级 一.修改unclean.leader.election.enabled默认值Kafka社区终于下定决心要把这个参数的默认值改成false,即不再允许出现u ...
- Python数据挖掘入门与实战PDF电子版加源码
Python数据分析挖掘实战讲解和分析PDF加源码 链接: https://pan.baidu.com/s/1SkZR2lGFnwZiQNav-qrC4w 提取码: n3ud 好的资源就要共享,我会一 ...
- pat 1124 Raffle for Weibo Followers(20 分)
1124 Raffle for Weibo Followers(20 分) John got a full mark on PAT. He was so happy that he decided t ...
- Elasticsearch系列---简单入门实战
概要 本篇主要介绍一下Elasticsearch Document的数据格式,在Java应用程序.关系型数据库建模的对比,介绍在Kibana平台编写Restful API完成基本的集群状态查询,Doc ...
- 两步搞定Activity的向右滑动返回的功能
向右滑动返回,对于屏幕过大的手机来说,在单手操作时,是一个不错的用户体验,用户不必再费力的或者用另一个手去点击屏幕左上角的返回按钮或者,手机右下角的返回按钮,轻轻向右滑动屏幕即可返回上一页,这个功能如 ...
- wordpress小程序安装教程
推荐服务器特价优惠注册即可购买,1G双核一年只要88,真的是白菜价格,点击下面图片即可进入购买地址. 开源小程序发布一段时间了,很多人最近咨询了关于小程序的教程,实在太忙了,抽空写个基本的安装教程. ...
- Selenium+Java(三)Selenium元素定位
前言 使用Selenium做元素定位的时候,需要用到HTML的知识,所以最好是能懂得HTML的基本知识. 一.页面元素的查看(以百度为例) 打开IE浏览器,点击F12进入开发者模式,点击图中红圈圈中的 ...
- SpringMVC配置了拦截器(interceptors)却显示不出css、js样式的解决办法
首先因为在web.xml里面配置了 <filter-mapping> <filter-name>characterEncodingFilter</filter-name& ...