用长8米的角钢切割钢窗用料.每副钢窗含长1.5米的料2根,1.45米的2根,1.3米的6根,0.35米的12根,若需钢窗100副,问至少需切割8米长的角钢多少根?
用长8米的角钢切割钢窗用料.每副钢窗含长1.5米的料2根,1.45米的2根,1.3米的6根,0.35米的12根,若需钢窗100副,问至少需切割8米长的角钢多少根?
思路:
第一步,求出切割模式,8m长能分成多少种有效切割方式L?其判断依据就是:每种切割方式的余料要小于0.35m,否则还可以切割出一块小的有效用料来.
第二步,假设第(i,j,k,s)种切割方法L(i,j,k,s),切割了x(i,j,k,s)根角钢,显然这种切割模式下的得到1.5m的料总数为x(i,j,k,s)*(i-1)根,此数应当大于200.注意:为了lingo程序表达的需要,在这里L(i,j,k,s)切割模式下1.5m的角钢为i-1根.
第三步,将所有的各种切割方法L下的x加和起来,则其和为优化目标,使之最小,求解之.
程序代码:
model:
sets:
aa/1..6/:an;!某种切割模式下,8m的角钢切完后,1.5m的料有an根(an=0~5共6种可能取值);
bb/1..6/:bn;!某种切割模式下,8m的角钢切完后,1.45m的料有bn根(bn=0~5共6种可能取值);
cc/1..7/:cn;!某种切割模式下,8m的角钢切完后,1.3m的料有cn根(cn=0~6共7种可能取值);
dd/1..23/:dn;!某种切割模式下,8m的角钢切完后,0.35m的料有dn根(dn=0~22共23种可能取值);
LL(aa,bb,cc,dd):L,x;
!L(i,j,k,s)代表这样一种切割模式:一根8m的角钢切完后,1.5m料切出i-1根,1.45m料切出j-1根,1.3m和0.35m类似,如果切割总长不超出8m,且余料不超出0.35m,则为有效切割,记L(i,j,k,s)=1,否则这种切割模式不能实现或者无效,记L(i,j,k,s)=0;
!这里的x(i,j,k,s)代表第L(i,j,k,s)种切割模式下切割8m角钢的数目;
endsets
min=@sum(LL:x);
@for(aa(i):an(i)=i-1);
@for(bb(j):bn(j)=j-1);
@for(cc(k):cn(k)=k-1);
@for(dd(s):dn(s)=s-1);
@for(aa(i):@for(bb(j):@for(cc(k):@for(dd(s):L(i,j,k,s)=@if(((an(i)*1.5+bn(j)*1.45+cn(k)*1.3+dn(s)*0.35)#gt#7.65)#and#((an(i)*1.5+bn(j)*1.45+cn(k)*1.3+dn(s)*0.35)#le#8),1,0)))));
n=@sum(LL:L);
@sum(LL(i,j,k,s):L(i,j,k,s)*x(i,j,k,s)*an(i))>200;
@sum(LL(i,j,k,s):L(i,j,k,s)*x(i,j,k,s)*bn(j))>200;
@sum(LL(i,j,k,s):L(i,j,k,s)*x(i,j,k,s)*cn(k))>600;
@sum(LL(i,j,k,s):L(i,j,k,s)*x(i,j,k,s)*dn(s))>1200;
@for(LL:@gin(x));
end
运行结果为:有效切割模式59种,最小需切割224根角这是一道考研的数学建模题,请问他的数学模型怎样列出来?能说下建模的详细过程吗?总共需要几个X建模?