CONEPROG:精度问题(Exitflag 7)

8视图(30天)
Holger。莱恩
Holger。莱恩 2021年9月14日
评论道: Aykut Bulut 2021年9月16日
这些天我试图港口对称半正定二次规划问题二次曲线优化问题。至今为止我能够转录成锥规划问题,然而似乎仍然一些选项调整是必要的,因为所有的迭代最终exitflag 7。之前我还需提供规范的问题作为一个圆锥优化问题和评估过程的一个片段,我不久结果接近解决方案的一个例子。此外,值得注意的是,一些例子完成了正确的解决方案,尽管连续的外观exitflag 7。此外,我跟着文档的的建议改变解算器,但这并没有影响。发生了同样的事而改变的公差值
由于后返回结果的一个例子,我觉得我在正确的轨道上,虽然下面的结果是不正确的
x =
8.4966 11.5004 5.5087 23.0781 50.0829
返回的结果的评估如下接近预期的解决方案
pk_bv =
8.5000 11.5000 5.5000 23.0833 50.0833
这让我认为我遇到一些数值的问题我不能本地化。希望不同的角度可以解决这个难题,我现在目前的参数问题。此外,我们有 ,它应该保持平等。
随后被选中的选项设置:
选择= optimoptions (“coneprog”,“OptimalityTolerance”1 e-12“ConstraintTolerance”1 e-12“LinearSolver”,“汽车”)
和锥问题被指定为:
Q = E ' * E;% Q矩阵是对称半正定。矩阵E是由数字1,0,1,这不是广场。
b = - e ' *;
Aineq = [];
bineq = [];
c = (b (:); 1);%目标函数
Asc = sqrtm (Q);
Asc(+ 1)结束,结束(+ 1)= 1;
d =[0(大小(b (:))); 1];
二元同步通信= 0(大小(d));
γ= 1;
socConstraints = secondordercone (Asc,二元同步通信,d,γ);
Aeq = (E (m:), 0);
磅= (vi(:);负);
乌兰巴托= (ra(:);正);
(u, fval exitflag、输出λ)= coneprog (c socConstraints Aineq、bineq Aeq, (m),磅,乌兰巴托,选择)
在这方面,它可能是有用的比较上述问题对称半正定二次规划问题:
[x, fval exitflag、输出λ)= quadprog (Q, b, [], [], E (m:) (m), vi,风湿性关节炎,x,选择);
此外,我希望现在存在的一些片段评估过程观察和输出结构设置的选项。
> > x = cp_kernel (bv)
选择=
coneprog选项:
属性:
ConstraintTolerance: 1.0000 e-12
LinearSolver:“汽车”
OptimalityTolerance: 1.0000 e-12
默认的属性:
显示:“最后一次”
MaxIterations: 200
MaxTime:正
搜索方向是小和当前迭代不是在指定的约束和/或最优公差。
u =
1.0 e + 04 *
0.0008
0.0012
0.0005
0.0023
0.0050
5.2886
fval =
-5.2785 e + 04
exitflag =
7
输出=
结构体字段:
迭代:30
primalfeasibility: 1.0206 e-11
dualfeasibility: 6.6721 e-07
dualitygap: 9.6139 e-12
算法:“内点”
linearsolver:“增强”
信息:的搜索方向是小和当前迭代不是在指定的约束和/或最优公差。
λ=
结构体字段:
eqlin: 94.9844
ineqlin (0 x1双):
soc: 9.9244 e-09
低(6 x1双):
上(6 x1双):
ans =
8.4783 11.8906 5.2411 23.1990 49.8576
exitflag =
7
输出=
结构体字段:
迭代:28
primalfeasibility: 1.0126 e-11
dualfeasibility: 2.3589 e-09
dualitygap: 1.0380 e-11
算法:“内点”
linearsolver:“增强”
信息:的搜索方向是小和当前迭代不是在指定的约束和/或最优公差。
λ=
结构体字段:
eqlin: -6.4447
ineqlin (0 x1双):
soc: 2.7285 e-08
低(6 x1双):
上(6 x1双):
警告:可能没有内核点发现!
在cp_kernel > > computePrk(第215行)
cp_kernel(第102行)
x =
8.4966 11.5004 5.5087 23.0781 50.0829
现在我的问题是:哪些选项必须调整得到正确的结果吗?或有锥问题规范的一个主要缺陷,我忽视了么?
提前谢谢你的支持和任何改进的建议。金宝app
编辑2021年9月15日
感谢的种类和出色的支持Aykut Bulut我能解决上面的精度问题金宝app,调整锥的问题。对于那些正在寻找一些灵感为自己的工作,我现在新配方锥的问题
Aineq = [];
bineq = [];
c =[0(大小(b (:))); 1];%目标函数
Asc = E;
Asc(+ 1)结束,结束(+ 1)= 1;
d =[0(大小(b (:))); 1];
二元同步通信= ';
二元同步通信(结束+ 1)= 0;
γ= 0;
socConstraints = secondordercone (Asc,二元同步通信,d,γ);
Aeq = (E (m:), 0);
磅=[无穷(n + 1, - 1)];
乌兰巴托=[正(n + 1, - 1)];
(u, fval exitflag、输出λ)= coneprog (c socConstraints Aineq、bineq Aeq, (m),磅,乌兰巴托,选择);

接受的答案

Aykut Bulut
Aykut Bulut 2021年9月14日
嗨Holger,
您用于转换的方法是有用的,当你没有因素问:在你的情况下,您可以跳过计算Q和使用sqrtm因子()函数。我认为一些精度可能会丢失和跳过这些操作可能改善了数值。
目标函数是
首先观察到,我们可以把目标函数的常数项。它可以添加一次计算最优解。第二,而不是减少 ,我们可以减少 (注意,我们把指数2 \压裂{1}{2}系数,这些问题同样有相同的最优解集和有效)。金宝搏官方网站接下来,而不是减少 ,我们定义了一个新变量t,迫使它大于等于 在约束和减少t。在这之后,目标函数是t,我们有以下额外的约束。
我认为解决这个问题修改(连同其他约束)将产生更精确的解决方案。金宝搏官方网站这个新问题会有不同的最优的客观价值。然而,一旦你有最佳x的新问题,可以计算出原问题的最优目标函数值通过使用最佳的x值计算。
2的评论
Aykut Bulut
Aykut Bulut 2021年9月16日
谢谢你的反馈。我将通知团队中的示例文档。

登录置评。

更多的答案(0)

类别

找到更多的在二次规划和锥编程帮助中心文件交换

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的