Skip to content

Commit e18a4bf

Browse files
committed
Revised Description for FCS-MPC
1 parent 4f29241 commit e18a4bf

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

examples/model_predictive_controllers/pmsm_fcs_mpc_dq_current_control.ipynb

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
"\n",
1919
"![MPC1](img/mpc_scheme.png)\n",
2020
"\n",
21-
"With the help of the system model the output variables are calculated. By minimizing a cost function, the optimizer determines the optimal control variables for the following N time steps, the so-called prediction horizon. The first manipulated variable is switched on and then the system outputs are measured. When calculating the manipulated variables, the manipulated variable limits are explicitly taken into account.\n",
21+
"With the help of the system model, the output variables are predicted for each possible switching state in the finite control set. The optimizer evaluates a cost function (typically the quadratic control error) for all possible switching combinations over the prediction horizon. The switching state that minimizes the cost function is selected and applied to the system in the next time step.\n",
2222
"\n",
23-
"![Limits](img/voltage_limits.png)\n",
24-
"The quadratic control error area is used as the cost function. Since the control is performed in the rotating dq-coordinates, the voltage limits, which have the shape of a hexagon, are time-variant. The optimization problem is solved iteratively using an Interior-Point Solver, which approximates the limits using barrier functions."
23+
"Unlike CCS-MPC, FCS-MPC does not require an iterative numerical solver or barrier functions to handle constraints, as the voltage limits are inherently respected by evaluating only the physically realizable switching states of the converter. The computational efficiency of FCS-MPC comes from the direct enumeration and evaluation of the finite number of possible switching states, rather than solving an optimization problem with constraints.\n"
2524
]
2625
},
2726
{
@@ -33,7 +32,7 @@
3332
},
3433
{
3534
"cell_type": "code",
36-
"execution_count": 17,
35+
"execution_count": 1,
3736
"metadata": {},
3837
"outputs": [],
3938
"source": [
@@ -42,7 +41,7 @@
4241
},
4342
{
4443
"cell_type": "code",
45-
"execution_count": 18,
44+
"execution_count": 2,
4645
"metadata": {},
4746
"outputs": [],
4847
"source": [
@@ -66,7 +65,7 @@
6665
},
6766
{
6867
"cell_type": "code",
69-
"execution_count": 20,
68+
"execution_count": 3,
7069
"metadata": {},
7170
"outputs": [],
7271
"source": [
@@ -94,7 +93,7 @@
9493
},
9594
{
9695
"cell_type": "code",
97-
"execution_count": 22,
96+
"execution_count": 4,
9897
"metadata": {},
9998
"outputs": [],
10099
"source": [
@@ -203,7 +202,7 @@
203202
},
204203
{
205204
"cell_type": "code",
206-
"execution_count": 23,
205+
"execution_count": 5,
207206
"metadata": {},
208207
"outputs": [],
209208
"source": [
@@ -221,7 +220,7 @@
221220
},
222221
{
223222
"cell_type": "code",
224-
"execution_count": 24,
223+
"execution_count": 6,
225224
"metadata": {},
226225
"outputs": [],
227226
"source": [
@@ -258,13 +257,13 @@
258257
},
259258
{
260259
"cell_type": "code",
261-
"execution_count": 25,
260+
"execution_count": 7,
262261
"metadata": {},
263262
"outputs": [
264263
{
265264
"data": {
266265
"application/vnd.jupyter.widget-view+json": {
267-
"model_id": "793190cb48db401cb57950c71587cbe5",
266+
"model_id": "22faa601faf14fbd99256e8bb6eca063",
268267
"version_major": 2,
269268
"version_minor": 0
270269
},
@@ -321,14 +320,22 @@
321320
},
322321
{
323322
"cell_type": "code",
324-
"execution_count": 26,
323+
"execution_count": 8,
325324
"metadata": {},
326325
"outputs": [
326+
{
327+
"name": "stderr",
328+
"output_type": "stream",
329+
"text": [
330+
"/home/labdoo/anaconda3/envs/PE/lib/python3.12/site-packages/gymnasium/utils/passive_env_checker.py:158: UserWarning: \u001b[33mWARN: The obs returned by the `step()` method is not within the observation space.\u001b[0m\n",
331+
" logger.warn(f\"{pre} is not within the observation space.\")\n"
332+
]
333+
},
327334
{
328335
"name": "stdout",
329336
"output_type": "stream",
330337
"text": [
331-
"Reward = -1041.746469033069\n"
338+
"Reward = -1148.3054379267162\n"
332339
]
333340
}
334341
],

0 commit comments

Comments
 (0)