线性规划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 ...
随机推荐
- CentOS7 reset脚本,用于初始化新的虚拟机
能用,有待完善 CentOS7测试 哈哈 #!/bin/bash #************************************************************** #Au ...
- 树莓派debian配置lamp[解决Apache不显示php网页]
Apache + MySql + Php. 1.安装Apache Apache可以用下面的命令来安装 sudo apt-get install apache2 Apache默认路径是/var/www/ ...
- 使用 Zephir 轻松构建 PHP 扩展
简介: 通过 PHP 扩展, 我们可以在 php 代码中使用一些特定的方法(大部分的 php 扩展都是用 C 写的). 比如,在 PHP 中需要与 SQLite3 交互,我们可以自己写方法与之进行连接 ...
- LyX Error convert to loadable format - error handling
This question used to spend my half a day, and this time again, half a day. Here I write it down in ...
- Idea集成SpringBoot实现两种热部署方式(亲测有效)
即将介绍的两种热部署方式: 1.SpringLoaded 2.DevTools 区别: SpringLoader:SpringLoader 在部署项目时使用的是热部署的方式. DevTools:Dev ...
- C#解析XML之流模型-XMLTextReader类
C#读取XML文档之XMLTextReader 类有一些构造程序来适应各种各样的情况,比如从一个已经存在的数据流或统一资源定位网址读取数据.最常见的是,你或许想从一个文件读取XML数据,那么也就有一个 ...
- python_08
一.作业 ''' 主页: 图标地址.下载次数.大小.详情页地址 详情页: 游戏名.好评率.评论数.小编点评.下载地址.简介.网友评论.1-5张截图链接地址. https://www.wandoujia ...
- HTML 空元素(转)
HTML 空元素 在 HTML 中,通常在一个空元素上使用一个闭标签是无效的.例如,<input type="text"> </input> 的闭标签是无效 ...
- Stream系列(七)distinct方法使用
EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToString; import l ...
- .NET高级特性-Emit(2.2)属性
关于Emit的博客已经进入第四篇,在读本篇博文之前,我希望读者能先仔细回顾博主之前所编写的关于Emit的博文,从该篇博文开始,我们就可以真正的使用Emit,并把知识转化为实战,我也会把之前的博文链接放 ...