急!matlab可以做穷举搜素不?怎么做?希望有现成的程序,谢谢。

如题所述

当然可以

Matlab的求解线性规划的函数linprog不适应于0-1规划。我们采用穷举法编写了如下程序可以实现0-1规划的求解。
%0-1 program:linprog01.m
%%% min c'x
%%% s.t. Ax<=b
%%% Aeqx=beq
%%% Aieq~=bieq
function [x,fval]=linprog01(c,A,b,Aeq,beq,Aieq,bieq)
iVal=size(c,1);
xVal=zeros(size(c));
x=xVal;
opt_solution=c'*xVal;
for i=1:2^iVal-1
strBin_i=dec2bin(i);
xVal=zeros(size(c));
for k=1:length(strBin_i)
xVal(k)=str2num(strBin_i(k));
end
constrA=A*xVal<=b;
constrAeq=Aeq*xVal==beq;
constrAieq=Aieq*xVal~=bieq;
if all(constrA) & all(constrAeq) & all(constrAieq)
objVal=c'*xVal;
if objVal<=opt_solution
opt_solution=objVal;
x=xVal;
end
end
end
fval=opt_solution;

参考资料:http://club2.guet.edu.cn/blog/realghost/archive/2006/06/29/31123.html

温馨提示:内容为网友见解,仅供参考
无其他回答

急!matlab可以做穷举搜素不?怎么做?希望有现成的程序,谢谢。
当然可以 Matlab的求解线性规划的函数linprog不适应于0-1规划。我们采用穷举法编写了如下程序可以实现0-1规划的求解。0-1 program:linprog01.m min c'x s.t. Ax<=b Aeqx=beq Aieq~=bieq function [x,fval]=linprog01(c,A,b,Aeq,beq,Aieq,bieq)iVal=size(c,1);xVal=zeros(size(c));...

求高手指点:Matlab中怎样实现穷举?
穷举法也要有个范围的,比如一到几万或者几十万,最好不要用多层这么大的循环,在设置一个IF语句对该范围符合的条件跳出就好啦,若是循环能进行到了最后,说明该范围中没有数符合条件。for(i=1:1000000)if(i==1000000)%若循环结束后的answer=0,那么说明1到1000000中没有符合的条件 answer=0;else...

MATLAB穷举排列组合
2)' t = setdiff(a, i); for j = combnk(t, 2)' k = setdiff(t, j); disp([i' j' k]) endend% 如下是你题目对应的程序a = 'A':'U';for i = combnk(a, 7)' t = setdiff(a, i); for j = combnk...

请教高手!如何用Matlab穷举出这样的组合数?
这个问题其实就是变相问2-n,所有的组合情况,且这个组合不能有4 perms(x)具备输出向量x的所有组合情况,所以如果设定x= 2,3,4,5,6~~MaxNum 就会输出这个向量的全部排列组合 然后分别取1列,2列,,,MaxNum-2列 对每次取的数据的每一行进行正序排序,然后去除相同的行 最后在每一行前面补1...

如何用matlab做convex hull 基于不同分组的点
凸包上的顶点们有顺序的沿著外围绕行一圈。若能照此顺序来包,就不必以穷举所有点的方式来寻找最外围的点。Graham's Scan即是尝试将所有点按照顺序排好,再来做绕一圈的动作。顺序该如何决定呢?只要能确保凸包各顶点的前後顺序是正确的,那 便不会包错。一个简单的想法是依角度排序──只要将中心...

用matlab求100-1000内的素数,并求所有素数的和及平均值,下面的程序不是...
flag是个标志位,用来判断当前的m是不是质数,while语句穷举了m是否能被2到m-1整除也就是能否被i到j整除,当找到有能整除的情况直接跳出while,下面的if语句也通不过,直接就来到for循环,判断下一个数是否为素数。当执行完while都没有找到整除,那么此时flag不会被置为0,if语句通过,把素数保存在...

相似回答