You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求适配C#应用的连续数学最小化算法或库

寻找适配多控制多目标的数学优化算法或C#库

我想确认这个问题是否适合发布在Stack Overflow,如果不合适,麻烦建议合适的发布平台。

我的C#应用需要实现一种数学优化算法,场景如下:

  • 存在多个控制值(3个及以上),控制值会影响系统状态,进而间接改变测量得到的目标值。哪怕只修改一个控制值,都可能改变所有目标值,且控制值与目标值之间的关系是未知的。
  • 算法目标:找到所有极小值——也就是控制值处于指定范围内,且所有目标值都落在期望误差范围内的点。后续会通过其他代码筛选全局极小值。如果已知系统仅存在1个极小值,优化器在识别到该点后需立即终止,无需继续搜索。
  • 限制条件:更改系统状态和进行测量的计算成本极高,因此优化过程要尽可能减少迭代次数。
  • 额外需求:需要能访问优化过程中产生的“猜测”数据,以便在重复计算时复用——因为系统可能发生细微变化,复用之前的拟合数据能显著加速计算。

目前我找不到能适配这种场景的连续数学优化算法或C#库。

以下是我编写的Optimizer框架代码及测试类,其中空的Optimize和AllMinimaFound方法是我打算接入算法或库的位置:

public class Optimizer
{
    public List<Control> Controls { get; init; } = new();
    public List<Target> Targets { get; init; } = new();
    public List<Minima> Minimas { get; init; } = new();
    public OptimizerData Data { get; init; } = new();

    public void Optimize()
    {
        //1. 生成控制值的猜测值,为Controls列表中的每个对象赋值OptimizedValue
        //2. 将当前控制值与目标值的组合保存到Data中
        //3. 如果找到极小值,将其添加到Minimas列表
    }

    public bool AllMinimaFound()
    {
        //当判断可能没有更多极小值时返回true,用于终止优化器
    }

    public class Control
    {
        public string Name { get; init; }
        public double OptimizedValue { get; set; }
        public double MinBound { get; init; }
        public double MaxBound { get; init; }

        public Control(string name, double minBound, double maxBound)
        {
            Name = name;
            MinBound = minBound;
            MaxBound = maxBound;
        }
    }

    public class Target
    {
        public string Name { get; init; }
        public double MeasuredValue { get; set; }
        public double TargetValue { get; init; }
        public double ErrorMargin { get; init; }

        public Target(string name, double target, double errorMargin)
        {
            Name = name;
            TargetValue = target;
            ErrorMargin = errorMargin;
        }

        public bool IsWithinMargin()
        {
            return Math.Abs(MeasuredValue - TargetValue) < ErrorMargin;
        }
    }

    public class Minima
    {
        public Dictionary<string, double> ControlNamesAndValues { get; init; } = new(); // 存储该极小值对应的所有控制值名称和数值
    }

    public class OptimizerData
    {
        private List<OptimizerDataPoint> DataPoints { get; init; } = new();

        public void AddDataPoint(List<Control> controls, List<Target> targets)
        {
            DataPoints.Add(new(controls, targets));
        }

        public class OptimizerDataPoint
        {
            public Dictionary<string, double> controlsNamesAndValues { get; init; } = new();
            public Dictionary<string, double> targetsNamesAndValues { get; init; } = new();

            public OptimizerDataPoint(List<Control> controls, List<Target> targets)
            {
                foreach (Control control in controls) { controlsNamesAndValues.Add(control.Name, control.OptimizedValue); }
                foreach (Target target in targets) { targetsNamesAndValues.Add(target.Name, target.MeasuredValue); }
            }
        }
    }
}

public class OptimizerTester
{
    public void OptimizeTest()
    {
        Optimizer optimizer = new();

        optimizer.Controls.Add(new("Length", -5, 5));
        optimizer.Controls.Add(new("Width", 10, 125));
        optimizer.Controls.Add(new("Height", -7, 0));

        optimizer.Targets.Add(new("Mass", 20, 0.01));
        optimizer.Targets.Add(new("SurfaceArea", 32, 0.01));
        optimizer.Targets.Add(new("BoundingBoxVolume", 150, 0.01));

        //测试1 - 找到所有极小值
        while (!optimizer.AllMinimaFound())
        {
            optimizer.Optimize();
            SetMeasuredTargetValues(optimizer.Targets);
        }

        //测试2 - 找到第一个极小值后终止
        while (optimizer.Minimas.Count < 1)
        {
            optimizer.Optimize();
            SetMeasuredTargetValues(optimizer.Targets);
        }
    }

    public void SetMeasuredTargetValues(List<Optimizer.Target> targets)
    {
        //外部代码:测量并设置每个Target的MeasuredValue
    }
}

请问有人能帮我确定可实现此需求的算法或现有C#库吗?

内容的提问来源于stack exchange,提问作者K.S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:54:55