小编R.v*_*.vW的帖子

仍然共享由不同线程单独创建的对象

我有一个程序,我想在其中模拟一个队列.为了加快速度(许多不同参数的)我认为我可以使用一个并行回路,然而队列对象(或者至少是对象中的对象),而它们都要么MGCC函数或队列内创建仍然共享宾语.我有没有忘记并行功能?

给出麻烦的对象是queue.MyHeap.

(如果需要更多信息,请询问,因为我遗漏了很多东西,使其更容易阅读,就像您在队列对象中看到的那样).

Parallel.ForEach(a, (numbers) =>
{                   
    MGcC(a);
});        

static public Tuple<Customer[,], List<Interval>[]> MGcC(int a)
{
    Queue queue = new Queue(a);
    return queue.Simulate(writeFile);
}

public class Queue
{
    Func<object, double> arrivalFunction;
    Func<object, double> servingFunction;
    double lambda;
    double v;
    object serviceObject;
    int minServers;
    bool decision;

    int idleServers;
    int activeServers;
    int amountInOrbit;
    protected minHeap myHeap;

    public Queue(double lambda, double v, object serviceObject, int servers, Func<object, double> arrivalFunction, Func<object, double> servingFunction, bool decision = false)
    {
        this.arrivalFunction = arrivalFunction;
        this.servingFunction = servingFunction;
        this.lambda …
Run Code Online (Sandbox Code Playgroud)

c# parallel.foreach

1
推荐指数
1
解决办法
45
查看次数

我可以在 PuLP 中制作 Min Z = max(a,b,c)

我想知道我是否可以在PuLP 中创建一个多目标函数,通过这样做我可以在PuLP 中创建一个 Min Z = max(a,b,c),但是在使用此代码时

    ilp_prob = pulp.LpProblem("Miniimize Problem", pulp.LpMinimize)
    x = []
    if m >3:
        return 1,1
    for i in range(m):
        temp = []
        for j in range(len(jobs)):
            temp += [pulp.LpVariable("x_%s_%s" %((i+1),(j+1)),0,1, cat = 'Binary')]
        x+= [temp]
    ilp_prob += max([pulp.lpSum([jobs[j]*x[i][j] for j in range(len(jobs))] for i in range(m))])
    for i in range(len(jobs)):
         ilp_prob += pulp.lpSum([x[j][i] for j in range(m)])==1 
    ilp_prob.solve()
Run Code Online (Sandbox Code Playgroud)

它只返回 x[0] 中的所有 1,以及 x[0] 中的所有 0。

python mathematical-optimization linear-programming pulp

0
推荐指数
1
解决办法
1748
查看次数