C语言最优解算法

C语言最优解算法,第1张

#include<stdio.h>

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、验证各等式条件

按上述要求悔绝编程,运行后可得到如下结果


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12341468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存