Đến nội dung

Hình ảnh

[Help] Optimization với Matlab bị báo lỗi


  • Please log in to reply
Chưa có bài trả lời

#1
bluechips

bluechips

    Lính mới

  • Thành viên
  • 2 Bài viết

Chào các bạn,

Mình có một vấn đề cần xin trợ giúp về công cụ optimization trong Matlab.

 

Mình cần tìm min của một hàm phi tuyến đa biến f(x1,x2,x3,x4) với một số ràng buộc. Mình định sử dụng hàm fmincon của Matlab để giải. Tuy nhiên, ngay cả khi mình copy bài example của Matlab (bản R2011a) để chạy thì bị báo lỗi, liên quan đến function và biến x.

 

Xin nhờ các bạn giúp đỡ. Dưới đây là đoạn code trong example và lỗi:

 

Find values of x that minimize f(x) = –x1x2x3, starting at the point x = [10;10;10], subject to the constraints:

0 ≤ x1 + 2x2 + 2x3 ≤ 72.

   1.

      Write a file that returns a scalar value f of the objective function evaluated at x:

      function f = myfun(x)
      f = -x(1) * x(2) * x(3);

   2.

      Rewrite the constraints as both less than or equal to a constant,

      –x1–2x2–2x3 ≤ 0
      x1 + 2x2 + 2x3≤ 72
   3.

      Since both constraints are linear, formulate them as the matrix inequality A·x ≤ b, where

      A = [-1 -2 -2; ...
            1  2  2];
      b = [0;72];

   4.

      Supply a starting point and invoke an optimization routine:

      x0 = [10;10;10];    % Starting guess at the solution
      [x,fval] = fmincon(@myfun,x0,A,b);

   5.

      After 11 iterations, the solution is

      x
      x =
          24.0000
          12.0000
          12.0000

      where the function value is

      fval
      fval =
          -3.4560e+03

      and linear inequality constraints evaluate to be less than or equal to 0:

      A*x-b
      ans =
          -72
            0

 

Lỗi:

??? Input argument "x" is undefined.

Error in ==> myfun at 2
f = -x(1) * x(2) * x(3);

 

 






1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh