What's wrong with my objective function?

1 vue (au cours des 30 derniers jours)
Richárd Tóth
Richárd Tóth le 3 Août 2019
Commenté : Star Strider le 3 Août 2019
Hello
When I run this line of code,
[d,fval] = fseminf(@objfun,x0,numOfInequations,@semInfConstraints);
I get the following error:
Input arguments to function include colon operator. To input the colon character, use ':' instead.
Error in fseminf (line 424)
initVals.f = initVals.f(:);
Error in optimize (line 29)
[d,fval] = fseminf(@objfun,x0,numOfIneqs,@semInfConstraints);
Here is my objective function:
function f = objfun(D,s)
global numOfVars
% Objective function, -1*D(1)*D(2)*...*D(n) /n dimension/
str = 'f=@(D) -1*';
dimension = numOfVars;
for i=1:dimension
if i<dimension
str = join([str 'D(' string(i) ')*'],'');
else
str = join([str 'D(' string(i) ');'],'');
end
end
eval(str);
  3 commentaires
Richárd Tóth
Richárd Tóth le 3 Août 2019
Okay, I think the problem is
str = 'f=@(D) -1*';
By removing the @(D), I no longer get the error message about the colon.
Star Strider
Star Strider le 3 Août 2019
If you want to create a functon from a string, use the str2func function. It likely does everything you’re doing, however it’s more straightforward. Also,using sprintf to create your function strings is likely more efficient than concatenating strings.

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Linear Programming and Mixed-Integer Linear Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by