Optimization 约束规划优化

Optimization 约束规划优化,optimization,constraint-programming,nonlinear-optimization,minizinc,Optimization,Constraint Programming,Nonlinear Optimization,Minizinc,我想用约束编程语言表达和求解下面的方程 我有变量t,试图找到使我的目标函数最小化的最佳乘数k 时间:t1,t2,t3。。。输入 倍增器k1,k2,k3。。。(这是需要找到的连续变量) c1,c2,。。cN是常数 主方程k1*sin(c1*x)+k2*sin(c2*x)+k3*sin(c3*x)+k4*cos(c1*x) 问题是用(k1,k2,k3..)的最佳可能值最小化下面所有方程的结果。此外,众所周知,这个问题没有一个精确的解决方案。所以 当x为t1-->P1-k1*sin(c1*t1)-k

我想用约束编程语言表达和求解下面的方程

我有变量t,试图找到使我的目标函数最小化的最佳乘数k

时间:t1,t2,t3。。。输入

倍增器k1,k2,k3。。。(这是需要找到的连续变量)

c1,c2,。。cN是常数

主方程k1*sin(c1*x)+k2*sin(c2*x)+k3*sin(c3*x)+k4*cos(c1*x)

问题是用(k1,k2,k3..)的最佳可能值最小化下面所有方程的结果。此外,众所周知,这个问题没有一个精确的解决方案。所以
当x为t1-->P1-k1*sin(c1*t1)-k2*sin(c2*t1)-k3*sin(c3*t1)-k4*cos(c1*t1)

当x为t2-->P2-k1*sin(c1*t2)-k2*sin(c2*t2)-k3*sin(c3*t2)-k4*cos(c1*t2)。。。

当x为t3-->P3-k1*sin(c1*t3)-k2*sin(c2*t3)-k3*sin(c3*t3)-k4*cos(c1*t3)

P1是时间变量的界值。但P(t)不是解析函数,我只知道它们的值,比如 t1=5 P1=0.7 t2=6 P2=0.3等


在Minizing或任何其他CP系统中有可能解决这个问题吗?

我不认为CP特别适合解决这个问题,因为您在这里实际上没有约束条件。你所拥有的只是你想要最小化的函数(f1,…,fi)和一些自由度(k1,…,ki)

我觉得这个问题是一个很好的候选人。与其尝试将函数f“拟合”到给定值,不如尝试最小化它们。因此,您可以尝试将f²调整为0。(因此,我们将在该护理中处理非线性最小二乘法)

下面是它希望用Python编写的内容:

import numpy as np
from scipy.optimize import curve_fit

xdata = np.array([t1, t2, t3, t4, ..., t10])
ydata = np.zeros(10)  # this is your "target". 10 = Number of ti 

def func(x, k1,k2,...ki):
  return (P(x)-k1*sin(c1*x)-k2*sin(c2*x)-k3*sin(c3*x)-k4*cos(c1*x)...)**2  # The square is a trick to minimize the function 

popt, pcov = curve_fit(func, xdata, ydata, k0=(1.0,1.0,...)) # Initial set of ki

我可能误解了,但似乎每次tj表达式
sin(ci*tj)
都是一个常数,称之为
Sij
。然后,你的方程看起来像
Pj-k1*S1j-k2*S2j-k3*S3j…
。那么问题就是你所说的“最小化所有方程”的确切含义:你可以最小化它们的和,它们的最大值,帕累托最优值,等等。还有一个问题问格汗:当你谈论函数“P(t)”,这是“P1”,“P2”等,所以它应该是“P(1)”,“P(2)”,等等?@hakank是的,P(t)给出P(t1)=P1,P(t2)=P2。。。等等,@jschimpf它们只是线性的,但我这样写是因为有人会利用它的梯度。“最小化它们的和”是目标函数。