示例#1
0
文件: mc_worker.c 项目: lmntal/slim
/* 最適コストを可能ならば更新する
 * f==true: minimize
 * f==false: maximize */
void lmn_update_opt_cost(LmnWorkerGroup *wp, State *new_s, BOOL f)
{
  if (env_threads_num() >= 2) workers_opt_end_lock(wp);
  if ((f && workers_opt_cost(wp) > state_cost(new_s)) ||
      (!f && workers_opt_cost(wp) < state_cost(new_s))) {
    workers_opt_end_state(wp) = new_s;
  }
  if (env_threads_num() >= 2) workers_opt_end_unlock(wp);
}
示例#2
0
文件: mc_worker.c 项目: lmntal/slim
LmnCost workers_opt_cost(LmnWorkerGroup *wp)
{
  LmnCost cost;
  State *opt = workers_opt_end_state(wp);
  if (!opt) {
    cost = lmn_env.opt_mode == OPT_MINIMIZE ? ULONG_MAX : 0;
  } else {
    cost = state_cost(opt);
  }
  return cost;
}
示例#3
0
        double default_uniform_t::trajectory_cost(const trajectory_t& t)
        {
            PRX_ASSERT(t.size()>0);
            
            double cost = 0;
            trajectory_t::const_iterator i = t.begin();
            trajectory_t::const_iterator j = t.begin();
            j++;

            for ( ; j != t.end(); ++i,++j)
            {
                cost+=dist(*i,*j)*state_cost(*j);
            }
            return cost;
        }
示例#4
0
文件: state.c 项目: ysm001/slim
/** Printer
 * ownerはNULLでもok */
void dump_state_data(State *s, LmnWord _fp, LmnWord _owner)
{
  FILE *f;
  StateSpace owner;
  unsigned long print_id;
#ifdef KWBT_OPT
  LmnCost cost = lmn_env.opt_mode != OPT_NONE ? state_cost(s) : 0UL;
#endif

  /* Rehashが発生している場合,
   * dummyフラグが真かつエンコード済みフラグが偽のStateオブジェクトが存在する.
   * このようなStateオブジェクトのバイナリストリングは
   * Rehashされた側のテーブルに存在するStateオブジェクトに登録されているためcontinueする. */
  if (is_dummy(s) && !is_encoded(s)) return;

  f     = (FILE *)_fp;
  owner = (StateSpace)_owner;
  {
    /* この時点で状態は, ノーマル || (dummyフラグが立っている && エンコード済)である.
     * dummyならば, バイナリストリング以外のデータはオリジナル側(parent)に記録している. */
    State *target = !is_dummy(s) ? s : state_get_parent(s);
    if (owner) {
      print_id = state_format_id(target, owner->is_formated);
    } else {
      print_id = state_format_id(target, FALSE);
    }
  }

  switch (lmn_env.mc_dump_format) {
  case LaViT:
    fprintf(f, "%lu::", print_id);
    state_print_mem(s, _fp);
    break;
  case FSM:
    /* under constructions.. */
    fprintf(f, "1\n");
    break;
  case Dir_DOT:
    if (state_succ_num(s) == 0) {
      fprintf(f, "  %lu [style=filled, fillcolor = \"#C71585\", shape = Msquare];\n",
                  print_id);
    }
    break;
  case CUI:
  {
    BOOL has_property = owner && statespace_has_property(owner);
#ifdef KWBT_OPT
    fprintf(f, "%lu::%lu::%s"
            , print_id, cost
             , has_property ? automata_state_name(statespace_automata(owner),
                                                  state_property_state(s))
                            : "");
#else
    fprintf(f, "%lu::%s"
             , print_id
             , has_property ? automata_state_name(statespace_automata(owner),
                                                  state_property_state(s))
                            : "");
#endif
    state_print_mem(s, _fp);
    break;
  }
  default:
    lmn_fatal("unexpected");
    break;
  }
}