最优化理论和算法: 大作业(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优化理论和算法:大作业(一)
简介:这个大作业的主要目的是在Matlab下自己编写单纯形法算法来求解标准型线性规划问题:
min c T x
s.t.Ax=b
x≥0
其中b≥0,A是m×n(m≤n)的矩阵。假设A的秩是m.特别的,A并不一定包含单位矩阵。按照要求编写下列小程序。
程序(一):实现单步单纯形法
程序格式:
function[istatus,iB,iN,xB]=simplex_step(A,b,c,iB,iN,xB)
%实现一步单纯形法
%输入参数:
%A-(n,m)系数矩阵
%b-(m,1)(正)右端向量
%c-(n,1)目标函数系数
%iB-(1,m)整数向量记录当前基本变量的指标数
%iN-(1,n-m)整数向量记录当前非基本变量的指标数
%xB-(m,1)向量代表当前基本变量的值
%输出参数:
%istatus-整数标记单纯形法执行状态
%istatus=0正常单纯形法步完成
% istatus=32问题无界
% istatus=-1找到最优基本可行解
%iB-(1,m)整数向量记录运行单纯形法之后的基本变量的指标数
%iN-(1,n-m)整数向量记录运行单纯形法之后的非基本变量的指标数
%xB-(m,1)向量记录运行单纯形法之后的基本变量的值
注:该程序不考虑退化情形。
程序(二):利用两步法中的第一步来求解一个初始基本可行解
程序格式:
function[istatus,iB,iN,xB]=simplex_init(A,b)
%实现两步法中的第一步来求解一个初始基本可行解,通过求解下面的问题:
%min y_1+...+y_m
%s.t.Ax+y=b
%x>=0,y>=0
%A是m x n矩阵。
%输入参数:
%A-(n,m)系数矩阵
%b-(m,1)正的右端向量
%输出参数:
%istatus-整数标记初始化状态
% istatus=1找到原问题的一个基本可行解
% istatus=4问题可行域是空集
% istatus=16初始化过程失败
%iB-(1,m)整数向量记录运行初始化之后的基本变量的指标数(对应原问题)
%iN-(1,n-m)整数向量记录运行初始化之后的非基本变量的指标数(对应原问题)
%xB-(m,1)向量记录运行初始化之后的基本变量的值(对应原问题)
注:为了简单化程序,若初始化过程找到的初始基本可行解包含某些人工变量y j,设置istatus=16(初始
化失败)。
程序(三):调用前面两个程序用单纯形法来求解线性规划问题
程序格式
function[istatus,X,eta,iB,iN]=simplex_method(A,b,c)
%求解下面的问题:
%min c’x
%Ax=b
%x>=0
%输入参数:
%A-(n,m)系数矩阵
%b-(m,1)正的右端向量
%c-(n,1)目标函数系数
%输出参数:
%istatus-整数标记初始化状态
%istatus=1单纯形法正常结束,e.g找到一个最优基本可行解
%istatus=4问题可行域是空集
%istatus=16问题可行域非空,但初始化过程失败
%istatus=32问题无界
%X-(n,1)最优基本可行解
%eta最优目标函数值
%iB-(1,m)整数向量记录运行对应最优解的基本变量的指标数
%iN-(1,n-m)整数向量记录运行对应最优解的非基变量的指标数
注:该程序不考虑退化情形。
程序(四):测试算例
程序要求:
1.设计四个算例,分别对应程序(三)的四个状态,输出计算结果。
2.利用Matlab内部命令linprog和 options=optimset(’LargeScale’,’off’,’Simplex’,’on’)
输出计算结果。
3.对于istatus=1的情况,比较两个程序所得到的目标函数值,最优解(如果最优解不唯一,两个程序得
到的解不一定一致),和计算时间。
大作业要求和评分标准
1. 打印的四个程序代码和程序(四)的输出结果(注明名字,学号和Email地址)
2. 上交期限:2011/11/17,逾时者计0分.
3. 程序的正确性和完备性,输入和输出和要求一致。
4. 程序的可读性,必要的注释
5. 算例输出结果的有效性。
6. 严禁互相抄袭,若发现抄袭,双方成绩计0分。