单纯形法MATLAB程序

合集下载

单纯形法matlab

单纯形法matlab

数学软件与实验数学与信息科学学院信息与计算科学单纯形法的Matlab程序如下:function [xx,fm]=myprgmh(m,n,A,b,c)B0=A(:,1:m);cb=c(:,1:m);xx=1:n;sgm=c-cb*B0^-1*A;h=-1;sta=ones(m,1);for i=m+1:nif sgm(i)>0h=1;endendwhile h>0[msg,mk]=max(sgm);for i=1:msta(i)=b(i)/A(i,mk);end[mst,mr]=min(sta);zy=A(mr,mk);for i=1:mif i==mrfor j=1:nA(i,j)=A(i,j)/zy;endb(i)=b(i)/zy;endendfor i=1:mif i~=mrfor j=1:nA(i,j)=A(i,j)-A(i,mk)*A(mr,j);endb(i)=b(i)-A(i,mk)*b(mr);endendB1=A(:,1:m);cb(mr)=c(mk);xx(mr)=mk;sgm=c-cb*B1*A;for i=m+1:nif sgm(i)>0h=1;endendendfm=c*xx;例题:编写下列求解如下线性规划问题的单纯形法函数min f'xs.t ax<=b(其中b>=0)函数形式function [x,fval,it,op]=singl(f,a,b) 输出中x为最优解fval为最优值it为迭代次数无最优解op=0有最优解op=1编写程序如下:function [x,fval,it,op]=singl(f,a,b)[m,n]=size(a);c=[a eye(m) b;f' zeros(1,m+1)];fval=0;x=zeros(m+n,1);op=1;it=0;e=zeros(1,m);lie=find(f<0);l=length(lie);while(l>0)for j=1:ld=find(c(:,lie(j)));d_l=length(d);if d_l>0for i=1:mif c(i,lie(j))>0e(i)=c(i,end)/c(i,lie(j));elsee(i)=inf;endend[g,h]=min(e);for w=1:m+1if w==hc(w,:)=c(w,:)/c(h,lie(j));elsec(w,:)=c(w,:)-c(h,:)*c(w,lie(j))/c(h,lie(j));endendit=it+1;elseop=0;endendlie=find(c(end,:)<0);l=length(lie);endfor i=1:(m+n)ix=find(c(:,i));if(length(ix)==1)&(ix<=m)&(c(ix,i)==1) x(i)=c(ix,end)elsex(i)=0endendfval=-c(end,end);。

单纯形方法(SimplexMethod)Matlab仿真详解

单纯形方法(SimplexMethod)Matlab仿真详解

单纯形方法(SimplexMethod)Matlab仿真详解最近在上最优理论这门课,刚开始是线性规划部分,主要的方法就是单纯形方法,学完之后做了一下大M 算法和分段法的仿真,拿出来与大家分享一下。

单纯形方法是求解线性规划问题的一种基本方法。

单纯形方法基本步骤如下:1)将所给的线性规划问题化为标准形式:min ()..0Tf x c x s t Ax bx ==≥s.t.是英文subject to 的简写,意思是受约束,也就是说第一个方程(目标函数)受到后面两个方程的约束。

对于求最大值问题可以将目标函数加负号转换为最小值问题。

max ()min ()T T f x c x f x c x =?=-其他的问题就是将实际问题中的不等式约束改为等式约束,主要方法是引进松弛变量和剩余变量,以及将自有变量转换为非负变量。

①对于不等式1b ,1,2,nij ji j a xi m =≤=∑ ,引入松弛变量将其变为等式形式如下:1b ,1,2,0,1,2,nij jn i i j n i a xx i mx i m+=++==≥=∑②对于不等式1b ,1,2,nij ji j a xi m =≥=∑ ,引入剩余变量将其变为等式形式如下:1b ,1,2,0,1,2,nij jn i i j n i a xx i mx i m+=+-==≥=∑③若变量为自有变量(可取正、负或零,符号无限制),则引入两个非负变量将其表示如下:j j j j j x x x x x '''?=-?'≥??''≥? 2)找出一个初始可行基B ,作出单纯形表,这里假设输入的线性规划问题已经有初始可行基。

0T c S A b ??=3)测试所有的检验数(目标函数的系数C ),记录检验数中的正数,若全部小于等于0,则已经找到最优解,计算终止。

否则转至4)。

4)测试所有为正的检验数,若在单纯性表中,其所在的列中其他元素全部小于等于0,则此问题无最优解,计算终止,否则转至5)。

matlab单纯形法

matlab单纯形法

%求解标准型线性规划:max c*x;s.t. A*x=b;x>=0%本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b %N是初始的基变量的下标%输出变量sol是最优解%输出变量val是最优值,kk是迭代次数function [sol,val,kk]=ssimplex(A,N)[mA,nA]=size(A);kk=0; %迭代次数flag=1;while flagkk=kk+1;if A(mA,:)<=0 %已找到最优解flag=0;sol=zeros(1,nA-1);%给每个变量赋初值0for i=1:mA-1sol(N(i))=A(i,nA);%给基变量赋新值(替换0)end %给出最优解val=-A(mA,nA);elsefor i=1:nA-1if A(mA,i)>0&A(1:mA-1,i)<=0 %问题有无界解disp('have infinite solution!');flag=0;break;endendif flag %还不是最优表,进行转轴运算temp=0;for i=1:nA-1if A(mA,i)>temptemp=A(mA,i);inb=i; % 进基变量的下标endend %选择最大检验数纵向对应的变量为进基变量sita=zeros(1,mA-1);for i=1:mA-1if A(i,inb)>0sita(i)=A(i,nA)/A(i,inb);endendtemp=inf;for i=1:mA-1if sita(i)>0&sita(i)<temptemp=sita(i);outb=i; %出基变量下标endend %选择最小的sita横向对应的变量为出基变量%以下更新Nfor i=1:mA-1if i==outbN(i)=inb;%以进基变量的下标替代出基变量的下标endend%以下进行转轴运算A(outb,:)=A(outb,:)/A(outb,inb);%将主元化为1for i=1:mAif i~=outbA(i,:)=A(i,:)-A(outb,:)*A(i,inb);%将进基变量所在列除主元外的其余元素化为0endendendendend。

单纯形法matlab求解有约束优化问题实验报告

单纯形法matlab求解有约束优化问题实验报告

单纯形法matlab求解有约束优化问题实验报告一、实验目的本次实验旨在通过使用MATLAB软件中的单纯形法,求解约束优化问题,熟悉单纯形法的基本原理和操作方法,并掌握MATLAB软件中单纯形法的使用。

二、实验原理1.单纯形法基本原理单纯形法是一种线性规划问题的求解方法,其基本思想是通过不断地移动一个n维空间中的“单纯形”(即一个n+1个顶点组成的凸多面体),寻找到目标函数最小值或最大值所对应的顶点。

在每次移动时,都会将当前顶点与其它顶点进行比较,选择一个更优秀的顶点来替换当前顶点,并不断重复这个过程直到找到最优解为止。

2.单纯形法步骤(1)确定初始可行解;(2)检查当前可行解是否为最优解;(3)如果当前可行解不是最优解,则选择一个非基变量进入基变量集合,并确定该变量使目标函数值下降最多;(4)计算新可行解;(5)判断新可行解是否存在并继续执行步骤2-4直到找到最优解。

三、实验步骤1.建立约束优化问题模型本次实验采用如下线性规划问题模型:$max\quad z=2x_1+3x_2$$s.t.\quad x_1+x_2\leq 4$$x_1\geq 0,x_2\geq 0$2.使用MATLAB软件求解(1)打开MATLAB软件,新建一个m文件;(2)输入以下代码:%建立约束优化问题模型f=[-2,-3];A=[1,1];b=[4];lb=zeros(2,1);[x,fval]=linprog(f,A,b,[],[],lb);(3)保存并运行该m文件,即可得到最优解。

四、实验结果与分析根据上述步骤,我们可以得到该线性规划问题的最优解为:$x_1=3,x_2=1,z=9$。

五、实验总结本次实验通过使用MATLAB软件中的单纯形法,成功求解了一个约束优化问题,并深入了解了单纯形法的基本原理和操作方法。

通过实践操作,加深了对MATLAB软件中单纯形法的使用和应用。

单纯形法matlab代码

单纯形法matlab代码

单纯形法(Simplex Method)——优化问题的强有力工具一、引言优化问题在数学和工程领域扮演着重要的角色,而单纯形法则是一种常用的解决优化问题的方法。

它可以用于线性规划问题的求解,通过逐步迭代,不断优化目标函数的值。

本文将介绍单纯形法的原理和基本步骤,并使用MATLAB代码展示其在实际问题中的应用。

二、单纯形法原理单纯形法是一种基于几何直觉的算法,它通过多次迭代寻找可行解空间中的顶点,并在每次迭代中逐渐改进目标函数的值,直至找到最优解或确定问题无解。

该方法的基本思想是从初始可行解出发,通过交换基变量和非基变量,不断向较优的顶点移动,直至达到最优解。

三、单纯形法步骤单纯形法的求解过程可以分为以下几个步骤:3.1 构建初始单纯形表构建初始单纯形表包括将优化问题转化为标准型,并引入松弛变量将约束条件转化为等式,同时引入人工变量以确保可行解存在。

3.2 选择入基变量和出基变量在每一次迭代中,需要选择一个入基变量和一个出基变量。

入基变量是指由非基变量变为基变量的变量,而出基变量是指由基变量变为非基变量的变量。

3.3 计算回代数通过计算回代数,可以确定迭代的方向和距离。

回代数是指基变量要离开基础解所需要沿其可行方向运动的最大距离。

3.4 更新单纯形表通过更新单纯形表,可以得到下一次迭代的基变量和非基变量,并计算相应的解。

更新单纯形表的方法一般有高斯型和乘子分析型两种。

3.5 判断是否达到终止条件在每一次迭代后,需要判断是否满足终止条件。

终止条件可以是目标函数的值不再改变或约束条件不再发生变化等。

3.6 迭代直至达到最优解如果未达到终止条件,则继续进行下一次迭代,直至达到最优解或确定问题无解。

四、单纯形法在MATLAB中的应用在MATLAB中,可以使用线性规划工具箱(Linear Programming Toolbox)来实现单纯形法的运算。

以下是一个简单的例子,以详细介绍如何使用MATLAB代码解决线性规划问题。

Matlab单纯形法

Matlab单纯形法

• 线性规划问题 • 解决这一问题我们用的是linprog函数,linprog 函数求的是最小值,线性规划是求最大,所以 要在目标函数前加一个负号. • x = linprog( c , A , b , Aeq , beq , lb , ub , x0 )是求 解线性规划问题的命令。 • c是目标函数的系数向量,A是不等式约束 AX<=b的系数矩阵,b是不等式约束AX<=b的常 数项,Aeq是等式约束AeqX=beq的系数矩阵, beq是等式约束AeqX=beq的常数项,lb是X的下 限,ub是X的上限,X是向量[x1,x2,...xn]即决策 变量。
Matlab单纯形法
• 运行matlab会显示三个窗口,分别是变量窗 口,命令窗口和历史窗口。 • 在命令窗口中出现命令提示符 “>>”,就 可以输入命令,按回车键完成运算。 • 命令窗口的说明: • 1.在命令中,空格不参与运算。 • 2.几条命令可以写在同一行,用逗号隔开。 • 3.在命令窗口中不能返回到前面的命令行 进行修改后在重新执行。
• 如果模型中不包含不等式约束条件,可用 []代替A和b表示缺省;如果没有等式约 束条件,可用[]代替Aeq和beq表示缺省; 如果某个xi无下界或上界,可以设定lb(i) =-inf或ub(i)=inf; 用[x , Fval]代替上述各命令行中左边的x, 则可得到在最优解x处的b中,用[1 2 3]表示行向量;[1;2;3] 表示列向量;[1 2 3;4 5 6;7 8 9]表示矩阵。 • 矩阵按行输入,元素之间用空格或“,” 隔开,行与行之间用“;”隔开。 • 特殊命令创建矩阵a=[m:q:n],m是起始值;n 是终止值;q是增量。如a=[1:2:13] • 特殊矩阵建立:eye创建一个单位矩阵,如 eye(4);ones创建一个元素全是1的矩阵,如 ones(1,4);zeros创建一个全是0的矩阵,如 zeros(1,4).

实验二:MATLAB编程单纯形法求解

实验二:MATLAB编程单纯形法求解

北京联合大学实验报告项目名称:运筹学专题实验报告学院:自动化专业:物流工程班级: 1201B 学号:2012100358081 姓名:管水城成绩:2015 年 5 月 6 日实验二:MATLAB 编程单纯形法求解一、实验目的:(1)使学生在程序设计方面得到进一步的训练;,掌握Matlab (C 或VB)语言进行程序设计中一些常用方法。

(2)使学生对线性规划的单纯形法有更深的理解. 二、实验用仪器设备、器材或软件环境 计算机, Matlab R2006三、算法步骤、计算框图、计算程序等本实验主要编写如下线性规划问题的计算程序:⎩⎨⎧≥≥≤0,0..min b x b Ax t s cx 其中初始可行基为松弛变量对应的列组成. 对于一般标准线性规划问题:⎩⎨⎧≥≥=0,0..min b x b Ax t s cx1.求解上述一般标准线性规划的单纯形算法(修正)步骤如下:对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。

设初始基为B,然后执行如下步骤: (1).解B Bx b=,求得1B x B b -=,0,N B B x f c x ==令计算目标函数值 1(1,2,...,)i m B b i -=i 以b 记的第个分量(2).计算单纯形乘子w,BwB C =,得到1B wC B -=,对于非基变量,计算判别数1i i i B i i z c c B p c σ-=-=-,可直接计算σ=1B A c c B --令max{}k i Rσσ∈=,R 为非基变量集合若判别数0k σ≤ ,则得到一个最优基本可行解,运算结束;否则,转到下一步 (3).解k kBy p =,得到1k k y B p -=;若0k y ≤,即k y 的每个分量均非正数, 则停止计算,问题不存在有限最优解,否则,进行步骤(4).确定下标r,使{}:0min ,0t rrktktk b b tk y y t y y >=>且rB x 为离基变量,,r k B x p k 为进基变量,用p 替换得到新的基矩阵B,还回步骤(1);2、计算框图为:图1 3.计算程序(Matlab):A=input('A=');b=input('b=');c=input('c=');format rat%可以让结果用分数输出[m,n]=size(A);E=1:m;E=E';F=n-m+1:n;F=F';D=[E,F]; %创建一个一一映射,为了结果能够标准输出X=zeros(1,n); %初始化Xif(n<m) %判断是否为标准型fprintf('不符合要求需引入松弛变量')flag=0;elseflag=1;B=A(:,n-m+1:n); %找基矩阵cB=c(n-m+1:n); %基矩阵对应目标值的cwhile flagw=cB/B; %计算单纯形乘子,cB/B=cB*inv(B),用cB/B的目的是,为了提高运行速度。

matlab 单纯形法 -回复

matlab 单纯形法 -回复

matlab 单纯形法-回复什么是单纯形法?单纯形法是一种用于解决线性规划问题的算法。

它是由美国数学家乔治·达特兰德于1947年提出的。

单纯形法通过在一个多面体内移动一个特殊的高维图形,即单纯形,来搜索最优解。

这个多面体被称为可行解区域,而单纯形则是由多个顶点组成的多面体。

单纯形法的步骤如下:1. 理解线性规划问题:在开始使用单纯形法之前,首先需要明确线性规划问题的定义和约束条件。

线性规划问题是一类在线性目标函数下,通过一组线性不等式和等式约束来找到使目标函数最优化的变量值。

2. 转换为标准形式:将线性规划问题转换为标准形式,即将目标函数和约束条件都转化为等式形式,并引入人工变量和松弛变量。

3. 初始化:寻找一个可行基础解,并计算对应的目标函数值。

如果找不到初始的基础解,则问题无解。

4. 选择进基变量:从非基变量中选择一个进基变量,即将其从0增加为正值,以使目标函数值增加。

5. 选择出基变量:确定一个出基变量,即将其从正值减少到0,以保持其他约束条件不变。

6. 单纯形迭代:通过计算目标函数值和约束条件来确定下一个基础解。

如果满足终止条件,则找到了最优解。

否则,继续选择进基变量和出基变量进行下一次迭代。

7. 终止:根据终止条件判定是否找到了最优解。

终止条件可以是找不到进基变量或者出基变量,或者目标函数值已达最优。

单纯形法的优点在于它是一种相对快速和可靠的算法,可以在多项式时间内找到最优解。

然而,它的缺点是当问题规模较大时,计算复杂度会呈指数增长,并且在某些特殊情况下可能会出现挂起、无法终止的情况。

为了改进单纯形法的性能,研究人员提出了一些变种和改进的算法。

例如,内点法通过在多面体内部搜索最优解,避免了单纯形法中移动单纯形的过程,并取得了较好的效果。

其他算法如双轨法、变尺度法等也都在不同程度上改进了单纯形法的缺点。

总而言之,单纯形法是一种经典且有效的用于解决线性规划问题的算法。

它的基本思想是通过迭代逐步优化目标函数值,直到找到最优解。

单纯形法的matlab编程

单纯形法的matlab编程

单纯形法的matlab实现首先输入三个值系数矩阵A目标函数系数行向量C列向量b根据大M法进行扩列A,C,b.使得行数不变,列数增加M 进行的到基向量的坐标,非基变量的坐Cb,Cn,Xb,Xn,此时的值便是典式,不在需要进行进一步化简,只需求解检验变量delta的值迭代过程输入上一步得到A,C,b,Cb,Cn,Xb,Xn,输出值为最优解为X,得到目标函数的最优解Z的值迭代循化用while循环当找到解时结束循环break或者当发现循化结果没有最优解时跳出循环,这里涉及两个判断,两个判断量初始值都可以写在循环外,两者的值共同决定循环的执行与否循化最开始进行判断初始可行解是否为最最优解,若是直接跳出循化,若上面的判断不成立,接下来进行下一个判断,若不符合进行下面入基和出基变量的选值入基和出基变量的循化是两次循化,第一次找到k的值,第二次根据上一次的k找r的值注意因为值有约束,而且是找函数最小值,需要对这个列向量进行变换一下将小于等于0的都变成无穷大,接下来进形下一次的循化,进而找到转轴元将A,b,delta合成一个新的矩阵,进行旋转变化,得到值后反变回相应的值,接下来需要对Xb,Xn的值进行交换这个步骤要两个循环,第一个循化对Ark的所在行进行变化,接下来进行对整个矩阵进行行变换,包括两种情况,两次循化嵌套分别是r==1时和r~=1的时候建立总体X的坐标列向量发生交换时出基变量找Xb,入基变量从X中找有先后顺序先解决Xn的变化。

在解决Xb的值直接解决基变量其他为0A=input('输入系数矩阵\n');b=input('输入列向量b\n');C=input('输入目标函数行向量\n');M=5200;global m;global n;global X;[m,n]=size(A);I=eye(m);A=[A,I];Xb=[];Xn=[];for i=1:mC(i+n)=-M;Xb(i)=n+i;endXb=Xb';Cb=C(1,n+1:n+m);for i=1:nXn(i)=i;endXn=Xn';X=[Xn;Xb];[m,n]=size(A);diedai(A,C,b,Cb,Xb);function[Z]=diedai(A,C,b,Cb,Xb)delta=C-Cb*A;global m;global n;global X;while1s2=0;s1=0;for j=1:nif delta(j)>0s1=1;for i=1:mif A(i,j)>0s2=1;endendendendif s1==0disp('目标函数最优解')Z=Cb*b;disp(Z)disp('基变量为');[Xb,index]=sort(Xb);disp(Xb)b=b(index);disp('基可行解为');disp(b)break;endif s2==0disp('目标函数无界,无最优解');break;end[~,k]=max(delta);p=A(:,k);zhuan=[];for i=1:mzhuan(i)=b(i)/p(i);if zhuan(i)<=0zhuan(i)=inf;endend[~,r]=min(zhuan);b(m+1)=0;Z=[A;delta];Z=[Z,b];z=Z;ark=A(r,k);for j=1:n+1Z(r,j)=Z(r,j)/ark;endif r==1for i=2:m+1for j=1:n+1Z(i,j)=Z(i,j)-z(i,k)*Z(r,j);endendelse for i=[1:r-1,r+1:m+1]for j=1:n+1Z(i,j)=Z(i,j)-z(i,k)*Z(r,j);endendendA=Z(1:m,1:n);delta=Z(m+1,1:n);b=Z(1:m,n+1);Cb(r)=C(k);Xb(r)=X(k);endend。

matlab 单纯形法

matlab 单纯形法

matlab 单纯形法并解释如何使用MATLAB 中的单纯形法来求解线性规划问题。

【引言】在运筹学和数学规划领域,线性规划是一种重要的数学建模和优化方法。

它用于解决实际问题中关于资源分配、生产计划、物流安排等的决策问题。

单纯形法是一种经典的线性规划解法,它通过迭代优化目标函数的值来找到最优解。

MATLAB 提供了强大的高级优化工具箱,包括对线性规划问题的求解。

在本文中,我将逐步介绍如何使用MATLAB 中的单纯形法来求解线性规划问题。

【前提条件】在使用单纯形法求解线性规划问题之前,我们需要明确问题的数学模型。

线性规划问题可以形式化为如下的标准形式:最大化:C^T * X约束条件:AX <= B, X >= 0其中,X 是变量向量,C 是目标函数系数向量,A 是约束条件的系数矩阵,B 是约束条件的右端向量。

在MATLAB 中,我们可以通过定义这些向量和矩阵来表示线性规划问题。

接下来,我将演示如何使用MATLAB 的优化工具箱来完成线性规划求解任务。

【问题定义】以下是一个简单的线性规划问题的例子,我们将以此为例来展示MATLAB 中单纯形法的求解过程。

最大化:2x1 + 3x2约束条件:x1 + x2 <= 4x1 - x2 <= 2x1, x2 >= 0【MATLAB 实现】首先,在MATLAB 中创建变量和约束条件的向量和矩阵。

代码如下:MATLABC = [-2; -3]; 目标函数的系数向量A = [1, 1; 1, -1]; 约束条件的系数矩阵B = [4; 2]; 约束条件的右端向量接下来,我们使用`linprog` 函数来求解线性规划问题。

这个函数将返回最优解X 和最优解的目标函数值FVAL。

代码如下:MATLAB[X, FVAL, EXITFLAG] = linprog(-C, A, B);注意,我们在输入目标函数系数向量C 时,在前面添加了负号。

这是因为`linprog` 函数默认求解最小化问题,而我们是要求解最大化问题。

matlab单纯形法

matlab单纯形法

MATLAB中的单纯形法(Simplex Method)是一种求解线性规划问题的常用算法,它通过计算目标函数在可行域上的极值来优化问题。

下面是MATLAB实现单纯形法的步骤:
1.构造线性规划问题模型:定义目标函数和约束条件,并将它们表示为矩阵形
式。

2.初始化算法参数:包括初始基变量、初始对偶变量、初始目标函数值等。

3.选择入基变量和出基变量:根据当前的基变量构造单纯形表,然后从中选择
一个最优的入基变量和出基变量。

4.更新基向量和对偶向量:将选定的入基变量替换掉出基变量,同时更新对偶
向量。

5.判断终止条件:如果当前解已经满足约束条件,并且目标函数也无法再继续
优化,则停止迭代。

6.迭代求解:重复执行步骤3 -步骤5,直到达到终止条件。

7.输出结果:输出最终的优化结果,包括最优解、最优目标函数值等。

需要注意的是,在进行单纯形法求解时,可能会遇到无解、有多个最优解等情况,需要进一步处理。

此外,单纯形法在处理大规模问题时,可能会遇到效率较低的问题,这时需要使用其他更高效的算法来求解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单纯形法(Mat lab程序)
%%单纯形法(Mat lab程序)a= input (' input the major matrix A '); b=input (' input the matrix b '); n=input C input the judgement ');
%%为计数器(确定循环次数)
萨0;
while g<40
%%确定非负
alength=max(size(n));
blength二max(size(b));
m=0;
for i=l:alength
辻n(i)〉=0
m二m+1;
end
end;
if m==alength
x=b;
break
end;
%%找K
s二min(n);
for i=l:alength
if n(i) ==s
k二i;
break
end;
end;
%%a[i,k]的非负性
m=0;
for i=l:blength
if a(i, k)<0
m二m+1;
end;
end;
if m==blength
disp('x does not exit');
judge二1;
break
end;
%%找L确定主元cc=100000;
for i=l:blength
if a (i, k) >0
if
(b(i)/a(i, k))<
cc
cc=b(i)/a(i, k);
end
end end; for i=l:blength
if a(i, k)~=0
if (b(i)/a(i, k))==cc
1二i;
break
end
end end; %%计算,a 标准化zu=a(l, k); aa=a; for i=l:1-1 for j=l:alength aa(i, j)=a(i, j)-
a(l, j)*a(i, k)/a(l, k);
end end; for i=l+l:blength
for j=l :alength aa(i, j)=a(i, j)-
a(l, j)*a(i, k)/a(l, k);
end end; for j=l:alength
aa(l, j)=a(l, j)/zu; end;
%%b 勺判别bb=b; bb(l)=b(l)/zu;
for i=l: 1~1 bb(i)=b(i)~
b⑴*a(i, k)/a(l, k);
end;
for i=l+l:blength bb(i)二b(i)-
b(l)*a(i, k)/a(l, k);
end;
b二bb; %%确定判别数
tt 二n;
for j=l:alength
11 (j) =n(j)-a(1, j)*n(k)/a(1, k) ; end; n=tt;
a=aa;
%%显示单纯形表sa sa二[b' aa;
0 n];
dispC单纯表示例’);
disp(g+1);
disp(sa);
g二g+l;
judge=2;
end;
if judge==2
q二0; result=zeros (alength, 2); for j=l+q:alength
if n(j)=0 t=a(:, j) ; zu=find( t) ; resu lt( j, l)=j ; result (j, 2)=x(zu) ; q 二q+1 ;
end
if n(j)>0 result(j,l)=q+l; q=q+l;
end
end;
dispC最优解’);
disp (result);
dispC循环次数');
end。

相关文档
最新文档