Solution techniques for optimization problems

125 Views Asked by At

I am very new to solving such optimization problems. Following is the problem, I need to know the various methods (preferably advanced machine learning techniques) that I can use to solve this.

Bascically, the problem is related scheduling in Cloud computing.

I have a set of VMs VM = {VM1 .. VMn}

Each of these has capacity C = {C1 .. Cn}

and price per hour P = {P1 .. Pn}

and each of these VMs have running time in minutes R = {R1 .. Rn}

If the running time is not a multiple of 60 for any VMi, then we are charged for the entire hour i.e. cost of the running VM is (ceil(Ri/60) * Pi) There are infinite number of instances available for each VM.

I have a user demand capacity constant D, so suppose there are r types of VM running

$$ \sum_{i=1}^{i=r} (x_i * C_i) >= D$$ where xi is the number of instances of type i.
The total cost of running the VMs will be which has to be minimized

$$ Minimize \sum_{i=1}^{i=r} (x_i * ceil(R_i/60) * P_i) $$

This is a rough idea to the problem. Now, I need to select the servers to start and stop based on the cost and the capacity of each server.

It would be great if someone can help me any techniques that can be used to solve this problem. Can this problem be solved using Fuzzy logic?

1

There are 1 best solutions below

0
On

It seems you have to decide if you use the $i$-th VM or not, which can be modelled as a solution vector $x = (x_i) \in S=\mathbb{B}^n$ with $\lvert S\rvert=2^n$.

Your problem features a linear pseudo-boolean cost function $$ c^\top x : \mathbb{B}^n \to \mathbb{R} $$ with a cost vector $$ c_i = \left\lceil \frac{R_i}{60} \right\rceil P_i $$ The minimization problem is $$ \min \left\{ \left. c^\top x \, \right\vert\, A x \ge b \right\} $$ where $A = C^\top$, $b = D$ and $C = (C_i)$ is the vector of capacities.

I wrote it to look like a linear programming problem, although it is only close, as the matrix $A$ is real valued and $x$ is boolean valued.

This seems to go under the name $0$-$1$ integer programming. The linked article describes this as a NP-hard problem, which means computing of large $n$ instances is likely to be very expensive. I do not know if your problem falls into that complexity class, as your $A$ is dimensioned just $1\times n$ instead of general $m\times n$.

I would spend a little time into going for literature on pseudo-boolean optimization, especially linear pseudo-boolean optimization.

If your $n$ is small you could try to explore the search space yourself. $D \le C^\top x = \lVert C \rVert \, \lVert x \rVert \cos \angle(C,x)$ looks like a cone shaped part of $S$ to me.

Update:

In case you want to group the $n$ VMs into $m$ different classes of the same type the problem could be modelled by $$ c^\top x : \mathbb{Z}^n \to \mathbb{R} $$ again with a cost vector$$ c_i = \left\lceil \frac{R_i}{60} \right\rceil P_i $$ where we now index over classes. The minimization problem is again $$ \min \left\{ \left. c^\top x \, \right\vert\, A x \ge b \right\} $$ So the dimension shrink from $n$ to $m$ and the values of the unkowns $x_i$ extend from $\{0, 1\}$ to non-negative integers (bounded by $n$).

So you could try to find either a BIP or ILP solver.