MATLAB Answers

I've got a problem with optimization and using a variable for exponent

26 views (last 30 days)
Minsu Seo
Minsu Seo on 26 Feb 2020
Commented: Minsu Seo on 28 Feb 2020
Here is my matlab codeR
x = optimvar('x','type','integer','LowerBound',0,'UpperBound',48);
y = optimvar('y','type','integer','LowerBound',0,'UpperBound',48);
obj = fcn2optimexpr(@objfunx,x,y);
prob = optimproblem('Objective',obj);
con1 = x <= 48; prob.Constraints.constr = con1;
con2 = y <= 48; prob.Constraints.constr = con2;
con3 = (1-((0.2.^x))) + ((0.2.^x)).*(1-((0.3.^y))) >= 0.99;
prob.Constraints.constr = con3;
x0.x = 0; x0.y = 0;
function f = objfunx(x,y)
f =(60).*(x) + ((0.2.^x)).*(y).*(20);
and I got this error message
Error using optim.internal.problemdef.Power
Exponent must be a finite real numeric scalar.
Error in .^
Error in Test (line 8)
I want to get solution x, y
how can I solve this problem? I'm going to appreciate if you give me whole code


Sign in to comment.

Accepted Answer

Alan Weiss
Alan Weiss on 27 Feb 2020
Edited: Alan Weiss on 27 Feb 2020
Optimization Toolbox™ does not support general nonlinear integer programming. Use ga or surrogateopt for nonlinear integer programming.
Or, for this problem, you could do exhaustive search; there are fewer than 2500 = 50^2 possibilities.
Alan Weiss
MATLAB mathematical toolbox documentation

  1 Comment

Minsu Seo
Minsu Seo on 28 Feb 2020
Thanks Alan Weiss, I already solved this problem with exhaustive search you mentioned.
I just wondered if I could solve that problem using some internal function that the MATLAB provides.
Your answer is really helpful for me and thank you again.

Sign in to comment.

More Answers (0)

Sign in to answer this question.




Translated by