How to solve a non-polynomial constrained optimization problem in Matlab

2 visualizaciones (últimos 30 días)
Hi guys,
I have the following optimization problem:
I can't use the function quadprog, since it has a 3rd degree element, and i can't use the functions: fminbnd, fmincon and fseminf either because it has a differentiation (non-polynomial) element in it. Does anyone know which Matlab function I can use to solve this, or if it is even possible?
Kind regards, Dennis
  3 comentarios
Dennis
Dennis el 13 de Mzo. de 2017
Yes, X is actually a velocity, and the cost function is an equation for the power usage which also depends on the inertia.
Ax <= b , is the set of constraints. The set of constraints contain the minimum and maximum velocity that can be driven at specific points of time.

Iniciar sesión para comentar.

Respuestas (1)

Arvind Narayanan
Arvind Narayanan el 27 de Mzo. de 2017
Hi Dennis,
The problem can be looked at in different ways:
1) Since x is a function of t (assuming it is a function of only t and no other independent variable), that means the actual independent decision variable is t. Hence, you can try rewriting the constraints as well as the objective function to match that. That way, the problem can be converted to a single-variable constrained optimization problem in t, which can be solved using fminbnd or fmincon or fseminf.
2) x is velocity. That means, dx/dt would be acceleration. Let a=dx/dt. Assuming you have the relation between x and t, you can evaluate the constraints on a, w.r.t the constraints on x. Hence you will have the objective function and the constraints in x and a and you will be able to solve the same as a multi-variable constrained optimization problem in a and x, which can be solved using fmincon.
3) If you have the input as well as the results of the objective function within the domain of the decision variable, then you can use the lsqcurvefit function to determine the coefficients of the curve that can be fit to the objective function. Once the curve is determined, you may find its global minima and that will be the result of your optimisation problem. Refer to this link for documentation on lsqcurvefit function: lsqcurvefit You may also use the lsqonlin function which is a nonlinear least-squares solver: lsqnonlin
Regards,
Arvind

Categorías

Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by