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

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;
show(prob)
function f = objfunx(x,y)
f =(60).*(x) + ((0.2.^x)).*(y).*(20);
end
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

 采纳的回答

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 个评论

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.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息

产品

版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by