Using maximum of optimisation variable as an upper bound for another variable

Hello
I am trying to minimise a cost function where the investment cost is the the maximum value of an optimisation variable multiplied by the cost e.g.
Total cost=Cost per kW*MaxkW
However, matlab doesn't seem to like using an optimisation variable as a boundary condition.
Any solutions?
Thanks
Michael

 채택된 답변

Matt J
Matt J 2019년 10월 7일
편집: Matt J 2019년 10월 7일
Solve N different sub-problems
for j=1:N
prob.Constraint.TotalCost = sum(x)=CostPerkW*x(j);
prob.Constraint.Max = x(j)>=x; %x(j) is the maximum
[X{j} Cost{j}]=solve(prob)
end
and take the X{j} with the lowest Cost{j}.

추가 답변 (4개)

Ted Shultz
Ted Shultz 2019년 8월 21일
you can do a bounded obtimization using this file from filecentral: fminsearchbnd
Bruno Luong
Bruno Luong 2019년 8월 21일
Not sure what you mean by "boundary condition" (there is no such thing in all optimization frameworks as far as I know), but take a look at fminmax
Naveen Venkata Krishnan
Naveen Venkata Krishnan 2019년 10월 7일
Hello Micheal,
Based on the question, I understood the problem in this way , please correct me if am wrong :
"You want to minimize a cost function in such a way that optimization variable lies close to its upper boundary region ".
If this the requirment one way to do it to confine the search space of the optimizer close to upper boundary ( like giving the values of upper - ub and lower boundary - lb of the optimzation variable around the maximum value of the optimization variable ) .
Another way is by using an enforcement operator, i think the following IEEE paper may be of some help to you reg this.
Michael-Allan Millar
Michael-Allan Millar 2019년 10월 7일
Thanks very much for the help, everyone.
Basically, it's sizing a tank and heat pump. So the bigger the tank, the lower the operating cost but greater initial investment. I ended up doing it the way Matt J suggested, but was hoping there would be a way to give a single answer, rather than having to produce a list then manually picking the smallest cost.
Thanks again!
Michael

댓글 수: 1

Well, you don't have to "manually" pick. You would just do
[~,jmin]=min([Cost{:}]);
x=X{jmin};

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

제품

릴리스

R2019a

질문:

2019년 8월 12일

댓글:

2019년 10월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by