function [intx,intf] = DividePlane(A,c,b,baseVector)
sz = size(A);
nVia = sz(2);
n = sz(1);
xx = 1:nVia;
if length(baseVector) ~= n
disp('基变量的个数要与约束矩阵的行数相等!');
mx = NaN;
mf = NaN;
return;
end
M = 0;
sigma = -[transpose(c) zeros(1,(nVia-length(c)))];
xb = b;
while 1
[maxs,ind] = max(sigma);
if maxs <= 0
vr = find(c~=0 ,1,'last');
for l=1:vr
ele = find(baseVector == l,1);
if(isempty(ele))
mx(l) = 0;
else
mx(l)=xb(ele);
end
end
if max(abs(round(mx) - mx))<1.0e-7
intx = mx;
intf = mx*c;
return;
else
sz = size(A);
sr = sz(1);
sc = sz(2);
[max_x, index_x] = max(abs(round(mx) - mx));
[isB, num] = find(index_x == baseVector);
fi = xb(num) - floor(xb(num));
for i=1:(index_x-1)
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
for i=(index_x+1):sc
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
Atmp(1,index_x) = 0;
A = [A zeros(sr,1);-Atmp(1,:) 1];
xb = [xb;-fi];
baseVector = [baseVector sc+1];
sigma = [sigma 0];
%对偶单纯性
while 1
if xb >= 0
if max(abs(round(xb) - xb))<1.0e-7
vr = find(c~=0 ,1,'last');
for l=1:vr
ele = find(baseVector == l,1);
if(isempty(ele))
mx_1(l) = 0;
else
mx_1(l)=xb(ele);
end
end
intx = mx_1;
intf = mx_1*c;
return;
else
sz = size(A);
sr = sz(1);
sc = sz(2);
[max_x, index_x] = max(abs(round(mx_1) - mx_1));
[isB, num] = find(index_x == baseVector);
fi = xb(num) - floor(xb(num));
for i=1:(index_x-1)
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
for i=(index_x+1):sc
Atmp(1,i) = A(num,i) - floor(A(num,i));
end
Atmp(1,index_x) = 0;
A = [A zeros(sr,1);-Atmp(1,:) 1];
xb = [xb;-fi];
baseVector = [baseVector sc+1];
sigma = [sigma 0];
continue;
end
else
minb_1 = inf;
chagB_1 = inf;
sA = size(A);
[br,idb] = min(xb);
for j=1:sA(2)
if A(idb,j)<0
bm = sigma(j)/A(idb,j);
if bm<minb_1
minb_1 = bm;
chagB_1 = j;
end
end
end
sigma = sigma -A(idb,:)*minb_1;
xb(idb) = xb(idb)/A(idb,chagB_1);
A(idb,:) = A(idb,:)/A(idb,chagB_1);
for i =1:sA(1)
if i ~= idb
xb(i) = xb(i)-A(i,chagB_1)*xb(idb);
A(i,:) = A(i,:) - A(i,chagB_1)*A(idb,:);
end
end
baseVector(idb) = chagB_1;
end
end
end
else
minb = inf;
chagB = inf;
for j=1:n
if A(j,ind)>0
bz = xb(j)/A(j,ind);
if bz<minb
minb = bz;
chagB = j;
end
end
end
sigma = sigma -A(chagB,:)*maxs/A(chagB,ind);
xb(chagB) = xb(chagB)/A(chagB,ind);
A(chagB,:) = A(chagB,:)/A(chagB,ind);
for i =1:n
if i ~= chagB
xb(i) = xb(i)-A(i,ind)*xb(chagB);
A(i,:) = A(i,:) - A(i,ind)*A(chagB,:);
end
end
baseVector(chagB) = ind;
end
M = M + 1;
if (M == 1000000)
disp('找不到最优解!');
mx = NaN;
minf = NaN;
return;
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
龚纯《精通MATLAB最优化计算》随书源码(M文件)
共59个文件
m:59个
5星 · 超过95%的资源 需积分: 31 151 下载量 173 浏览量
2011-02-05
22:33:25
上传
评论 3
收藏 41KB RAR 举报
温馨提示
这是龚纯《精通MATLAB最优化计算》随书源码(M文件)。基于MATLAB优化工具箱,代码包含的内容有:牛顿法等无约束一维极值问题、单纯形搜索法等无约束多维极值问题、Rosen梯度投影法等约束优化问题、L-M法等非线性最小二乘优化问题、线性规划、整数规划、二次规划、粒子群优化、遗传算法。
资源推荐
资源详情
资源评论
收起资源包目录
随书源码_精通MATLAB最优化计算.rar (59个子文件)
随书源码_精通MATLAB最优化计算
第8章 约束优化问题
minGeneralPF.m 476B
minconPS.m 2KB
minRosen.m 2KB
minPF.m 499B
minFactor.m 674B
minJSMixFun.m 983B
minMixFun.m 828B
第14章 遗传优化算法
SBOGA.m 3KB
DblGEGA.m 2KB
NormFitGA.m 2KB
GMGA.m 3KB
AdapGA.m 3KB
MMAdapGA.m 3KB
myGA.m 2KB
第9章 非线性最小二乘优化问题
minMGN.m 780B
minLM.m 940B
minGN.m 523B
第6章 无约束一维极值问题
minWP.m 1KB
minTri.m 651B
minFBNQ.m 1KB
minJT.m 621B
minPWX.m 783B
minNewton.m 451B
minHJ.m 614B
minGX.m 391B
minGS.m 1KB
第10章 线性规划
CmpSimpleMthd.m 2KB
SimpleMthd.m 2KB
ModifSimpleMthd.m 2KB
第11章 整数规划
ZeroOneprog.m 1KB
DividePlane.m 5KB
IntProgFZ.m 3KB
第13章 粒子群优化算法
LnCPSO.m 1017B
SecPSO.m 1KB
YSPSO.m 1KB
LinWPSO.m 1KB
AsyLnCPSO.m 1KB
CLSPSO.m 2KB
RandWPSO.m 1KB
SecVibratPSO.m 1KB
SAPSO.m 1KB
SelPSO.m 1KB
SimuAPSO.m 2KB
PSO.m 971B
BreedPSO.m 2KB
第7章 无约束多维极值问题
minFD.m 406B
minPowell.m 1KB
minDFP.m 1KB
minNT.m 425B
minTruA.m 875B
minPS.m 937B
minGETD.m 821B
minBFGS.m 1KB
minMNT.m 519B
minRb.m 1KB
minSimpSearch.m 2KB
第12章 二次规划
QuadLagR.m 226B
ActivdeSet.m 2KB
TrackRoute.m 1KB
共 59 条
- 1
mark_jz
- 粉丝: 16
- 资源: 49
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页