У меня есть обертка функций, которая определена ниже: Здесь я передаю набор коэффициентов (inputArr) и кортеж, содержащий 2 двойных массива.Назначение параметров для элементов массива с индексом C#
Ожидаемый результат: сколько раз «WminObjectivefunction» наречется, а также вернуть «FuncValue», которая в основном «WminObjectivefunction» оценивается в «inputArr». Каждый раз, когда я звоню «WrapFunction« массив »inputArr« пройдены должны быть разными.
public void WrapFunction(out int ncalls, out double FuncValue, double[] inputArr, Tuple<List<double>, List<double>> arguments)
{
int calls = 0;//Number_of_FunctionEvaluations
// MASTER class instance
Master prismpy = new Master();
calls += 1;//Number_of_FunctionEvaluations_Increment
ncalls = calls;//Return_Number_of_FunctionEvaluations
FuncValue = prismpy.WminObjectivefunction(inputArr, arguments.Item1, arguments.Item2);//Return_FunctionValuation
}
Question1: Я хочу, чтобы сохранить FuncValue в качестве элементов в массиве FSIM, Как я могу командовать WrapFunction для сохранения значения в качестве элемента массива обозначается индексом. Следующее, что я пробовал, и ошибка: Не удается неявно преобразовать «пустота» в «двойной»
// FSIM: put array in array of arrays
double[] fsim = new double[5];
int fcall;
fsim[0] = WrapFunction(out fcall, out fsim[0], _x0, args);
Вопрос2: Нужно ли называть WrapFunction со всеми из аргументов каждый раз? Есть ли способ, если я просто хочу получить либо один из этих двух выходов?
Не 'ncalls' всегда будет 1? В этом случае единственной полезной информацией является 'FuncValue', и вы можете просто вернуть ее вместо использования параметра' out'. – juharr
Это огромный запах кода –