MATLAB约束优化编程出错

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:54:37
各位,我要求800*x11+700*x12+600*x13在条件117<=45x11+36x12+33x13<=146下的最小值,
我一点都不会,但是现在急用,哪位把正确结果写出来,1点之前就要。f=@(x)(800*x(11)+700*x(12)+600*x(13));
A=[45,36,33;-45,-36,-33];
b=[146,117];
x0=[0,2];
>> [x,fval]=fmincon(f,x0,A,b)
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In fmincon at 260
??? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function failed with the following error:
Index exceeds matrix dimensions.
忘了说,这里的未知量求出来还得是整数。谢谢.
我写的程序是f=@(x)(800*x(11)+700*x(12)+600*x(13));
A=[45,36,33;-45,-36,-33];
b=[146;117];
x0=[0;0;0];
>> [x,fval]=fmincon(f,x0,A,b)
主要我要的答案必须是整数

太复杂了
哥们,你的b应当是[146,-117]',忘记了变号。还有初值x0的长度也应该为3

实际上你这个问题如果能找出一组(x0,y0,z0),然后再找出满足45x11+36x12+33x13=0的一组解(x1,y1,z1),那么(x0+x1*t,y0+y1*t,z0+z1*t)就都是可行点,当t趋于负无穷,目标函数的值也就趋于负无穷了

本质上说,你的约束条件相当于三维空间中的两个平面内的区域,任然是个可以延伸至无穷远的开集,约束条件过弱

哥们,你的b应当是[146,-117]',忘记了变号。还有初值x0的长度也应该为3

实际上你这个问题如果能找出一组(x0,y0,z0),然后再找出满足45x11+36x12+33x13=0的一组解(x1,y1,z1),那么(x0+x1*t,y0+y1*t,z0+z1*t)就都是可行点,当t趋于负无穷,目标函数的值也就趋于负无穷了

本质上说,你的约束条件相当于三维空间中的两个平面内的区域,任然是个可以延伸至无穷远的开集,约束条件过弱

太复杂了,没有看的耐心啊

太复杂了