
int result[100][6]
int data[100000][2]
int main()
{
int i,j,T,f,temp,rlen=0,dlen,swap
scanf("%d",&T)
while(T-->0)
{
for(dlen=01dlen++)
{
scanf("%d %d",&data[dlen][0],&data[dlen][1])
if(0==data[dlen][0] &&0==data[dlen][1])
break
}
scanf("%d",&f)
for(i=0i<dlen-1i++)
{
for(j=0j<dlen-i-1j++)
{
swap=0
if(0==f)
{
if(data[j][0]>data[j+1][0] || (data[j][0]==data[j+1][0] &&data[j][1]>data[j+1][1]))
{
swap=1
}
}
else if(1==f)
{
if(data[j][1]>data[j+1][1] || (data[j][1]==data[j+1][1] &&data[j][0]>data[j+1][0]))
{
swap=1
}
}
if(1==swap)
{
temp=data[j][0]
data[j][0]=data[j+1][0]
data[j+1][0]=temp
temp=data[j][1]
data[j][1]=data[j+1][1]
data[j+1][1]=temp
}
}
}
if(dlen>=3)
{
for(i=0i<3i++)
{
result[rlen][2*i]=data[i][0]
result[rlen][2*i+1]=data[i][1]
}
rlen++
}
}
for(i=0i<rleni++)
{
printf("Case #%d:\n",i+1)
for(j=0j<3j++)
printf("%d %d\n",result[i][2*j],result[i][2*j+1])
}
return 0
}
题主给出线性规划问题,可以用fmincom函数求得最优解。
求解思路:1、创建自定义目标函数,myfun(x),即f=10*a*h2、耐帆创建自定义约束条件函数,mycon(x),即
(1)不等式条件
0.5≤b/a≤2
0.5≤c/(10-b)≤2
0.5≤(a-c)/(10-b)≤2
0.5≤(c+10-b)/(2*h)≤2
0.5≤(a-c+10-b)/(2*h)≤2
0.5≤(a+b)/(2*h)≤2
(2)昌前雹等式条件
(a*b*(h-2))=200
(10*b*c*(h-4))=35
((10-b)*a*c*(h-4))=105
3、初定x的初值,即x0=rand(1,4)
4、确定x的上限值,即lb值,lb=zeros(1,4)
5、确定x的下限值,即ub值,ub=ones(1,4)*20
6、使用fmincon函数,求其a、b、c、V值
[x,fval,exitflag] = fmincon(@(x) myfun(x),x0,A,b,Aeq,beq,lb,ub,@(k) mycon(k))
a=x(1)b=x(2)c=x(3)h=x(4)
7、验证各等式条件
按上述要求悔绝编程,运行后可得到如下结果
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)