From 529da052f30e36b2bce346af5b6d45162f2f1031 Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Tue, 29 May 2018 11:56:20 +0200
Subject: [PATCH] don't scale turbineX and turbineY when using SLSQP

---
 topfarm/_topfarm.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/topfarm/_topfarm.py b/topfarm/_topfarm.py
index f776c5b6..572c9efa 100644
--- a/topfarm/_topfarm.py
+++ b/topfarm/_topfarm.py
@@ -32,18 +32,19 @@ class TopFarm(object):
         indeps = prob.model.add_subsystem('indeps', IndepVarComp(), promotes=['*'])
         min_x, min_y = self.boundary_comp.vertices.min(0)
         mean_x, mean_y = self.boundary_comp.vertices.mean(0)
-        indeps.add_output('turbineX', turbines[:, 0], units='m', ref=mean_x, ref0=min_x)
-        indeps.add_output('turbineY', turbines[:, 1], units='m', ref=mean_y, ref0=min_y)
+        if driver_options['optimizer'] == 'SLSQP':
+            min_x, min_y, mean_x, mean_y = 0, 0, 1, 1  # scaling disturbs SLSQP
+        indeps.add_output('turbineX', turbines[:, 0], units='m', ref0=min_x, ref=mean_x)
+        indeps.add_output('turbineY', turbines[:, 1], units='m', ref0=min_y, ref=mean_y)
         indeps.add_output('boundary', self.boundary_comp.vertices, units='m')
         prob.model.add_subsystem('cost_comp', cost_comp, promotes=['*'])
         prob.driver = ScipyOptimizeDriver()
 
-        #prob.driver.options['optimizer'] = optimizer
         prob.driver.options.update(driver_options)
-        if driver_options['optimizer']=='SLSQP':
+        design_var_kwargs = {}
+        if driver_options['optimizer'] == 'SLSQP':
+            # Default +/- sys.float_info.max does not work for SLSQP
             design_var_kwargs = {'lower': np.nan, 'upper': np.nan}
-        else:
-            design_var_kwargs = {}
         prob.model.add_design_var('turbineX', **design_var_kwargs)
         prob.model.add_design_var('turbineY', **design_var_kwargs)
         prob.model.add_objective('cost')
-- 
GitLab