问题标签 [non-convex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
261 浏览

algorithm - 具有自相交的多边形分解

如何将具有自相交的多边形分解为一组简单多边形?

输入多边形 P = {p1, ... pn} 由具有 CCW 方向的 n 个顶点的集合给出。我想对一组 m 个多边形 P1,...,Pm 执行分解。

在此处输入图像描述

从交叉路口到下一个路口的路段简单步行不会带来任何效果;有 2 个线段具有相同的起点,由交点表示。

可能,一些词典排序的边缘可能会有所帮助......

0 投票
1 回答
531 浏览

indexing - Q1 is not convex error while using decision variable in index

In my model, first I calculate the number of ports in which ship drop the cargo

Then I want to use this number as the index of "t",in the form of

I'm faced with

error:5002 q1 is not convex

How I can solve this problem?

0 投票
1 回答
847 浏览

python - skimage或python中一般物体凹度的度量

我有一个代码,在某些时候我得到一组二维二进制 numpy 数组来表示主要是椭圆和圆的对象(细胞核)

我需要一个关于边缘有多粗糙(锯齿状)的度量。病理学文献中有核轮廓指数:周长/ sqrt(面积)这是有效的,但在我们的例子中,我们特别需要看看周长有多“粗糙”。椭圆和圆形的核轮廓指数是不同的,即使它们都有光滑的边缘。在我们的例子中,一个带有粗糙边缘的圆比一个带有光滑边缘的椭圆更重要

我考虑过使用此处解释的凸包:我认为在这种情况下,对于许多小凹度(这对我们来说是重要的情况)和一个主要的凹度(这不是那么重要)来说,度量是否相同,就像图片中一样以下。在此处输入图像描述

我也尝试过openCV,但是我发现很难从数学上理解那里实际发生的事情,它看起来非常像skimage凸面外壳,我更愿意坚持使用skimage

0 投票
0 回答
148 浏览

python - 神秘优化器的不收敛

我正在尝试优化功能objective

full_constr_data由 6 类目标组成,每个目标按年份划分,每年由基于项目的数据表示。因此,我通过functionfull_constr_data的参数对项目进行加权,例如意味着“目标 #0,年份 #2,项目 #3 的加权结果存储在变量中。xobjectivefull_constr_data[0][2][3] * x[3]x[3]full_constr_data_weighted

下一步是对full_constr_data_weighted. 例如,将目标 #0、第 2 年的所有项目相加:

full_constr_data_weighted[0][2][0] + full_constr_data_weighted[0][2][1] + ... + full_constr_data_weighted[0][2][n]

其中'n' - 项目总数。数据存储在变量中full_sum

之后,我正在计算概率。我从变量中取分位数,constr_mod并根据该值计算超过分位数的概率。constr_mod并且full_sum具有完全相同的结构,但是对于每个目标 # 和接下来的一年 #constr_mode包含一个值,同时full_sum具有值​​向量(分布)。计算出的概率存储到变量my_prob中。

最后,我总结了my_prob. 我必须优化这个总和:使其尽可能大(注意return语句中的减号)。

优化问题有一个不等式约束:obj加权向量的总和x应大于 1000。解释obj为每个项目的 NPV。

我使用diffev2from package mystic

变量full_constr_data, constr_mod, pen_mult,obj存储在my_data.spydata file:通过 Google Drive 下载

不幸的是,优化没有收敛:

有什么建议可以解决这个非凸问题吗?

0 投票
0 回答
14 浏览

optimization - 哪个求解器可以求解具有二次非凸等式约束的分数线性(成本函数)?

首先,我是优化的菜鸟。我有以下问题:

我有优化vector x=(x1, x2, x3, x4, x5, x6)。成本函数为:

min. (x3+x4)/x6

约束是:

我最大的问题是为这个问题找到一个合适的解决方案。我已经找到了 Boyd 的分数线性规划的概念:https ://web.stanford.edu/~boyd/cvxbook/bv_cvxslides.pdf (4-20)

但是,它需要线性约束。我还发现了解决二次等式约束问题的启发式方法:https ://pdfs.semanticscholar.org/6008/57c54df025e732238425cf55f55997b4a67c.pdf https://web.stanford.edu/~boyd/papers/pdf/qcqp.pdf

但是,我认为它们不适合将它们与线性分数规划结合起来。

如果有人能提到这个问题的任何解决方案,我会很高兴。

最好的问候狮子座

我试图对不同随机点周围的约束进行线性化,并以最低的成本获得结果。但是,该解不能满足二次等式约束。

0 投票
1 回答
16 浏览

optimization - 无法在起点评估约束

我正在将 MINLP 与 NEOS 求解器一起使用,我的问题是非凸的,我明白了

这是什么意思,我该如何解决?

0 投票
1 回答
482 浏览

python-3.x - 如何在 Mystic 中应用不等式约束

我正在尝试使用 Mystic 最大化受不平等约束的目标,但我正在努力了解如何应用惩罚约束。这个问题是非凸的,涉及最大化目标,其中只有一个变量会改变 (x)。我正在尝试 Mystic,因为我听说它有利于大规模优化,并且 x 是一个包含数百万个项目(大小 N)的一维数组。

存在三个由数字 a、b 和 c 组成的一维数组,它们都有 N 个值(a 和 b 中的值在 0-1 之间)。x 中的每一项都将大于 >= 0

我已经看到了使用generate_penaltyandgenerate_constraint函数的示例,并认为我可以使用以下方法实现约束,但没有成功:

一般来说,任何关于如何应用惩罚约束的建议或使用 Mystic 的建议都会受到赞赏。Github 上有很多例子,但很难看出哪一个适合借鉴。我已经使用 SLSQP 实现了 Scipy 最小化的解决方案,但它在所需的规模上太慢了。

0 投票
1 回答
2561 浏览

optimization - 在 Pytorch 中执行优化时如何对变量应用边界?

我正在尝试使用 Pytorch 进行非凸优化,试图最大化我的目标(因此在 SGD 中最小化)。我想绑定我的因变量 x > 0,并且我的 x 值的总和小于 1000。

我认为我已经以斜坡惩罚的形式正确实施了惩罚,但我正在努力解决 x 变量的边界问题。在 Pytorch 中,您可以使用设置边界,clamp但在这种情况下似乎不合适。我认为这是因为 optim 需要在引擎盖下释放渐变。完整的工作示例:

任何关于如何强加边界的建议都将受到赞赏,无论是使用钳位还是其他方式。或者一般建议使用 Pytorch 进行非凸优化。这是我正在解决的问题的一个更简单且按比例缩小的版本,因此如果可能的话,我试图找到一个轻量级的解决方案。我正在考虑使用一种解决方法,例如使用指数函数转换 x 变量,但是您必须缩放函数以避免正值变为无限,并且我希望能够设置约束具有一定的灵活性。

0 投票
0 回答
97 浏览

optimization - 支持复杂变量的优化建模语言

我正在寻找支持复杂变量(具有实部和虚部的变量)和非线性问题的 Python 优化建模库,例如 CVXPY 和 Pyomo。CVXPY 支持复变量,但不支持约束的非线性函数。另一方面,Pyomo 可以支持非线性问题,但不支持复变量。

总之:我正在研究一个带有一些复杂变量的大规模非线性和非凸优化问题,我正在寻找类似 cvxpy 来解决这些类型的问题。

有什么建议么!谢谢

0 投票
1 回答
90 浏览

optimization - 外罚函数法

我正在尝试实现一种外部惩罚函数方法来最小化以下问题。

最小 f(x)=100*(x(2)-x(1)^2)^2+(1-x(1))^2

st, x(1)+2x(2)<=1

2x(1)+x(2)=1

首先,我找到了最小的 using fmincon,答案是x:array([ 0.4149, 0.1701])f(x)=0.34.

然后我试图使用我的外部惩罚函数方法的实现来找到最小值。我正在使用这个惩罚函数:

F(x,a)=f(x)+a*(x(1)+2*x(2)-1)^2+a*(2*x(1)+x(2)-1)^ 2

与起点x_0=[1,1], a=10(在每次迭代中 a= a^2) ,这给了我x:array([ 0.3333, 0.3333])f(x)=5.3.

我的实施中的错误在哪里?谢谢。