The best way to change variables in a Simulink model from an App is to interface into the model using a Simulink.SimulationInput object.
The SimulationInput class contains several methods (setVariable, setExternalInput, etc) which are useful for modifying the variables and parameters of a Simulink Model prior to starting the simulation. For more information on the SimulationInput class, refer to its documentation page:
In this particular case, you can create and reference the SimulationInput object in the code of the App, pass in a handle to your Simulink model, and change variable values directly from the app. For example, inserting the following code into the App would allow you to set the value of a variable 'cost' inside a model named 'controllerModel'.
mdl = 'controllerModel';
in = Simulink.SimulationInput(mdl);
in = in.setVariable('cost',50);
The section titled "SimulateButtonPushed Callback Function Code" in the following example illustrates this workflow of modifying simulation data using the SimulationInput object.
Please note: the above example was written for an app deployed with Simulink Compiler. Simulink Compiler is not required to interface App Designer and Simulink, but the workflow demonstrated in the example is still applicable even without Simulink Compiler. For more information about deploying applications with Simulink Compiler, refer to the information in the documentation below.