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最优化计算源代码.zip
共59个文件
m:59个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 40 浏览量
2024-05-02
00:45:25
上传
评论
收藏 44KB ZIP 举报
温馨提示
二次规划非线性最小二乘优化问题粒子群优化算法无约束多维极值问题无约束一维极值问题线性规划选传优化算法约束优化问题整数规划
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB最优化计算源代码.zip (59个子文件)
线性规划
CMPSIMPLEMTHD.M 2KB
SIMPLEMTHD.M 2KB
MODIFSIMPLEMTHD.M 2KB
无约束多维极值问题
MINTRUA.M 875B
MINFD.M 406B
MINMNT.M 519B
MINBFGS.M 1KB
MINRB.M 1KB
MINPS.M 937B
MINNT.M 425B
MINDFP.M 1KB
MINSIMPSEARCH.M 2KB
MINGETD.M 821B
MINPOWELL.M 1KB
无约束一维极值问题
MINGS.M 1KB
MINJT.M 621B
MINNEWTON.M 451B
MINFBNQ.M 1KB
MINWP.M 1KB
MINHJ.M 614B
MINPWX.M 783B
MINTRI.M 651B
MINGX.M 391B
遗传优化算法
ADAPGA.M 3KB
MYGA.M 2KB
MMADAPGA.M 3KB
GMGA.M 3KB
DBLGEGA.M 2KB
NORMFITGA.M 2KB
SBOGA.M 3KB
整数规划
INTPROGFZ.M 3KB
DIVIDEPLANE.M 5KB
ZEROONEPROG.M 1KB
约束优化问题
MINJSMIXFUN.M 983B
MINROSEN.M 2KB
MINPF.M 499B
MINCONPS.M 2KB
MINFACTOR.M 674B
MINMIXFUN.M 828B
MINGENERALPF.M 476B
二次规划
QUADLAGR.M 226B
ACTIVDESET.M 2KB
TRACKROUTE.M 1KB
粒子群优化算法
LINWPSO.M 1KB
BREEDPSO.M 2KB
CLSPSO.M 2KB
SELPSO.M 1KB
RANDWPSO.M 1KB
SECPSO.M 1KB
SECVIBRATPSO.M 1KB
ASYLNCPSO.M 1KB
SAPSO.M 1KB
SIMUAPSO.M 2KB
LNCPSO.M 1017B
PSO.M 971B
YSPSO.M 1KB
非线性最小二乘优化问题
MINMGN.M 780B
MINLM.M 940B
MINGN.M 523B
共 59 条
- 1
资源评论
通信瓦工
- 粉丝: 311
- 资源: 5115
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功