How to define objective for this optimization problem?

7 visualizaciones (últimos 30 días)
Barbab
Barbab el 9 de Dic. de 2021
Comentada: Alan Weiss el 9 de Dic. de 2021
My objective is:
subject to:
where k and h are two given vectors of size N. For this objective I tried:
x = optimvar('x',1,2,3,'LowerBound',0)
x =
1×2×3 OptimizationVariable array with properties: Array-wide properties: Name: 'x' Type: 'continuous' IndexNames: {{} {} {}} Elementwise properties: LowerBound: [1×2×3 double] UpperBound: [1×2×3 double] See variables with show. See bounds with showbounds.
k = rand(100,1);
h = rand(100,1);
obj = sum((x(1) + x(2)/x(3) * (k.^(-x(3))-1) - h).^2,'all')
Error using optim.internal.problemdef.operator.PowerOperator
Exponent must be a finite real numeric scalar.

Error in optim.internal.problemdef.Power

Error in .^
What is the proper way to define the objective? What's the best solver?
  2 comentarios
Walter Roberson
Walter Roberson el 9 de Dic. de 2021
You appear to be using Problem Based Optimization rather than Solver Based.
We do not know what your z(3) is, but the context of the error message hints it might be one of your optimization variables.
Barbab
Barbab el 9 de Dic. de 2021
Sorry, I edited my question, the problem is not connected to the optimization variables:
x = optimvar('x',1,2,3,'LowerBound',0)
x =
1×2×3 OptimizationVariable array with properties: Array-wide properties: Name: 'x' Type: 'continuous' IndexNames: {{} {} {}} Elementwise properties: LowerBound: [1×2×3 double] UpperBound: [1×2×3 double] See variables with show. See bounds with showbounds.
k = rand(100,1);
h = rand(100,1);
obj = sum((x(1) + x(2)/x(3) * (k.^(-x(3))-1) - h).^2,'all')
Error using optim.internal.problemdef.operator.PowerOperator
Exponent must be a finite real numeric scalar.

Error in optim.internal.problemdef.Power

Error in .^

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 9 de Dic. de 2021
  • x and y represent optimization arrays of arbitrary size (usually the same size).
  • a is a scalar numeric constant.
Supported operations
  • Pointwise power x.^a
Look through that list and notice that a.^x is not one of the supported operations. You cannot use problem-based optimization to take a constant to a power that is an optimization variable.
  3 comentarios
Walter Roberson
Walter Roberson el 9 de Dic. de 2021
That just might work.
Alan Weiss
Alan Weiss el 9 de Dic. de 2021
Yes, indeed. See the Note on the page Walter linked.
Alan Weiss
MATLAB mathematical toolbox documentation

Iniciar sesión para comentar.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by