AnyLogi c - не удается решить или не является проблемой на местах - PullRequest
1 голос
/ 27 мая 2020

Я добавляю нового агента и популяцию агентов ( Магазин / магазины ) в модель AnyLogi c и копирую существующий код для Работает / работает . Все работает кроме магазин (строчные). Обыскали все программное обеспечение, чтобы найти, где определено работа (в нижнем регистре) (чтобы сделать то же самое для магазин ), но безрезультатно; не может найти ничего, что объясняло бы, почему интерпретируется работа , а не магазин . (извините, я знаю, что вопрос сформулирован не лучшим образом - здесь абсолютный новичок). Это может быть AnyLogi c specifici c вопрос?

Вот строка с проблемой ( shop сразу после p.)

p.shop = shops.get( uniform_discr( 0, shops.size()-1 ) );

и вот полный код:

//setup work locations
for( int i=0; i<works.size(); i++ ) {
    Work w = works.get(i);
    w.X = 540 + 65 * ( i % 3 );
    w.Y = 30 + 50* ( i / 3);
}
for( int i=0; i<shops.size(); i++ ) {
    Shop s = shops.get(i);
    s.X = 750 + 65 * ( i % 3 );
    s.Y = 30 + 50* ( i / 3);
}
//setup families
for( int i=0; i<TotalFamilies; i++ ) {
    //create a Family object
    Family f = add_families();
    //set home location
    f.X = 50 * ( i % 10 );
    f.Y = 40 * ( i / 10 );
    //add family members
    int size = uniform_discr( 2, 5 );
    for( int j=0; j<size; j++ ) {
        //create a person
        Person p = add_people();
        //add to the family
        f.members.add( p );
        p.family = f;
        if (p.old == true) 
        {f.elderHome = true;
        nOld++;};
        //set its home location (in family house)
        p.XHome = f.X + 5 + 5 * ( j % 3 );
        p.YHome = f.Y + 6 - 5 * ( j / 3 ) ;
        p.jumpTo( p.XHome, p.YHome );
        //assign work and shops
        p.shop = shops.get( uniform_discr( 0, shops.size()-1 ) );
        p.work = works.get( uniform_discr( 0, works.size()-1 ) );
    }
} 
//infect three random people at the beginning of the simulation

for( int i=0; i<3; i++ )
    people.get( uniform_discr( people.size()-1 )).
        illness.receiveMessage( "Infection" );

1 Ответ

1 голос
/ 27 мая 2020

work определяется в типе агента Person как параметр или переменная.

Если вы отмечаете ошибку для shop, это означает, что ваш тип агента Person не имеет переменной shop (то есть типа Shop). Добавьте его, и go ошибка исчезнет.

PS: Сделайте еще несколько уроков и прочтите об объектно-ориентированном программировании, чтобы лучше понять основные c принципы:)

...