求助编程大神!!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。
展开
 我来答
lhmhz
高粉答主

2021-12-29 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17009

向TA提问 私信TA
展开全部

题主给出问题属于极小值问题,即
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、按上述思路完善代码,运行后得到如下结果。

追问
您好,可以详细看一下您的代码吗? 感激不尽
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式