单纯性法解有约束的线性规划问题

2023-10-30

%{
程序功能:
1、单纯性法解有约束的线性规划问题
2、标准形式的约束问题:
     目标函数求最小值、
     约束化为等式、
     引入松弛变量、
     变量全为非负
3、目标函数Z行系数全为非正数,则停止计算,RHS列对应系数为目标值x
    化为标准形式之后,形参的意义:
4、A是目标函数和约束的系数矩阵,必须写成正数形式!
     RHS 约束对应的等式右端数据
    num是松弛变量的起始下标
    result是约束转换为标准形式后的最优解
    X是对应的解向量;
    times是迭代(转轴)次数
5、目标函数的系数按照正数写!
6、结果给出的是绝对值!
7、不考虑无解的情况!
Author:Chenglin Li
Data    :  2019.06.24 
Contact: lichenglin19950620@163.com

%}
% clear
% clc
function [result,X,times]=danChunXingFa(A,RHS)
    format rat
    close all
    clear
    clc
%     num=3;
%第一步:将约束问题化为标准形式
%构建单纯性表格
%     A=[5,4,0,0,0;    %目标函数系数
%           1,2 1,0,0;   %松弛变量x3对应的约束系数
%           2,-1,0,1,0;  %松弛变量x4对应的约束系数
%           5,3,0,0,1;];  %松弛变量x5对应的约束系数
%     RHS=[6;
%               4;
%               15]; %约束对应的等式右端数据
%   A=[5,4,0,0,0;    %目标函数系数
%           1,2 ,1,0,0;   %松弛变量x3对应的约束系数
%           2,-1,0,1,0;  %松弛变量x4对应的约束系数
%           5,3,0,0,1];  %松弛变量x5对应的约束系数
%     RHS=[6;
%               4;
%               15]; %约束对应的等式右端数据
          A=[3,4,5,0,0;
              -1,-2,-3,1,0;
              -2,-2,-1,0,1];
          RHS=[-5;-6];
%     A=[1,-2,-4,-2,-1, 0, 0;
%          1,2,-1,1,-1,-1 ,0 ;
%          4,3,4,-2, -4, 0,1;
%          -1,-1,2,1,1,0, 0];
%      RHS=[0; 3; 1];
          
    [d1,d2]=size(RHS);
    if(d1==1)
        RHS=RHS';
    end
    theta=[NaN;zeros(length(RHS),1)]  ;%RHS/枢纽列
    RHS=[0;RHS];
   
    A=[A,RHS,theta]  ;
    [hang,lie]=size(A);
    %此处判断num的大小,程序不完备!
     for i=1:lie
        if(A(1,i)==0 && A(1,i+1)==0)
            num=i;
            break;
        end
     end
    
    X=zeros(lie-2,1); %所求x的最优值
    %确定松弛变量从x3开始??
    
    index=num:1: lie-2;   % 转轴运算,基的下标!
    times=0;  %迭代次数
    while( judgeNegative(A(1,:)) && times<=10) ; %第一行目标函数有正数系数,则继续计算
            column=maxNumIndex(A(1,:)) ; %对应的为枢纽列
            A(2:end,end)=A(2:end,end-1)./A(2:end,column);  %确定theta列
            row=minNumIndex(A(2:end,end))+1  ;%对应的为枢纽行     
            xx=A(row,column) ; %找出枢纽转轴
            A(row,1:end-1)=A(row,1:end-1)/xx   ;%新枢纽行=原枢纽行/枢纽转轴
            for i=1:hang
                if(i~=row)
                    A(i,1:end-1)=A(i,1:end-1)-A(i,column)*A(row,1:end-1);  %其余行=原行-枢纽列*新枢纽行           
                end              
            end
%            disp('-----------本轮迭代结束---------')
            times=times+1;
           index(row-1)=column;
           Matrix=[A,RHS]
    end
    for i=1:(lie-2-num+1)
        X(index(i))=A(i+1,end-1);
    end
    result=abs(A(1,end-1))
    X
    times

end
%判断一个向量是否全为非正数, 若是,则返回0
function flag=judgeNegative(x)
        flag=0;
        n=length(x);
        for i=1:n
            if(x(i)>0)
                flag=1;  %向量中存在正数,则返回1
                break;
            end
        end
end


%返回一个向量最大值的下标
function index=maxNumIndex(x)
    n=length(x);
    m=x(1);
    index=1;
    for i=2:n
        if(x(i)>m)
            index=i;
            m=x(i);
        end
    end
end
%返回一个向量最小值的下标
function index=minNumIndex(x)
    

    n=length(x);
    for i=1:n
        if(x(i)<0)
            x(i)=inf; %刨除负数
        end
    end
    m=x(1);
    index=1;
    for i=2:n
        if(x(i)<m)
            index=i;
            m=x(i);
        end
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单纯性法解有约束的线性规划问题 的相关文章

  • 应聘者是以前上司,能力一般,职场老白兔,本不想给他通过,但他卑微哀求,怎么办?...

    什么是现世报 大概就是下面这个程序员分享的职场故事了 昨天做了一场特殊的面试 应聘者是以前的上司 面试前知道是他 但他不知道面试官是自己 今天早晨收到他发来的信息 很犹豫 因为他能力一般 典型职场老白兔 不太想用他 但又因为他的卑微而不忍
  • matlab_线性规划

    求解线性规划问题 min z f x s t Ax b Aeqx beq lb x ub 其中 f x b beq lb ub为向量 A Aeq为矩阵 linprog函数 x fval exitflag output lambda linp
  • matlab求解最优化问题(数学建模)

    matlab求解最优化问题 数学建模 1 线性规划 matlab中线性规划优化计算方法和实例 在matlab中用于线性规划优化计算的是linprog 函数 公式 x fval exitflag output lambda linprog c
  • MCM线性规划(二)

    Matlab code clc clear a 0 hold on 保持原图并接受此后绘制的新的曲线 while a lt 0 05 f 0 05 0 27 0 19 0 185 0 185 A 0 0 025 0 0 0 0 0 0 01
  • MATLAB线性规划相关函数用法

    一 线性规划的Matlab标准形式及软件求解 1 MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量 A Aeq 为适当维数的矩阵 b beq为适当维数的列向量 Aeq 对应约束条件中等式约束的系数矩阵 A为约不等式约束的系
  • 算法导论随笔(十六):线性规划与单纯形算法(下篇:算法细节和实现(附Python源码))

    在算法导论随笔 十五 线性规划与单纯形算法 上篇 基本概念 中 我介绍了解决线性规划问题的单纯性算法所用到的一些概念 在这篇文章中我们来看看算法的一些实现的细节 单纯形算法的Python实现已经上传到我的GitHub仓库https gith
  • 大M法的python编程求解和python包求解

    大M法的python编程求解和python包求解 一 大M算法的求解步骤讲解 二 python编程求解 三 利用python包scipy的优化包optimize 四 用excel求解 五 分析结果 一 大M算法的求解步骤讲解 单纯形法的步骤
  • 单纯性法解有约束的线性规划问题

    程序功能 1 单纯性法解有约束的线性规划问题 2 标准形式的约束问题 目标函数求最小值 约束化为等式 引入松弛变量 变量全为非负 3 目标函数Z行系数全为非正数 则停止计算 RHS列对应系数为目标值x 化为标准形式之后 形参的意义 4 A是
  • MAVEN setting.xml

    MAVEN setting xml
  • c#与matlab混合编程解决线性规划,非线性规划(二次规划)等问题

    网上已经有很多类似方法 上一篇是Lingo 本篇是matlab 两个软件在解决最优解方面各有优势 matlab软件中自带许多函数 1 非线性规划 x fval fmincon fun x0 A b Aeq beq lb ub nonlcon
  • 最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法)

    牛顿法将目标函数近似为二阶函数 沿着牛顿方向进行优化 包含了Hession矩阵与负梯度信息 阻尼牛顿法在更新参数之前进行了一维搜索确定步长 确保沿着下降的方向优化 拟牛顿法用常数矩阵近似替代Hession矩阵或Hession矩阵的逆矩阵 不
  • 数据包络分析--保证域方法(assurance region method)附python代码以及案例

    Data envelopment analysis Assurance region method 保证域方法 Data envelopment analysis Assurance region method model AR 有效 py
  • 加法乘法原理、排列组合、线性规划

    排列组合 1 加法原理与乘法原理 加法原理 分类思想 一个事件的发生 分为几类事件的发生 通俗的说是好几种情况的发生 乘法原理 分步思想 一个事件的发生 分为几个子事件分步发生 这里要注意 1 子事件 如何把事件划分为几个子事件呢 子事件是
  • 为什么我们要考虑线性规划的对偶问题?

    文章转自 https www zhihu com question 26658861 版权归原作者
  • MATLAB使用单纯形法解决线性规划问题,函数形式调用,举例演示

    线性规划隶属于范畴学 在现实的应用十分广泛 简单来说 就是自变量在线性约束的条件下 求线性函数的最小值或最大值 对于优化问题 其数学模型往往需要提取出关键的三要素 即 自变量相关的约束条件 自变量的取值范围 关于自变量的目标函数 对于线性规
  • MATLAB 多目标规划

    作者简介 人工智能专业本科在读 喜欢计算机与编程 写博客记录自己的学习历程 个人主页 小嗷犬的个人主页 个人网站 小嗷犬的技术小站 个人信条 为天地立心 为生民立命 为往圣继绝学 为万世开太平 本文目录 多目标规划 数学模型 正负偏差变量
  • 基于沙猫群优化算法的线性规划求解matlab程序

    基于沙猫群优化算法的线性规划求解matlab程序 1 沙猫群优化算法 沙猫的中文学名叫沙丘猫 俗名沙漠猫 与荒漠猫名字相似 但却是两种不同的猫科动物 沙猫生活在茫茫沙漠里 主要分布在分布于非洲北部 阿拉伯半岛中部和西南亚 沙猫的家园 是贫瘠
  • matlab求解整数规划、0-1规划

    matlab求解整数规划 0 1规划 R2014以前无法求解整数规划 2014之后用bintprog求解0 1规划 线性规划在2016版本中暂时还可用linprog求解 注 代码中标注的pXXXtaskX指的是西安交大采用的第二版数学实验教
  • 变度量法算法(DFP)求解无约束问题

    程序功能 1 变度量法算法 DFP 求解无约束问题 2 调用文件夹下Newton的子函数 nfx ndfx ndfx2 vectorLength 3 z3 A i b 计算当前d的值 矩阵计算可能存在奇异值 4 请根据不同的目标函数 设置精
  • 【数学建模】线性规划模型基本原理与案例分享

    1 1 线性规划问题 在人们的生产实践中 经常会遇到如何利用现有资源来安排生产 以取得最大经济效益的问题 此类问题构成了运筹学的一个重要分支 数学规划 而线性规划 Linear Programming 简记LP 则是数学规划的一个重要分支

随机推荐

  • shell排序 C++

    Shell排序算法严格来说基于插入排序的思想 又称为希尔排序或缩小增量排序 Shell排序算 法的排序流程如下 1 将有 n个元素的数组分成n 2 个数字序列 第 1 个数据和第n 2 1 个数据为一对 2 一次循环使每一个序列对排好顺序
  • C# 线程浅谈 (二)

    上一篇写Thread 这一篇写Task 优缺点 百度吧 反正看那个好用用那个 创建控制台程序 新建TaskDom类 还是看怎么创建 怎么使用 怎么带参 怎么返回值 这里都体现了 class TaskDom int count 0 publi
  • 并发库:同步工具类

    1 Semaphore计数信号量 Semaphore计数信号量维护了一个许可集 用于限制访问某些资源的线程数目 并提供同步机制 通俗来说 就是可以控制让多个线程拿到许可 拿到许可的线程可以并发管理同一个资源 这些拿到许可的线程可以看做一个整
  • react、umi、request设置请求头添加token

    1 在utils文件夹里的request js里添加 添加请求头 request interceptors request use url options gt 判断本地session是否有数据 如果有就得到token 并付给请求头 if
  • 循环链表详解(循环单链表/循环双链表)

    目录 一 循环单链表 二 循环双链表 一 循环单链表 循环单链表的表尾结点的next指针总是指向头结点 所以在初始化循环单链表的时候 需要记得将头结点的next指针指向头结点自己 判断循环单链表是否为空 只要判断头结点的next指针是否指向
  • Outlook后台启动及自动隐藏

    1 开机启动 修改注册表 把outlook添加到开机选项中 2 最小化时隐藏 a 启动outlook b 右下角任务栏中 右键勾选 最小化时隐藏 即可 3 将outlook关闭按钮修改为最小化 a 访问 http www reliefjet
  • Python3,网站搭建之数据库表设计及数据存储!文末的彩蛋,我酸了~

    搭建自己的网站 是作为一个码农成功标志之一 那其他成功标志有啥呢 嘿 左手搂着白富美 右手撸着小烧烤 脚底踩着桑塔纳 嗯 这么潇洒的人生 就从数据库表设计及数据存储开始吧 数据库表设计及存储数据 1 爬取数据 2 创建数据库 2 1 创建数
  • 校oj200——带结构体的分数归并排序+字典序人名

    200 给出班里某门课程的成绩单 请你按成绩从高到低对成绩单排序输出 如果有相同分数则名字字典序小的在前 时间限制 2 sec 内存限制 128 MB 试题描述 给出班里某门课程的成绩单 请你按成绩从高到低对成绩单排序输出 如果有相同分数则
  • 在Centos7环境安装MySQL

    0 说明 安装与卸载中 用戶全部切换成为root 初期 mysql先使用root进行 尽快适应mysql语句 后期学习用戶管理 再考虑新建普通用戶 1 从普通用户切换到root用户 2 在root用户目录下创建mysql文件夹 之后MySQ
  • 经典面试题 之 哨兵(Sentinel)模式

    1 什么是哨兵模式 反客为主的自动版 能够自动监控master是否发生故障 如果故障了会根据投票数从slave中挑选一个作为master 其他的slave会自动转向同步新的master 实现故障自动转义 2 原理 sentinel会按照指定
  • 刺激战场怎么战斗服务器响应超时,绝地求生刺激战场网络延迟高怎么办 网络延迟解决方法...

    类型 动作射击大小 669 2M语言 中文 评分 4 0 标签 立即下载 绝地求生刺激战场这款射击游戏很受玩家的喜欢 玩家在游戏中可以随时开局吃鸡 不过这款游戏的网络要求会比较高 不然很然后被杀死 那绝地求生刺激战场网络延迟高怎么办 西西小
  • 【美赛】2023年MCM问题Y:理解二手帆船价格(代码&思路)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 数据与术语表 2 1 数据 2 2 术语表 3 超级软件分享与资源下载 3 1 软件分享 3 2 资源
  • 归并排序 mergeSort

    归并排序 mergeSort 基本概念 归并排序的实现 时间复杂度 和 空间复杂度 稳定性 基本概念 将一个数组不断的二分 直到不能分为止 然后将不断对比合并 归并排序适用于链表 不需要额外的储存空间 但是对于数组 需要额外的储存空间 归并
  • push本地代码到gitlab出错

    push本地代码到gitlab出错 刚创建的gitlab版本库 在push代码时出错 git push u origin master To git github com Demo git rejected master gt master
  • getaddrinfo函数解析

    IPv4中使用gethostbyname 函数完成主机名到地址解析 这个函数仅仅支持IPv4 且不允许调用者指定所需地址类型的任何信息 返回的结构只包含了用于存储IPv4地址的空间 IPv6中引入了getaddrinfo 的新API 它是协
  • mysql jdbc 连接串_Mysql JDBC 连接串参数说明

    MySQL的 JDBC URL 格式 for Connector J 如下例 jdbc mysql host port host port database 参数名1 参数值1 参数名2 参数值2 现只列举几个重要的参数 如下表所示 参数说
  • python函数装饰器

    文章目录 一 简单了解装饰器 二 装饰器练习 三 多个装饰器 四 装饰器拓展 1 基础版 无参数的装饰器 2 升级版 有参数的装饰器 一 简单了解装饰器 装饰器 Decorators 是 Python 的一个重要部分 简单地说 他们是修改其
  • Lua基础之coroutine(协程)

    概括 1 创建协程2 coroutine的函数3 coroutine的基本流程4 yield对coroutine流程的干预5 resume function 以及yield之间的参数传递和返回值传递 原文地址 http blog csdn
  • 一文看懂Python系列之装饰器(decorator)(工作面试必读)

    Python的装饰器 decorator 可以说是Python的一个神器 它可以在不改变一个函数代码和调用方式的情况下给函数添加新的功能 Python的装饰器同时也是Python学习从入门到精通过程中必需要熟练掌握的知识 小编我当初学习Py
  • 单纯性法解有约束的线性规划问题

    程序功能 1 单纯性法解有约束的线性规划问题 2 标准形式的约束问题 目标函数求最小值 约束化为等式 引入松弛变量 变量全为非负 3 目标函数Z行系数全为非正数 则停止计算 RHS列对应系数为目标值x 化为标准形式之后 形参的意义 4 A是