求助编程大神!!matlab
想用matlab实现以下几个目的1,c=【364128256512】f=【6425612851232】求出c和f在五种不同取值情况下(c/pc)*(f/pf)的最小值。2...
想用matlab实现以下几个目的
1,c=【3 64 128 256 512】f=【64 256 128 512 32】求出 c和f在五种不同取值情况下(c/pc)*(f/pf)的最小值。
2,其中pc和pf 是1-1024里面的任一整数。要求是
pc *pf<=1024。
求出满足以上条件的五种pc和pf。 展开
1,c=【3 64 128 256 512】f=【64 256 128 512 32】求出 c和f在五种不同取值情况下(c/pc)*(f/pf)的最小值。
2,其中pc和pf 是1-1024里面的任一整数。要求是
pc *pf<=1024。
求出满足以上条件的五种pc和pf。 展开
1个回答
展开全部
题主给出问题属于极小值问题,即
min c/pc*f/pf
st. pc*pf≤1024,且pc、pf>0
分析了该问题不宜使用fmincon函数来求其极值(有不确定的因素存在),可以考虑用ga遗传算法函数求解。该求解思路如下:
1、创建自定义极小值函数,其主要代码
if pc*pf>1024 %判断pc*pf是否小于等于1024
f1=inf;
else
f1=c/pc*f/pf;
end
2、使用for循环语句,分别将c和f值赋值给自定义函数
for i=1:5
c=c0(i);
f=f0(i);
。。。
end
3、使用ga函数求其pc和pf值,即
A=[];b=[];Aeq=[];beq=[];lb=[0,0];ub=[50,50];
[x,fval,exitflag]=ga(@ga_minfun,2,A,b,Aeq,beq,lb,ub);
这里,pc=x(1);pf=x(2)
4、使用ceil函数对x进行圆整处理
5、验证约束条件:pc*pf≤1024
6、按上述思路完善代码,运行后得到如下结果。
追问
您好,可以详细看一下您的代码吗? 感激不尽
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询