我有一个程序,我想在其中模拟一个队列.为了加快速度(许多不同参数的)我认为我可以使用一个并行回路,然而队列对象(或者至少是对象中的对象),而它们都要么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) 我想知道我是否可以在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。