Help me to calculate polyhedron area or let me know the references about it.

67 Views Asked by At

I'm a student who is studying the Management Science in the Republic of Korea.

I'm looking for a reference to calculate the area of the system of inequalities.

I can easily calculate when the number of variables is two.

But when it increases, the shape of a feasible region will have existed in high-dimensional space. so I can't calculate it.

For example, I want to calcualte the area of those three inequalities,

0.1333a + 0.0667b + 0c + (-0.2667)d >= -0.06667

0.1a + (-0.15)b + (-0.25)c + 0d>=0

(-0.025)a + 0.1b + (-0.025)c + (-0.1)d >= -0.025

0<=a,b,c,d<=0.5(Attached after seeing Jean Marie's reply.)

1

There are 1 best solutions below

8
On

What you need is hopefuly a MonteCarlo approach.

Let me explain it on your data, but with 3 variables.

Let us assume that you have the following inequations :

$$\begin{cases} x&&&&&>&0&(\text{delimitated by plane} \ (1))\\ &&y&&&>&0&(\text{delimitated by plane} \ (2))\\ &&&&z&>&0&(\text{delimitated by plane} \ (3))\\ x&&&&&<&0.5&(\text{delimitated by plane} \ (4))\\ &&y&&&<&0.5&(\text{delimitated by plane} \ (5))\\ &&&&z&<&0.5&(\text{delimitated by plane} \ (6))\\ x&+&y&+&z&<&1&(\text{delimitated by plane} \ (7)) \end{cases}$$

The region of faisability $F$ (which is a truncated cube) has exact volume $5/48$, but instead of calculating it exactly, as I understand your purpose, you can work with approximated volumes. It suffices for that

a) to have a bounding parallelepiped B (with faces parallel to axes) for F.

b) to send $10,000$ or $100,000$ or $1,000,000$ "shoots" that either "hit the targe (feasability volume) or miss it.

c) Counting the ratio

number of points fallen in F / total number of points

is asymptoticaly like computing vol(F)/vol(B).

In the case described by inequalities (1), one would write a (Matlab) program like this :

n=100000;
c=0;
V0=1/8;
for k=1:n
    x=0.5*rand;y=0.5*rand;z=0.5*rand;
    if x+y+z<1 % constraint (7)
        c=c+1; % target hitted : increase count 
    end;
end;
V=(c/n)*V0; %according to relationship V/V0=c/n

(recall : rand = uniformly distributed pseudo-random result on $[0,1]$ ; in this way, constraints (1) to (6) are naturally fulfilled). Running this program, one gets a result around 1.04, very close to the exact one $5/48$. If you want to increase average precision, just take a bigger $n$.