发布网友 发布时间:2022-10-25 16:27
共2个回答
热心网友 时间:2023-09-11 09:31
呵呵 这个是一个很不容易觉察到的错误1.至于那个warning,不要紧,可以不理他,它只是告诉你没有使用默认的算法,而是换了另外一种。如果你将largescale关闭,并且算法对应设置就不会有这个warning2.对于这个error,这是一个很诡异的东西,如果将你的目标函数保存为myfun.m文件,那么你的代码没有任何问题,可以正常运行,现在问题是你个目标函数不是M文件。我们如下分析下fmincon(myfun....)中的myfun必须是目标函数的句柄或者对应M文件名字符串,记住只能是这两种!!!!当你的目标函数是M文件时,那么我们可以如下调用句柄方式:fmincon(@myfun...)文件名方式:fmincon('myfun'....),由于文件名可以作为M函数来调用当你的目标函数是子函数时,那么只能使用句柄,不能使用函数名字符串,因为函数名在Matlab中是不能直接调用(注意:Matlab调用M函数的时候都是使用M文件名,只是通常将文件名和函数名设置成一样),故此是只能句柄方式:fmincon(@myfun,...)不知道我的意思你明白没有,你可以根据我说明的试试,自己体会下热心网友 时间:2023-09-11 09:31
我能在这求助么,我很急啊,希望别扣我分目标函数:f=0.192457e-4*(x2+2)*x1^2*x3;约束函数:g1=350-163*x1^(-2.86)*x3^0.86;>> g2=0.4e-2*x1^(-4)*x2*x3^3-10;>> g3=3.7*x3-(x2+1.5)*x1-0.44e-2*x1^(-4)*x2*x3^3;>> g4=0.356e6*x1*x2^(-1)*x3^(-2)-375;>> g5=x3/x1-4;>> g6=x1-1;>> g7=4-x1;>> g8=x2-4.5;>> g9=50-x2;>> g10=x3-10;>> g11=30-x3;采用约束坐标轮换法(或者别的优化方法,只要能优化就行)求解,初始设计参数为X0=[2.0,5.0,25.0]T,初始质量为F(X(0))=0.013472kg=13.472g