题目:
某种电子系统由三种元件组成,为了使系统正常运转,每个元件都必须工作良好,如果一个或多个元件安装备用件将会提高系统的可靠性,已知系统运转的可靠性为各元件可靠性的乘积,而每一个元件的可靠性是备用元件函数,具体数值见下表。
若全部备用件费用限制为150元,重量限制为20公斤,问每个元件安装多少备用件可使系统可靠性达到极大值?
要求:①作出全局最优解
②列出这个问题的整数规划模型
假设:系统在运转过程中相互间没有影响,并且系统在增加备用件后
可靠性可以相互叠加。
建模:
设原件1,2,3需要的备用件各为x,y,z,可靠性为p分别为xp,yp,zp,整
个设备的可靠性为p,则由题意可得到:
p=xp*yp*zp;
2x+4y+6z<=20;
20x+30y+40z<=150;
x,y,z均为整数;
求出适当的x,y,z使p的值最大。
运用穷举法,编写C++程序如下:
#include<iostream>
void main()
{
using namespace std;
int x=0,y=0,z=0;//备À?用®?零¢?件t数ºy目?
double xp[6]={0.5,0.6,0.7,0.8,0.9,1},yp[4]={0.6,0.75,0.95,1},zp[3]={0.7,0.9,1};
double p=0,temp=0;//可¨¦靠?性?
int i=0,j=0,k=0;
cout<<"x\ty\tz\tp\n";
for(i=0;i<6;i++)
{ y=0;
for(j=0;j<4;j++)
{ z=0;
for(k=0;k<3;k++)
{if((x+2*y+3*z<=10)&&(2*x+3*y+4*z<=15))
{temp=p;
p=xp[x]*yp[y]*zp[z];
cout<<x<<"\t"<<y<<"\t"<<z<<"\t"<<p<<endl;
if(p<temp)
p=temp;
z++;}
else z++;}
y++;}
1 0
2 0.36 1 1 0 0.315 1 1 1 0.405 1 1 2 0.45 1 2 0 0.399 1 2 1 0.51
3 1 3 0 0.42 1 3 1 0.5
4 2
0.294
2
0 1 0.378 2 0 2 0.42 2 1 0 0.3675 2
1
1
0.4725
x++;}
cout<<endl<<p<<endl;
}
运行程序结果如下:
x y z p 0 0 0 0.21 0 0 1 0.27 0 0 2 0.3 0 1 0 0.2625 0 1 1 0.3375 0 1 2 0.375 0 2 0 0.3325
0 2 1 0.4275 0 2 2 0.475 0 3 0 0.35 0 3 1 0.45 1 0 0 0.252 1
0 1
0.324
得到最大可靠系数为0.6075,对应1,2,3零件数为4,1,1
模型应用:在资源一定的条件下,这种解决方式可使资源的最佳利用率提高。
结果分析:此解为全局最优解 另附:
同样,利用Lingo 软件也可以使用此解决方案的求解过程,求解时要注意运用线性规划方法可以得到最优解
2 1 2 0.525 2 2 0 0.4655 2 2 1 0.5985 2
3 0 0.49 3 0 0 0.336 3 0 1 0.432 3 0 2 0.48 3 1 0 0.42 3
1
1
0.54
3 2 0 0.532 3 3 0 0.56
4 0 0 0.378 4
1
0.486
4 1 0 0.472
5 4 1 1 0.6075 4 2 0 0.5985 5 0 0 0.42 5 0 1 0.54 5 1
0.525
0.6075。