1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
<!--
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
-->
<meta>
<topic id="textscalc01solverxml" indexer="include" status="PUBLISH">
<title id="tit" xml-lang="en-US">Solver</title>
<filename>/text/scalc/01/solver.xhp</filename>
</topic>
</meta>
<body>
<section id="solverhead">
<bookmark xml-lang="en-US" branch="index" id="bm_id7654652">
<bookmark_value>goal seeking;solver</bookmark_value>
<bookmark_value>what if operations;solver</bookmark_value>
<bookmark_value>back-solving</bookmark_value>
<bookmark_value>solver</bookmark_value>
<bookmark_value>mathematical programming;solver for Calc</bookmark_value>
<bookmark_value>mathematical optimization;solver for Calc</bookmark_value>
<bookmark_value>operations research;solver for Calc</bookmark_value>
</bookmark>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/SolverDialog" id="bm_id5634023" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/@@nowidget@@" id="bm_id5634023" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/.uno:SolverDialog" id="bm_id5634022" localize="false"/>
<h1 id="hd_id9216284"><variable id="solver"><link href="text/scalc/01/solver.xhp">Solver</link></variable></h1>
<paragraph id="par_id9210486" role="paragraph" xml-lang="en-US"><ahelp hid=".">Opens the Solver dialog. A solver allows you to solve mathematical problems with multiple unknown variables and a set of constraints on the variables by goal-seeking methods.</ahelp></paragraph>
</section>
<section id="howtoget">
<embed href="text/scalc/00/00000406.xhp#solver"/>
</section>
<comment>target cell</comment>
<h2 id="hd_id21589912365601">Solver settings</h2>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/targetedit" id="bm_id8861964" localize="false"/>
<h3 id="hd_id121589913023217">Target Cell</h3>
<paragraph id="par_id8538773" role="paragraph" xml-lang="en-US"><ahelp hid=".">Enter or click the cell reference of the target cell. This field takes the address of the cell whose value is to be optimized.</ahelp></paragraph>
<h3 id="hd_id441589913036601">Optimize results to</h3>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/max" id="bm_id8373973" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/min" id="bm_id6767174" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/valueedit" id="bm_id2756126" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/value" id="bm_id5222022" localize="false"/>
<list type="unordered">
<listitem>
<paragraph id="par_id7564012" role="listitem" xml-lang="en-US"><ahelp hid="."><emph>Maximum:</emph> Try to solve the equation for a maximum value of the target cell.</ahelp></paragraph>
</listitem>
<listitem>
<paragraph id="par_id1186254" role="listitem" xml-lang="en-US"><ahelp hid="."><emph>Minimum:</emph> Try to solve the equation for a minimum value of the target cell.</ahelp></paragraph>
</listitem>
<listitem>
<paragraph id="par_id7432477" role="listitem" xml-lang="en-US"><ahelp hid="."><emph>Value of:</emph> Try to solve the equation to approach a given value of the target cell.</ahelp></paragraph>
<paragraph id="par_id7141026" role="listitem" xml-lang="en-US"><ahelp hid=".">Enter the value or a cell reference in the text field.</ahelp></paragraph>
</listitem>
</list>
<h3 id="hd_id761589914010085">By Changing Cells</h3>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/changeedit" id="bm_id4908902" localize="false"/>
<paragraph id="par_id8531449" role="paragraph" xml-lang="en-US"><ahelp hid=".">Enter the cell range that can be changed.</ahelp> These are the variables of the equations.</paragraph>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref1edit" id="bm_id8499099" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref2edit" id="bm_id9544663" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref3edit" id="bm_id5762199" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref4edit" id="bm_id9534287" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/op1list" id="bm_id9408551" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/op2list" id="bm_id1329386" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/op3list" id="bm_id4931180" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/op4list" id="bm_id5970030" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var1edit" id="bm_id496841" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var2edit" id="bm_id7440717" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var3edit" id="bm_id2470778" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var4edit" id="bm_id3389080" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/targetbutton" id="bm_id5104220" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/valuebutton" id="bm_id6714" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/changebutton" id="bm_id8507339" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref1button" id="bm_id5296792" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref2button" id="bm_id3949400" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref3button" id="bm_id9991760" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/ref4button" id="bm_id2726828" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var1button" id="bm_id6034424" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var2button" id="bm_id6998809" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var3button" id="bm_id71413" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/var4button" id="bm_id2924283" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/del1" id="bm_id5781731" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/del2" id="bm_id6942045" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/del3" id="bm_id4721823" localize="false"/>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/del4" id="bm_id5806756" localize="false"/>
<h3 id="hd_id671589914927836">Limiting Conditions</h3>
<paragraph role="paragraph" id="par_id421589915278885">Add the set of constraints for the mathematical problem. Each constraint is represented by a cell reference (a variable), an operator, and a value.</paragraph>
<list type="unordered">
<listitem>
<paragraph id="par_id9183935" role="listitem" xml-lang="en-US"><ahelp hid="."><emph>Cell reference:</emph> Enter a cell reference of the variable.</ahelp></paragraph>
<paragraph id="par_id1939451" role="listitem" xml-lang="en-US"><ahelp hid=".">Click the Shrink button to shrink or restore the dialog. You can click or select cells in the sheet. You can enter a cell reference manually in the input box.</ahelp></paragraph>
</listitem>
<listitem>
<paragraph id="par_id946684" role="listitem" xml-lang="en-US"><ahelp hid="."><emph>Operator:</emph> Select an operator from the list.</ahelp> Use Binary operator to restrict your variable to 0 or 1. Use the Integer operator to restrict your variable to take only integer values (no decimal part).</paragraph>
</listitem>
<listitem>
<paragraph id="par_id9607226" role="listitem" xml-lang="en-US"><ahelp hid="." ><emph>Value:</emph> Enter a value or a cell reference.</ahelp> This field is ignored when the operator is Binary or Integer.</paragraph>
</listitem>
<listitem>
<paragraph id="par_id9038972" role="paragraph" xml-lang="en-US"><ahelp hid="."><emph>Remove button:</emph> Click to remove the row from the list. Any rows from below this row move up.</ahelp></paragraph>
</listitem>
</list>
<note id="par_id511589916338595">You can set multiple conditions for a variable. For example, a variable in cell A1 that must be an integer less than 10. In that case, set two limiting conditions for A1.</note>
<h3 id="hd_id441589917031236">Options</h3>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/options" id="bm_id8915372" localize="false"/>
<paragraph id="par_id2423780" role="paragraph" xml-lang="en-US"><ahelp hid=".">Opens the <link href="text/scalc/01/solver_options.xhp#solveroptionsh1">Solver Options</link> dialog.</ahelp></paragraph>
<paragraph role="paragraph" id="par_id221589917833431">The <emph>Solver Options</emph> dialog let you select the different solver algorithms for either linear and non-linear problems and set their solving parameters.</paragraph>
<h3 id="hd_id771589917064147">Solve</h3>
<comment>solve button</comment>
<bookmark xml-lang="en-US" branch="hid/modules/scalc/ui/solverdlg/solve" id="bm_id6070436" localize="false"/>
<paragraph id="par_id2569658" role="paragraph" xml-lang="en-US"><ahelp hid=".">Click to solve the problem with the current settings. The dialog settings are retained until you close the current document.</ahelp></paragraph>
<h2 id="par_id5474410">To solve equations with the solver</h2>
<paragraph id="par_id2216559" role="paragraph" xml-lang="en-US">The goal of the solver process is to find those variable values of an equation that result in an optimized value in the <emph>target cell</emph>, also named the "objective". You can choose whether the value in the target cell should be a maximum, a minimum, or approaching a given value.</paragraph>
<paragraph id="par_id7869502" role="paragraph" xml-lang="en-US">The initial variable values are inserted in a rectangular cell range that you enter in the <emph>By changing cells</emph> box.</paragraph>
<paragraph id="par_id9852900" role="paragraph" xml-lang="en-US">You can define a series of limiting conditions that set constraints for some cells. For example, you can set the constraint that one of the variables or cells must not be bigger than another variable, or not bigger than a given value. You can also define the constraint that one or more variables must be integers (values without decimals), or binary values (where only 0 and 1 are allowed).</paragraph>
<h2 id="hd_id0603200910430882">Using Non-Linear solvers</h2>
<paragraph xml-lang="en-US" id="par_id0603200910430845" role="paragraph">Regardless whether you use DEPS or SCO, you start by going to <menuitem>Tools - Solver</menuitem> and set the Cell to be optimized, the direction to go (minimization, maximization) and the cells to be modified to reach the goal. Then you go to the Options and specify the solver to be used and if necessary adjust the according <link href="text/scalc/01/solver_options.xhp">parameters</link>.</paragraph>
<paragraph xml-lang="en-US" id="par_id0603200910430821" role="paragraph">There is also a list of constraints you can use to restrict the possible range of solutions or to penalize certain conditions. However, in case of the evolutionary solvers DEPS and SCO, these constraints are also used to specify bounds on the variables of the problem. Due to the random nature of the algorithms, it is <emph>highly recommended</emph> to do so and give upper (and in case "Assume Non-Negative Variables" is turned off also lower) bounds for all variables. They don't have to be near the actual solution (which is probably unknown) but should give a rough indication of the expected size (0 ≤ var ≤ 1 or maybe -1000000 ≤ var ≤ 1000000).</paragraph>
<paragraph xml-lang="en-US" id="par_id0603200910430873" role="paragraph">Bounds are specified by selecting one or more variables (as range) on the left side and entering a numerical value (not a cell or a formula) on the right side. That way you can also choose one or more variables to be <emph>Integer</emph> or <emph>Binary</emph> only.</paragraph>
<section id="relatedtopics">
<embed href="text/scalc/01/solver_options.xhp#solveroptionsh1"/>
<embed href="text/scalc/01/solver_options_algo.xhp#SolverAlgorithmsOptionsh1"/>
<paragraph role="paragraph" id="par_id271589981559367"><link href="https://wiki.documentfoundation.org/NLPSolver">Wiki page on solvers and their algorithms</link></paragraph>
</section>
</body>
</helpdocument>
|