Function or constraints have too few arguments on the right to satisfy the left
조회 수: 1 (최근 30일)
이전 댓글 표시
I'm trying to optimize this equation:
f=@(x) 0.25*7850*pi^2*x(1).^2.*x(2).*x(3)
with this set of constraints:
g=@(x) [8*75./x(5)-7; 3.5-2*pi*sqrt(75^2/(4*75.*x(4)-x(5).^2)); 100*exp(-pi.*x(5)./sqrt(4*75.*x(4)-x(5).^2))-15; x(2)-0.75; 75*9.81.*(1.566.*x(1).^2-0.9295.*x(1).*x(2)-2.546.*x(2).^2)./(x(1).^3.*(x(1)-x(2)))-517.1*10^6; 78*10^9.*x(1).^4./(8.*x(2).^3.*x(3))-x(4)];
I'm using the fmincon function in the Optimization toolbox, but no matter what algorithm I select, I see the error "The right hand side of this assignment has too few values to satisfy the left hand side" with no further details. I have been trying to figure out the cause of this error, but I'm having difficulty figuring out what, specifically, the error is referring to.
댓글 수: 2
Richard Brown
2012년 4월 26일
could you provide the full call to fmincon, with any other constraints that you are passing in
채택된 답변
Richard Brown
2012년 4월 26일
Your nonlinear constraints need to be in a function of the form
function [c, ceq] = g(x)
c = [8*75./x(5) .......
ceq = [];
end
MATLAB was complaining because there was no equality constraint information being passed out (even there are no equality constraints).
댓글 수: 7
Teja Muppirala
2012년 4월 26일
There's a neat trick you can do with anonymous functions to make them return more than one value.
F = @(x) deal( x(1) + x(2), x(1) - x(2) )
[a,b] = F([5 2])
I sometimes use this when trying simple things out in scripts and I don't want to have to save a file.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Nonlinear Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!