在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数1.x =linprog(f,A,b,Aeq,beq,lb,ub,x0)中,要对哪个参数进行设置,怎么去设置.我知道f表示目标函数中的
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 14:00:53
![在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数1.x =linprog(f,A,b,Aeq,beq,lb,ub,x0)中,要对哪个参数进行设置,怎么去设置.我知道f表示目标函数中的](/uploads/image/z/13345592-32-2.jpg?t=%E5%9C%A8%E7%94%A8matlab%E7%9A%84%E4%BC%98%E5%8C%96%E5%B7%A5%E5%85%B7%E7%AE%B1%E4%B8%AD%E7%9A%84linprog%E6%B1%82%E8%A7%A3%E5%99%A8%E6%88%96%E8%80%85%E5%85%B6%E4%BB%96%E6%B1%82%E8%A7%A3%E5%99%A8%E6%B1%82%E6%9C%80%E4%BC%98%E5%80%BC%E6%97%B6%2C%E6%80%8E%E4%B9%88%E8%AE%BE%E7%BD%AE%E5%8F%98%E9%87%8F%E7%BA%A6%E6%9D%9F%E6%9D%A1%E4%BB%B6%E4%B8%BA%E6%95%B4%E6%95%B01.x+%3Dlinprog%28f%2CA%2Cb%2CAeq%2Cbeq%2Clb%2Cub%2Cx0%29%E4%B8%AD%2C%E8%A6%81%E5%AF%B9%E5%93%AA%E4%B8%AA%E5%8F%82%E6%95%B0%E8%BF%9B%E8%A1%8C%E8%AE%BE%E7%BD%AE%2C%E6%80%8E%E4%B9%88%E5%8E%BB%E8%AE%BE%E7%BD%AE.%E6%88%91%E7%9F%A5%E9%81%93f%E8%A1%A8%E7%A4%BA%E7%9B%AE%E6%A0%87%E5%87%BD%E6%95%B0%E4%B8%AD%E7%9A%84)
在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数1.x =linprog(f,A,b,Aeq,beq,lb,ub,x0)中,要对哪个参数进行设置,怎么去设置.我知道f表示目标函数中的
在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数
1.
x =linprog(f,A,b,Aeq,beq,lb,ub,x0)
中,要对哪个参数进行设置,怎么去设置.我知道f表示目标函数中的系数;A是不等式约束条件左边的式子中的系数,B是不等式约束条右边的值;Aeq是等式约束条件左边式子中的系数,Beq是等式约束条件右边的值;lb是变量下界,ub是变量上界;x0是初始点.工具箱里其他的求解器中的约束条件也差不多是这些参数,看不出来哪里能够设置约束自变量为整数的东西.
2.优化工具箱的求解器下拉菜单下面的下拉菜单是什么东西,那个标签为“algorithm”的下拉菜单.
3.我听说matlab中没有整数规划的求解器,lingo中有,且很容易用,但是还是希望有哪位大神能够赐教如何强行用matlab求解,或者能够为在下提供所谓的“matlab整数规划工具箱下载的方法”
4.在下感激不尽,必定倾尽钱囊,以表谢意!
在用matlab的优化工具箱中的linprog求解器或者其他求解器求最优值时,怎么设置变量约束条件为整数1.x =linprog(f,A,b,Aeq,beq,lb,ub,x0)中,要对哪个参数进行设置,怎么去设置.我知道f表示目标函数中的
可以用分支定界法求解整数规划问题,给你源码:
function [x,fm] = IntProgFZ(f,A,b,Aeq,beq,lb,ub)
x = NaN;
fm = NaN;
NF_lb = zeros(size(lb));
NF_ub = zeros(size(ub));
NF_lb(:,1) = lb;
NF_ub(:,1) = ub;
F = inf;
while 1
sz = size(NF_lb);
k = sz(2);
opt = optimset('TolX',1e-9);
[xm,fv,exitflag] = linprog(f,A,b,Aeq,beq,NF_lb(:,1),NF_ub(:,1),[],opt);
if exitflag == -2
xm = NaN;
fv = NaN;
end
if xm == NaN
fv = inf;
end
if fv ~= inf
if fv < F
if max(abs(round(xm) - xm))=1.0e-7);
p = bArr(1);
new_lb = lb1;
new_ub = ub1;
new_lb(p) = max(floor(xm(p)) + 1,lb1(p));
new_ub(p) = min(floor(xm(p)),ub1(p));
NF_lb = [NF_lb new_lb lb1];
NF_ub = [NF_ub ub1 new_ub];
continue;
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最优解!');
x = NaN;
fm = NaN;
return;
end
end
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最优解!');
x = NaN;
fm = NaN;
return;
end
end
end
end