windfac.gms : Winding Factor of Electrical Machines

**Description**

This model determines the optimal winding factor for electrical machines.

**Reference**

- Michna, M, and Gdanska, P, Winding Factor of Electrical Machines.

**Small Model of Type :** MINLP

**Category :** GAMS Model library

**Main file :** windfac.gms

```
$title Winding Factor of Electrical Machines (WINDFAC,SEQ=224)
$onText
This model determines the optimal winding factor for electrical machines.
Michna, M, and Gdanska, P, Winding Factor of Electrical Machines, 1984.
Keywords: mixed integer nonlinear programming, electrical engineering, winding factor
$offText
Scalar
ms 'number of phases' / 3 /
p 'number of pole pairs' / 2 /
K 'harmonic order' / 5 /
ns 'coil span' / 1 /;
Variable
q 'number of slots per one phase and per one pole'
Nz 'number of slots'
alfae
tauz 'slots pitch'
s 'span';
Integer Variable q, Nz, s;
q.lo = 1;
q.up = 10;
Nz.lo = 1;
s.lo = 1;
alfae.l = 1.5;
tauz.l = 1.0;
Variable
kz1, kz3, kz5 'coil-group factor'
ks1, ks3, ks5 'coil-span factor'
kw , kw3, kw5 'winding factor'
kw1 'winding factor for first harmonic';
kw1.lo = 0.8;
Equation
def_Nz, def_alfae, def_tauz, def_s, def_kz1, def_ks1, def_kw1
def_kz3, def_ks3, def_kw3, def_kz5, def_ks5, def_kw5, def_kw;
def_Nz.. Nz =e= 2*ms*q*p;
def_alfae.. alfae =e= (2*pi*p)/Nz;
def_tauz.. tauz =e= Nz/(2*p);
def_s.. s =e= tauz - ns;
def_kz1.. (q*sin(alfae/2))*kz1 =e= sin(q*alfae/2);
def_ks1.. ks1 =e= sin((s*pi)/(tauz*2));
def_kw1.. kw1 =e= ks1*kz1;
def_kz3.. (q*sin(3*alfae/2))*kz3 =e= sin(3*q*alfae/2);
def_ks3.. ks3 =e= sin((3*s*pi)/(tauz*2));
def_kw3.. kw3 =e= ks3*kz3;
def_kz5.. (q*sin(5*alfae/2))*kz5 =e= sin(5*q*alfae/2);
def_ks5.. ks5 =e= sin((5*s*pi)/(tauz*2));
def_kw5.. kw5 =e= ks5*kz5;
def_kw.. kw =e= kw3*kw3 + kw5*kw5;
Model wind / all /;
solve wind minimizing kw using minlp;
```