- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用单纯形算法求解一般的线性规划问题
一:实验目的
掌握利用单纯形算法求解一般线性规划问题的步骤。并能够利用matlab编写程序,求解一般的线性规划问题。掌握matlab的使用技巧。
二:实验内容
利用matlab编写程序,求解下面线性规划的实际问题:
某商场决定,营业员每周连续工作5天后连续休息2天,轮流休息,据统计,商场每天需要的营业员如下:
星期一:300人 星期二:300人 星期三:350人 星期四:400人 星期五:480人 星期六:600人 星期日:550人
问题:(1)商场的人力资源部应如何安排每天的上班人数,使商场总的营业员最少?
若商场雇佣临时工,上班时间同正式工。若正式工工资每天80元,临时工每天100元,问商场是否应雇佣临时工及雇佣多少名?
三:求解问题形式如下:
min f=cTx
s.t. Ax=b
x=0
四:函数的调用形式如下:
[x,minf,flag,cpt]=dcxsf(A,b,c)
其中:
A:表示约束条件的系数矩阵
b:表示约束条件的常数列向量
c:表示目标函数的系数行向量
x:为线性规划解向量,当函数有可行解并且有最优值时输出最优解,当有可行解但无最优值或没有可行解时输出x[]。
minf:为目标函数的最优值,当函数有可行解并且有最优值时输出最 优值;当有可行解但没有最优值时minf=-inf,输出-1/0;当 没有可行解时输出 minf=[]。
flag:为记录函数解的情况,当函数有可行解并且有最优值时,flag=1;当函数有可行但没有最优值时,flag=0;当函数没有可行解时,flag=-1.
cpt:为单纯形表,当函数有可行解并且有最优值时输出最优解对应的单纯形表;当有可行解但没有最优值时cpt=[]。
五:函数实现方法
该程序由用户输入约束方程组的系数矩阵、常数列向量和目标函
数的系数行向量。通过调用函数的形式,采用两阶段法求解线性规划
问题,并输出相应结果。
程序的第一阶段判断问题是否有可行解,若没有,程序停止,输出结果;若有可行解,按第一阶段的方法可以求得一个初始的基本可行解,使运算进入第二阶段。第二阶段是从这个初始的基本可行解开始,使用单纯形法或者判定线性规划问题无界,或者求得一个最优解。
六:函数代码及注释:
function [x,minf,flag,cpt]=dcxsf(A,b,c)
format rat %使数据可以以分数形式输出
c=-c; %将目标函数系数向量加负号得到单纯形表第0行
[m,n]=size(A); %求约束矩阵的行数和列数
m1=m; %保存下原来的行数
s=eye(m); %生成秩为m的单位矩阵
A=[A s]; %将s矩阵添加到A矩阵右侧
A=[A b]; %将b向量添加到A矩阵右侧
g1=zeros(1,n); %生成一个1行n列的零矩阵g1
x=ones(1,m); %生成一个1行m列元素全为1的矩阵
g1=[g1 -x]; %将g1和-x合并,产生一个新的前n列为0后m列为-1的单行矩阵
g=[0]; %初始化一个单元素零矩阵
g1=[g1 g];%将单元素零矩阵添加到g1右侧,生成人工向量的检验向量g1
s1=n+m+1; %记录目前列数之和
s2=zeros(1,m+1);%生成1行m+1列的零矩阵s2
c=[c s2];%将s2添加到c右侧
A1=zeros(m,1);%生成一个m行1列的零矩阵A1
for i1=1:m
A1(i1,1)=i1+n;%基变量的数值存储区
end
for i=1:m
g1(1,:)= g1(1,:)+A(i,:);
end
decide=find(g1(1,1:m+n)0); %寻找g1中大于零的数值列数存于decide数组中
while ~isempty(decide) %当decide不为空
i=decide(1); %将列数赋给i
text=find(A(1:m,i)0); %text存放该列中所有数值大于零的行数
if isempty(text) %如果text为空则无解
flag=0;
break;
end
min=inf;%min初始化为无穷大
for i1=1:m % 当该列存在大于零的数值时
if A(i1,i)0A(i1,s1)/A(i1,i)min % 寻找比值最小的
min=A(i1,s1)/A(i1,i);
您可能关注的文档
- 连续梁施工安全技术交底概述.doc
- 三有机合成概述.doc
- 卷内目录(施工文件)概述.doc
- 卷二文综模拟试概述.doc
- 溧水县第二高级中学高三英语一轮模块复习教学案概述.doc
- 聚四氢呋喃项目设备方案概述.doc
- 降水与坑支护实施方案概述.doc
- 麻家梁栈桥安装措施概述.doc
- 降水施工方案概述.doc
- 略读教学,走出“迷惘”之境——对略读课文教学规范的思考和探索概述.doc
- 苏科版八年级数学上册《第四章实数》单元检测卷及答案.docx
- 苏科版八年级数学上册《4.2立方根》同步测试题及答案.docx
- 北师大版八年级数学下册《3.3中心对称》同步测试题带答案.docx
- 北师大版八年级数学下册《3.2图形的旋转》同步测试题带答案.docx
- 惠普HP DesignJet Printers Safety precautions document 英文说明书用户手册.pdf
- IST Innovative Sensor Technology 温度传感器说明书用户手册.pdf
- 海洋仪器CA6163多功能安规测试仪英文产品资料.pdf
- Rollei禄莱Compactline Pocket Operation Manual (DE, EN)说明书用户手册.pdf
- MSI微星显示器 MPG 491CQPX QD-OLED产品手册用户手册(语言 Hebrew).pdf
- Intel英特尔质量和可靠性第7卷:质量测试覆盖率.pdf
文档评论(0)