matlab编程:0-1规划问题:向高手求程序代码。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab编程:0-1规划问题:向高手求程序代码。相关的知识,希望对你有一定的参考价值。

0-1规划问题
0-1规划是整数规划的一种特殊形式。在这种形式下,决策变量只能取0或1两个值,
例如,项目投资、产品的选择、设备的选购、雇员的聘用、投标单位的选取、学生的录
取、股票的选择等,凡是涉及选取或不选取时,都可以用0-1表示,1表示选中,0表示
未选中。
训练内容:
现有一集装箱,拟运输下列物品A1~A5。A1、A2由于体积庞大,集装箱内只能装其中
之一;A4、A5由于重量大,也只能装一件;A1是食品,不能与化工产品A4放一起;
A2与A5是配套产品,必须一起运输。A1的运费是1500元,A2的运费是2000元,A3
的运费是1300元,A4的运费是2300元,A5的运费是2800元。问集装箱应如何装箱才
能使运费收入达到最大。
训练要求:
1、建立数学模型
2、编程求解

    建立数学模型

    设xi=1表示Ai被选中,xi=0表示Ai没被选中。

则数学模型是:

max 1500x1+2000x2+1300x3+2300x4+2800x5

s.t.   x1+x2=1

       x4+x5=1

       x1+x4<=1

       x2-x5=0

       xi=0或1,i=1,2,3,4,5 

2.编程求解

matlab程序:

f = [-1500 -2000 -1300 -2300 -2800];
A = [1 0 0 1 0];
b = 1;
Aeq = [1 1 0 0 0;0 0 0 1 1;0 1 0 0 -1];
beq = [1;1;0];
x = bintprog(f,A,b,Aeq,beq)
解出来是:

x =

     0
     1
     1
     0
     1

也就是说运送A2,A3,A5

参考技术A linproge,函数,自己看看下面的
http://hi.baidu.com/tanchunhai/item/8ff3222984d10c0b42634ac1

求高手帮忙看一个Matlab 程序

m1=3;c1=zeros(m1,2048);
for zhen1=1:m1
M1=1992;
a1=rand(1,7968);
a1=sign(a1-0.5);
b1=reshape(a1,1992,4);
xxx1=2*b1(:,1)+b1(:,2)+j*(2*b1(:,3)+b1(:,4));
xx1=ifft(xxx1')*1992;
geshu1=length(xx1);
s11=1;s21=56;s31=1;
w11=s11:s31:s21;
addcp1=ones(1,geshu1+s21);
for i1=w11
addcp1(1,i1)=xx1(1992-s21+i1);
end
w21=1:1:geshu1;
for k1=w21
addcp1(1,s21+k1)=xx1(k1);
end

c1(zhen1,1:2048)=addcp1;

c11=c1';
addcp11=reshape(c11,1,6144);
end

for n=1:3
for m=1:2048
addcp11((n-1)*2048+m)=addcp11((n-1)*2048+m)*exp(i*2*pi*0.5*m/2048); %加入频偏V以后的各样点值
end
end

%信道模型:带多普勒频移的瑞利衰落信道
fade=[0 0 0.2 0.3]; %多径的幅度
Len=length(addcp11);
f_Len=length(fade);
sch=addcp11;
for m=1:f_Len
sch(1+m:Len)=sch(1+m:Len)+fade(m)*addcp11(1:Len-m);
end

fd=0.25;%多普勒频移

for m=1:length(sch)
addcp11(m)=sch(m)*exp(i*2*pi*fd*m/2048);
%加入频偏V以后的各样点值
end

SNR=15;
noise=awgn(addcp11,SNR);

addcp11=addcp11+noise;

n1=length(addcp11);
for h1=1:n1-1992
as1=0;
if h1<4098
for l1=h1:h1+s21-1
as1=as1+abs(addcp11(l1)*conj(addcp11(l1+M1)))-0.5*(abs(addcp
11(l1))^2+abs(addcp11(l1+M1))^2);
div1=-1./(2*pi)*angle(addcp11(l1)*conj(addcp11(l1+M1)));
end
else
for y1=h1:s21+4096
as1=as1+abs(addcp11(y1)*conj(addcp11(y1+M1)))-0.5*(abs(addcp11(y1)
)^2+abs(addcp11(y1+M1))^2);
div1=-1./(2*pi)*angle(addcp11(y1)*conj(addcp11(y1+M1)));
end
end
p1(h1)=as1;
ff(h1)=div1;
end

figure(1)
plot(p1);
figure(2)
t=1:30:4096;
plot(t,ff(t));

%寻找定时同步的准确位置
% max1=0;
% for m=1:2000
% if p1(m)>max1 %条件判断,如果数组前面的数比其后的小,执行以下语句
% max1=p1(m);
% dml=m;
% end
% end
% fprintf('定时偏差d1的估计值为:%f\n',dml);

参考技术A 嗯,还可以

以上是关于matlab编程:0-1规划问题:向高手求程序代码。的主要内容,如果未能解决你的问题,请参考以下文章

求用动态规划的方法求解简单的整数规划问题的matlab程序或者C++程序代码,高手们帮帮忙

求高手帮忙看一个Matlab 程序

请问如何用MATLAB的intlinprog函数求解0-1规划与指派问题,求具体代码

01规划怎么写matlab程序?

求高手:matlab在legend框里面的换行指令?

fgoalattain能不能解决非线性规划问题 急需!!!!!!望高手指点