作业帮 > 综合 > 作业

matlab求助,急.一个规划的题目 max R=m(y-b)+k*b-0.25(a+b)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 06:01:05
matlab求助,急.一个规划的题目 max R=m(y-b)+k*b-0.25(a+b)
其中 0〈y〈= X,X为常数,比如取30;
m为常数,比如取16.8;
k也为常数.比如取2;
而且 b〈=y.
如果解不出来,可以令a为常数,比如120,给我个程序.
我想做个循环,X分别取10:50,结果怎么样?
谢谢大哥大姐.
%你的这些条件没法求出最大值得,b可以取负值,得出是无穷大
%我跟你说下程序,附加条件b>0,自变量y和b,其他为常数
clear
clc
%常数设置
m=16.8;
kc=2;%与循环冲突用kc表示k
a=120;
%精度设置(精度值不要设置太小,容易溢出)
jdy=1;%y的精度
jdb=0.1;%b的精度
%x范围
x=10:50;
%设一个三维矩阵R来储存数据R(y值/jdy ,b值/jdb,x值)
%比如R(1,2,3)表示y值为jdy*1,b值为jdb*2,x值为x(3)=12
row=x(end)/jdy;
column=x(end)/jdb;
xlei=length(x);
R=zeros(row,column,xlei);
for i=1:xlei
for j=1:x(i)/jdy
for k=1:x(i)/jdb
if (k*jdb)0
end
end
end
end
%最大值
max(R(:))
% 最大值坐标
[maxpoy,maxpob,maxpox] = ind2sub(size(R),indmax);
%求的x、y和b值
y_iter=maxpox*jdy
b_iter=maxpob*jdb
x_iter=x(maxpox)
%根据上面的值再缩小x、y、b的范围继续增加精度寻找
%我只能想到这种方法
%matlab里应该还有更方便的方法,求高手指教