, evet sadece göndermek ve okumak için objektif fonksiyonu mümkün yapılandırmak edilir Dış işleme parametreler ve cevap verileri.
Ayrık optimizasyon için, en iyi duruma getirme araç kutusu ayrık en iyi duruma getirme sorunları ile çalışmaz, ancak belgeler, parametrenin hedef işlev içinde yuvarlanması ve ardından yanıt değişkeninde tekrar çalıştırılması hakkında bir ipucu verir.
:
örneğin, bu piton yazılan bir dış program kodlu bir prizma bir hacme optimize etmek için bir fonksiyonu (sadece tek bir objetive genetik algoritma ile gösteri amacıyla (ga)) olabilir
function f = optim(x)
%Optimization criteria
l = round(x(1));
h = round(x(2));
w = round(x(3));
%String to produce the external proccess call as a system command
commandStr = ['python -c "print ' num2str(l) ' * ' num2str(h) ' * ' num2str(w) ' "'];
%Execute the system command, status = 0 for good execution
[status, commandOut] = system(commandStr);
%Convert the output of the external program from strin to doble and assign as the response of the optimization funcition
f = str2double(commandOut)
Sonra bu görevi görüyordu kullanarak optimtool
kullanabilirsiniz objetive olarak: Sonra
ex sonucu çalışma alanına ve round()
numaralı bağlantı noktasına getirin.
Yoksa böyle bir kod ile programlanabilir olun:
function [x,fval] = runOptimization(lb,ub)
options = gaoptimset;
options = gaoptimset(options,'Display', 'off');
[x,fval] =ga(@optim,3,[],[],[],[],lb,ub,[],[],options);
x = round(x)
fval = optim(x)
Ve
[x,fval] = runOptimization([1 1 1],[3 4 5])
olarak NOT çalıştırın.
round()
, yalnızca
belgelerinde önerilen şekilde ayrı optimizasyonun nasıl yapıldığını göstermek için işlev görür.