필터 지우기
필터 지우기

Problems with fmincon constraints

조회 수: 3 (최근 30일)
Edgard El Cham
Edgard El Cham 2017년 10월 25일
댓글: Edgard El Cham 2017년 10월 25일
Hello,
I am writing an algorithm for a project of mine, and at some point I need to find the value of alpha that will minimize a function subject to constraints.
This is what I have
x1=xi(1)+gammai(1)*alpha;
x2=xi(2)+gammai(2)*alpha;
x3=xd(1)+deltad(1)*alpha;
x4=xd(2)+deltad(1)*alpha;
falpha =matlabFunction((exp(x1))*(4*(x1).^2 + 2*(x2).^2 + 4*(x1)*(x2) + 2*(x2) + 1) + 0*x3 + 0*x4);
c=matlabFunction([-10-x1; x1+9; -x2+1;x2-1.5;-x3;x3-1;-x4;x4-1]);
ceq=matlabFunction([x1*x2-x1-x2+x3+1.5;x1*x2-x4+10]);
const=[c, ceq];
[alpha]=fmincon(falpha,0,[],[],[],[],[],[],const);
This is the error I get: Error using horzcat Nonscalar arrays of function handles are not allowed; use cell arrays instead.

채택된 답변

Walter Roberson
Walter Roberson 2017년 10월 25일
const = @(alpha) deal(c(alpha), ceq(alpha));

추가 답변 (1개)

Matt J
Matt J 2017년 10월 25일
편집: Matt J 2017년 10월 25일
As the error says, your const argument must be a single function handle returning two arguments [c,ceq]. You instead have passed two separate function handles.
  댓글 수: 4
Edgard El Cham
Edgard El Cham 2017년 10월 25일
Thing is I need to run it in a loop, with changing constraints.
Matt J
Matt J 2017년 10월 25일
That can be done by passing fixed parameters to the constraints.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Solver-Based Nonlinear Optimization에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by