slack variables in optimization: a different usage

6 ビュー (過去 30 日間)
RPatel
RPatel 2017 年 10 月 11 日
コメント済み: RPatel 2017 年 10 月 27 日
Hello, I have an optimisation problem with equalities and inequalities.
A x < b is an inequality, with x,b being a vector.
If the problem is infeasible with b, I want to allow b to change to b*, only enough for the problem to be solved and (b*-b) should be heavily punished. This corresponding cost would be k*ϵ, where k = 10^6 for example. Thus, my slack variable is ϵ = b* - b > 0.
How could I formulate this in matlab? I am using quadprog for optimization.
Thanks,

回答 (1 件)

Carl
Carl 2017 年 10 月 13 日
I don't believe this functionality is built into the quadprog function, or for the Optimization Toolbox in general. The closest thing I was able to find was the ConstraintTolerance option:
The documentation page here gives a good explanation of that tolerance value. If your problem cannot be solved with the current value of b, you can try increasing the value of ConstraintTolerance.
  1 件のコメント
RPatel
RPatel 2017 年 10 月 27 日
Thanks Carl for your response. Please refer to my follow up... 1. An issue with this approach is that if there are multiple agents, corresponding to which I have different values of b, I would ideally like to change the value of the constraint tolerance corresponsing to the agent which causes failure of quadprog. This agent which is the reason behind quadprog returning infeasible is difficult to be found (or is it otherwise?). Thus, If I apply your approach, I will be increasing constraint tolerance for all agents, which is not really what I would want (as this would result into a huge increase in the cost). 2. Do you see this feature being updated/available to the Matlab users in near future?
Thanks :)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSurrogate Optimization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by