Problem-based optimization, Conversion to double from optim.problemdef.OptimizationExpression is not possible.
19 views (last 30 days)
Show older comments
Hi,
I have a optimazition problem on DG allocation using mat-power case30, and when I run the code I face the below error:
"The following error occurred converting from optim.problemdef.OptimizationExpression to
double:
Conversion to double from optim.problemdef.OptimizationExpression is not possible.
Error in lossobj (line 8)
mpc.bus(5,3)=mpc.bus(5,3)-PDg
Error in dg_allocation_problemBased (line 6)
prob = optimproblem('Objective',lossobj(PDg));"
clc;
clear all;
PDg = optimvar('PDg','LowerBound',0,'UpperBound',1);
prob = optimproblem('Objective',lossobj(PDg));z
show(prob)
x0.PDg=0;
[sol,fval,exitflag,output] = solve(prob,x0)
function obj=lossobj(PDg)
mpc=case30;
mpc.bus(5,3)=mpc.bus(5,3)-PDg;
mpopt=mpoption('out.all',0,'verbose',0);
results=runpf(mpc,mpopt);
loss=sum(get_losses(results));
obj=real(loss);
the codes files are attached in zip files.
thanks for your help and support.
0 Comments
Accepted Answer
Alan Weiss
on 19 Dec 2021
To use a general nonlinear function with an optimization variable, you must first convert the function to an optimization expression using fcn2optimexpr. For your problem, after defining PDg, enter
expr = fcn2optimexpr(@lossobj,PDg);
prob = optimproblem('Objective',expr);
Then run the optimization.
Alan Weiss
MATLAB mathematical toolbox documentation
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!