Я использую accord.math для решения системы с нелинейными ограничениями. В этом примере ограничение имеет 4 переменные , x => x[0] + x[1] + x[2] + x[3] <= 1
Но что, если ограничения должны включать 50 переменных. Как построить , x => x[0] + x[1] + x[2] + ...+ x[50] <= 1
в цикле?Construct func constraint в цикле
namespace ConsoleApplication21
{
class Program
{
static void Main(string[] args)
{
var f = new NonlinearObjectiveFunction(4, x => 0.010 * x[0] - 0.000543 * x[1] - 0.003440 * x[2] + 0.000292 * x[3]);
var constraints = new[]
{
new NonlinearConstraint(4, x => x[0] + x[1] + x[2] + x[3] <= 1),
new NonlinearConstraint(4, x => x[0] + x[1] + x[2] + x[3] >= 1),
};
var cobyla = new Cobyla(f, constraints);
bool success = cobyla.Maximize();
double minimum = cobyla.Value;
double[] solution = cobyla.Solution;
Console.WriteLine(minimum);
}
}
}