**Ошибка при использовании saveOptimizationParams
Слишком много входных аргументов.
Ошибка в sqpInterface
Ошибка в fmincon (строка 672)
`[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = sqpInterface(funfcn,X,full(A),full(B),full(Aeq),full(Beq) , ...
**
Проблема в том, чтобы минимизировать obj = (alpha * PopulationDeviation) + (beta * locationDeviation);
Это моя проблема с оптимизацией
Код: Выделить всё
cd('/main/path')
path2root= '/path/to/something/I need/';
% Load initial parameters from file
initial_params = readParameters('parameters.txt');
% Load target data from file
target_population = load('/path/to/targetPop.txt');
% Define optimization parameters
alpha = 1; % Weight for population size deviation
beta = 1; % Weight for location deviation
% Define the optimization problem
objFunction = @(params) objectiveFun(params, target_population,alpha,beta);
initial_guess = [initial_params.natural_growth_rate, initial_params.natural_death_rate ];
lb = [0, 0];
ub = [Inf, Inf];
options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'sqp','OutputFcn', @saveOptimizationParams);
% Perform optimization
[opt_params, fval] = fmincon(@(params)objectiveFun(params, target_population,alpha,beta), initial_guess, [], [], [], [], lb, ub, [], options);
Код: Выделить всё
function obj = objectiveFun(params,target_population,alpha,beta)
growth_rate = params(1);% Currently not used
death_rate = params(2);% Currently not used
% Read the optimized parameters to a new file
initial_guess = readParameters('parameters.txt');
%initial_guess=[initial_params.growth_rate,initial_params.death_rate];
%Run ABM from jar fiel
system( 'java -jar /path/to/file.jar/')
% Load updated data from file
current_population = readCurrentPop('/path/to/data.csv');
% Calculate population deviation
P_current = size(current_population, 1);
P_target = size(target_population, 1);
populationDeviation = (P_current - P_target)^2;
% Calculate location deviation using the K nearest neigbor search
[Idx, D] = knnsearch(target_population, current_population);
locationDeviation=sum(D);
% Calculate combined objective
obj = (alpha * populationDeviation) + (beta * locationDeviation);
end
Код: Выделить всё
function stop = saveOptimizationParams(optimValues, state)
% File to write
fileName = '/path/to/parameters.txt';
% Initialize stop flag
stop = false;
% Check the state of the optimization
switch state
case 'iter'
% Write the parameters to the file at each iteration
currentParams = optimValues.x;
paramCellArray = struct('natural_growth_rate', currentParams(1), 'natural_death_rate', ocurrentParams(2));
writeParameters(fileName, paramCellArray);
end
end
Оптимизация также запускается, когда я исключаю часть функции вывода из параметров, то есть
Код: Выделить всё
options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'sqp');Я использую функцию вывода для обновления моего данные на каждом этапе, и поэтому я хочу запускать их на каждой итерации.
Если у кого-то есть какие-либо предложения или кто знает, чего мне не хватает, я буду признателен. Спасибо за прочтение
Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-matlab