简单的matlab程序实现单纯形法

题目

 引入松弛变量x3,x4,x5将其化为标准型

以下是计算代码

clear
clc
A=[-1,1,1,0,0;1,2,0,1,0;3,1,0,0,1;];
c=[-2,-3,0,0,0];
b=[2,10,15,0]';
%A为系数矩阵
%b为常数约束矩阵
%c为目标函数系数矩阵
for i=1:length(c)
    if c(i)<0    %选择底行c从左往右数第一个负数
        xishu=zeros(length(A(:,1)),1)+10000; %初始化为大数以避免影响最小值
        for j=1:length(A(:,1))
          if A(j,i)>0
              xishu(j,1)=b(j,1)/A(j,i);  %把整数行的比值存起来
          end
        end
        [R,C]=find(xishu==min(xishu));   %找到比值最小的行数R
        h=1/A(R,i);
        A(R,:)= A(R,:).*h; %把A对应行的化为1
        b(R)=b(R)*h;    %把b对应行做变换
        for z=1:length(b)-1   %把A中其他行对应的化为0
            if z~=R
                h=A(z,i);
                A(z,:)=A(z,:)-A(R,:)*h;
                b(z)=b(z)-b(R)*h;
            end
        end
        h=c(1,i);
        c(1,:)=c(1,:)-h*A(R,:);  %处理c行化为0
        b(length(b))=b(length(b))-h*b(R);%处理c行对应的b
    end
end
A
c
b
disp("最优解为:")  %从A和b中看出最优解
disp([4,3]')
disp("最优值为:")
disp(-b(length(b)))   %从c中得最优值

结果如下:

 

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值