单纯形法以及对偶单纯形法的Matlab实现

最近在上《运筹与优化》这门课,讲到了单纯形法这部分,老师让我们上机用Matlab实现单纯形法,数学公式实现过程看不懂的我就暴力模拟了单纯形法的整个过程,包含无界解等情况。
在这里插入图片描述 1. 确定初始基矩阵
2. 更新 s i g m a sigma sigma,确定换入基
3. 更新 c h i _ d a chi\_da chi_da,确定换出基
4. 判断此时解的情况(最优解、无界解),是否结束计算过程
5. 初等行变换,更新矩阵系数
单纯形法的计算过程图解

A=[2,-3,2,1,0;
    1/3,1,5,0,1];
b=[15,20]';
c=[1,2,1,0,0];
m=2;
n=5;
format rat;%结果以分数形式显示
[x_opt,fx_opt,iter]=Simplex_eye(A,b,c,n,m)

%x_opt为最求解,fx_opt为最优函数值,iter为迭代次数

function [x_opt,fx_opt,iter]=Simplex_eye(A,b,c,n,m)
    %先选出初始单位阵
    iter=0;
    init_eye_pos=nchoosek(1:1:n,m);
    [row,col]=size(init_eye_pos);
    for i = 1:row
        tmp_init_eye=init_eye_pos(i,:);
        init_eye=A(:,tmp_init_eye);
        flag=is_ones(init_eye);
        if flag==1
            ji_x=tmp_init_eye;
            break;
        end
    end
    %循环迭代求解
    sigma=zeros(n);
    chi_da=(zeros(m))';
    CB=(zeros(m))';
    tmp_A=A;
    flag=1;
    while flag
        iter=iter+1;
        %更新sigma,确定换入基
        for pos_c = 1:n
            sigma(pos_c,1)=c(pos_c);
            for pos_tmp = 1:m
 
  • 7
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值