问题标签 [objective-function]
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.
python - 使用已知目标函数实现梯度下降
我有一篇论文中的目标函数,我想用梯度下降来最小化。我还没有“从头开始”做这件事,并且想要一些关于如何手动编码的建议。目标函数为:
T(L) = tr(XT L^s X) - beta * ||L||。
其中L是N x N矩阵要估计的正半定矩阵,X是N x M矩阵,beta是正则化常数,XT = X转置,||.|| 是弗罗贝尼乌斯范数。
此外,L^s 是矩阵指数,其中 L^s = F Λ^s FT,其中 F 是 L 的特征向量的矩阵,Λ 是 L 的特征值的对角矩阵。
目标函数的导数是:
dT/dL = sum_{从 r = 0 到 r = s - 1} L^r (XX.T) L^(sr-1) - 2 * beta * L
我已经完成了非常基本的梯度下降问题(例如矩阵分解),其中优化了矩阵的每个元素,或者使用包/库。这种问题我习惯了比较复杂,我希望你们中的一些对这种事情更有经验的人可以帮助我。
非常感谢任何一般性建议以及如何在 python 或 R 中编写代码的具体建议。
这是具有此功能的论文的链接: https ://journals.plos.org/plosone/article?id=10.1371/journal.pone.0128136#sec016
非常感谢您的帮助!
保罗
python - XGBoost 的自定义目标函数,包括外部数据列
我正在使用 XGBoost 进行销售预测。我需要一个自定义目标函数,因为预测值取决于商品的销售价格。我正在努力将销售价格输入到标签和预测旁边的损失函数中。这是我的方法:
超参数调整时出现以下错误:
有谁知道如何在目标函数中使用销售价格?这可能吗?
谢谢!
minizinc - Minizinc 目标函数用于计划中的差距
我有一个有效的 Miniznic 模型来安排 1 位教授有 n 名学生的个人课程(单节课安排模型的优化问题)。该模型考虑了教授和学生的可用性(硬约束)和时间偏好(目标函数)。
现在,我想扩展模型并优化课程表,以最大限度地减少课程之间的差距。
例子:
在哪里
显然,p
in slot 1 不能算作间隙。同样,插槽 9 和 10 也没有间隙。消除所有错误间隙,
Schedule
最终应该看起来像Real Gaps
数组(注意:错误间隙用.
; 与不可用相同)。
结果将是一个间隙数组[2, 1, 1, 1, 1]
(每个间隙显示它持续的插槽数)。然后,基于这样的阵列,人们可以例如制定目标以最小化整体间隙槽。
在ruby
我能够制定一个算法来做我想要的:
如何在 Minizinc 中制定这样的算法?
谢谢!
python - 从非线性寻根到多目标优化
为了简化,假设我可以描述一个系统
变量x1
和x2
,
参数p1
和p2
, 和
约束f(x, p) = 0
和g(x, p) = 0
:
例如:
f(x1, x2, p1, p2) = x1^2 * p1 + x1^2 * p2 + x2 = 0
g(x1, x2, p1, p2) = x2^2 * p2 + x1 * p1 = 0
现在,假设给定参数p1
和的真实值p2
,根存在。scipy.optimize
但是,在我的情况下,参数的确定方式并不完美,并且像's这样的非线性寻根器fsolve
是不成功的。可以将参数作为变量输入并尝试找到根,但是将变量和参数增加一个数量级,就像在我的实际系统中一样,约束变得非常难以遵守。
因此,我一直在寻找可以“解决”我的非线性方程组的 python 优化包。这就是我对优化缺乏理解的障碍。
如果我理解正确,假设我的方程是约束,这意味着必须尊重它们才能使我的设计成功。但是,我已经意识到,鉴于参数(或大量可能的变量)的不完美性,我需要有一个(或多个)目标函数来最小化而不是约束。
描述我的系统的所有方程都具有相同的有效性,所以我认为我不能简单地选择一个或几个方程作为目标函数,其余的仍然作为约束。看起来我需要将所有方程作为目标函数。
因此,我有两个问题:
- 我的逻辑是让我的所有方程都作为目标函数有效吗?
- 什么 python 包可以让我最小化这些目标函数?
我看过cyipopt
、casadi
、pyomo
和DEAP
,但我有点迷茫。我认为一旦我的系统模型得到更好的定义,我就会确切地知道要寻找什么。但是,如果可以提供我的简单示例的代码,我将不胜感激。
PS:我的模型现在有 11 个变量和 11*5 个参数(五个系数代表每个变量的 4 次多项式)。如果需要,我还可以在优化包中为变量添加约束。
python - 纸浆变量的条件
我正在尝试使用 Pulp 解决教授/班级分配问题。下面是我的代码的简化示例。在示例中,每年有 12 个不同的科目(“Maths_1”,代表数学第一年)分配给 3 个不同的组(A、B、C)。共有 36 个班级分配给 9 位教授(每个教授 4 个班级)。我想尽量减少教授必须提供的不同科目的数量。这是:必须为教授分配 4 个类,然后,例如,Maths_1_A、Maths_1_B、Maths_1_C 和 Programming_1A 只涉及两个不同的科目(Maths_1 和 Programming_1),是比 Maths_1_A、Maths_2_A、Physics_2_A、Physics_1_B、Chemistry_3_A 更好的选择4 个不同的科目(Maths_1、Maths_2、Physics_1、Chemistry_3)。
我遇到的问题是定义目标函数。我只能考虑纸浆变量分配的条件:
问题是:如何创建一个目标函数来计算教授分配的不同科目数量?
r - 如何为序数分类问题自定义 XGBoost 目标函数?
我正在训练一个模型来对具有 10 个级别的序数响应变量进行分类。
我研究了一篇名为“Squared Earth Mover's Distance-based Loss for Training Deep Neural Networks”(https://arxiv.org/pdf/1611.05916.pdf)的论文,我想自定义 XGBoost 目标函数以在“ EMD”。
但是,我不知道如何编写该目标函数。除了使用multi:softmax
or multi:softprob
,任何人都可以帮我编写一个满足 EMD 的定制目标函数吗?
python - 指数函数的 SCIP 优化
我在对指数方程求和并将其用作目标函数时遇到问题。
我还尝试将指数方程写成约束,因为我认为这可能是解决此问题的另一种方法,但这对我也不起作用。
对此的任何帮助将不胜感激。
此代码发生的错误是:
我的理解是目标函数的格式应该是(这是我打印 exp_power 得到的结果):
但是,一旦添加指数项 (w),格式变为:
此外,当添加 quicksum[w] 时,格式变为:
目的是最小化 \sum_{r=1}^N W_r
其中 \W_r = exp(population_dict[r]*sum_{s∈S} d_r,s * y_r,s) ∀r ∈ R
cplex - Cplex是否可以像这样编写目标函数
我有一个分数的二维矩阵作为参数。我有 nxm 个变量 x[i,j],这些变量可以采用预定范围内的整数值。我需要最大化这样的东西: 期望的目标函数
其中 score 是矩阵。是否可以定义这样的目标函数?
java - Gurobi 中一个目标函数的两个表达式
使用 Gurobi (Java),是否可以为一个目标函数编写两个表达式,以便随后仅优化目标函数?
更准确地说:我有以下目标函数:
f = -(ab)
a 和 b 都包含我的优化变量。由于这些条款不是很简单,我正在考虑将两者分开。然而,它们不是单独优化的,而只是目标函数(以及差异)被最小化。因此,在我看来,多重目标的可能性不复存在,但我也可能是错的。也许有人可以帮助我。
非常感谢