永发信息网

急 matlab 规划求解中目标函数

答案:2  悬赏:70  手机版
解决时间 2021-01-28 23:39
  • 提问者网友:蓝琪梦莎
  • 2021-01-28 20:24
min⁡q=∑∑xi *xj* bi* bj *m+∑xi^2* N (i j 都是从1到10)
规划求解不是要把目标函数放在m文件里吗,我是这样写的,但是运行不出来,是那个平方不能在m文件里这样设吗?要怎样改,十分感谢!!!!!!
function f=myobjsing(w)
f=x*B'*m+x.^2*N';
end;
说明:其中m是一个常数,x B N 都是(1*10)矩阵
最佳答案
  • 五星知识达人网友:躲不过心动
  • 2021-01-28 20:47
m是一个常数,应该在函数定义文件中先赋值,要不然通过参数传递赋值。
全部回答
  • 1楼网友:山有枢
  • 2021-01-28 21:04
使用匿名函数句柄就可以了 fmincon 需要的函数fun只有一个输入参数 fun(x) 而你的函数需要多一个能改变的变量 那么形式变成 myfun(p,x) p就是你要传递的参数,x还是原来的输入 当然首先,你得写个m文件,假设为myfun.m,其内容大致如下 function [out]=myfun,(p,x) ........... end 就是根据参数p和输入x,求的输出,当然名字可以自己取,然后就是主程序了 for p=p0:pn %参数p的取值 [x,fval]=fmincon(@(x) myfun(p,x),bt0,[],[],[],[],lb,ub,@constr); ....... end 其中关键就是@(x) myfun(p,x) 这会返回一个匿名的函数句柄,会使用当时的p值代入myfun 得到一个只有一个输入x的函数,这样就能把额外的参数传递给需要优化的函数 如果你的函数有等多的参数例如 myfun(a,b,c,x) a=.. b=.. c=.. 同样用@(x) myfun(a,b,c,x)把a,b,c参数的值传给要优化的函数 在以上的基础上,加几句,存储每次的参数p和对应的优化结果 然后画图就可以了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯