You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Loading of editable appraisers

Appraisers are loaded during program startup according to the instructions specified in PacorBat.ini. Each appraiser is loaded using the LoadExternalGrading command which admits the modifier flags /edit, /profile, and /parents with the following meaning:

FlagParametersDescription
/filefilenameAppraiser from <filename> is loaded as read-only.
/editfilenameAppraiser from <filename> is loaded as editable.
/profilefilenameProfiles are read from <filename>.
/parentsfilename1[;filename2...]Specifies parent files which this appraiser depends upon. If the parent files are edited, then this appraiser is also considered updated.
/editsourcefilename<filename> is used as a default source of parameters.

Path to the file can be specified either as absolute or relative to the batch file. Standard path specification variables like %ProgramData% can be used too.

A simple loading command may look as follows (here LocalAppraiser.txt is the appraiser file, and LocalAppraiser.pro contains its profiles):

LoadExternalGrading /edit LocalAppraiser.txt /profile LocalAppraiser.pro

One file may contain one or more appraisers. All editable appraisers would be available for selection on the panels Appraiser Interval Editor and Appraiser Profiles. Currently the editor deals only with the interval border values. If the appraiser contains no editable entities, it would not be seen in the list. When an appraiser is edited and saved, its file is reloaded, as are all files (if any) for which this one was specified as parent.

Switching of active appraiser in the editor does not entail switching of active appraiser in the optimization module.

Intervals editing

All editable intervals are classified into cut parameters and symmetry parameters based on their name prefix: names starting with Restriction_ denote cut parameters, and those starting with Variation_ are considered symmetry parameters. Cut parameters may have arbitrary values. Symmetry parameters always have left border 0, which is not specified in the file and not available for editing.

For example, here is a description of the table width parameter:

 interval : Restriction_Table : DC_TableDiameter : : : EX 55 59 VG 54 60.5 GD 53 62.5 FR 52.5 64.5 : (%) : "Intervals for Table"

When viewed in editor, it is represented as follows:

The purpose of global editor buttons is described below.

ButtonFunction
Show/Hide AppraiserToggles the appraiser selection dropdown list.
Show/Hide ParametersToggles the table of parameters.
Show/Hide IntervalsToggles the visual representation of intervals in the bottom of the window (it can be used for editing as well).
Show/Hide Info

Toggles the display of overall parameter info: Grid, Minimum, and Maximum.

  • Grid specifies the step size for a parameter. All changes are rounded to the multiples of it.
  • Minimum and maximum are the borders within which the intervals can be edited. The editor would not allow entering values outside of these borders.
View cutSwitches to the list of cut parameters.
View SymmetrySwitches to the list of symmetry parameters.
UndoUndoes the most recent change, if any.
RedoRedoes the most recently undone change, if any.
Revert to fileReverts the selected parameters to the values in the file.
Revert to originalReverts the selected parameters to the values in the profile.

To edit an interval:

  1. Select the appraiser from a dropdown list, then select a profile on the Appraiser profile panel. The appraiser should be specified as editable in the file and also loaded as editable (see the syntax of the LoadExternalGrading command above), otherwise the editor is rendered view-only.
  2. (Optionally) Click Link profile and appraiser, so that all changes are applied to the profile and to the appraiser simultaneously.
  3. Select the cutting type. Note that the list of cutting types contain a special position called Common parameters. These are parameters applicable to all cuts. Specific cuts may redefine the parameters defined in it.
  4. Switch to cut parameters or symmetry parameters, depending on your purpose.

Below are the details of the interface dealing with the individual border values.

Double-clicking in any cell of the editable profile transforms it into an input field. Selection can be moved around using Tab / Shift+Tab keys.

You may change the field by typing the values in, or by dragging the intervals in the bottom of the window.

Pressing Esc finishes the editing and discards changes. Pressing Enter or clicking in another cell finishes the editing and keeps the newly entered value in the edited cell.

If the entered value collides with another interval border on the same side (no matter more strict or more loose), when editing is finished, that border is changed to the same value as the edited one, so as to maintain consistency. Such a change is considered single from the point of view of Undo/Redo, i.e., Undo would revert both borders at once to their corresponding previous values.

If the entered value collides with the opposite border, when editing is finished, the value of the edited border is set to the value of the opposite border, rather than the actual entered value.

If the appraiser definition file happens to contain inconsistent intervals, these are shown in red upon opening.

Changed values are shown in bold. The presence of unsaved changes is further indicated by the blue bullet in the name column of the corresponding line and the bold Save button at the upper right corner of the panel.

To save the changes, click Save. There are three equivalent Save buttons: on the Appraiser interval editor panel, on the Appraiser Profile panel, and on the Appraiser tab of the main application window.

Recalculation of optimization forms

For correct working of the optimization routine, the optimization forms must be recalculated (rebuilt) after the change of intervals. Being a time-consuming operation, it is not initiated automatically, and has to be started manually by clicking Recalculate cutting, or Recalculate all cuttings (if more than one cutting type were changed).

If the selected cut can't be recalculated, the buttons are disabled.
While the forms are being recalculated, the buttons are also disabled. After the recalculation is completed, click Save to rewrite the *.dmc and *.dmcx files.

Creation and editing of profiles

An appraiser may contain multiple profiles. A profile contains interval borders for all cutting types, as well as the starting and optimization forms. It is impossible to have profiles with different cuts, or with different methods of grading of the same cuts. The profiles may differ only in the interval borders and the sets of forms.

All profiles are listed on the Appraiser Profile panel.

Вверху панели расположены кнопки New Profile, New copy of Profile, Delete Profile, Copy data to Appraiser, Copy data to Profile, Set to defaults, Link Profile and Appraiser. Эти кнопки продублированы на основной ленте приложения в разделе Appraiser/Profile. Следом идёт поле выбора активного оценщика и список доступных профилей активного оценщика.

Профиль можно создать либо из оценщика либо как копию другого профиля. Имя профиля должно быть уникальным в пределах одного оценщика. При создании профиля происходит копирование всех связанных с данным оценщиком файлов со стартовыми и оптимизационными формами для всех огранок. Все эти файлы располагаются в той же папке, что и формы оценщика, и дополнительно содержат в названии суффикс sXXXX, позволяющий идентифицировать их именно как файлы определённого профиля.

Редактировать интервалы можно только в оценщике. Редактор позволяет копировать интервалы выбранных параметров из оценщика в профиль и обратно из профиля в оценщик.

Кнопка Link profile and Appraiser позволяет связать профиль с текущим оценщиком. Как правило, она должна быть нажата. В этом случае любые действия по редактированию оценщика автоматически приводят к изменению профиля. И наоборот, переключение профиля автоматически приводит к изменению и перезагрузке оценщика.

Некоторые профили могут быть защищены от изменения данных.

Application 1. Creating a new cut

Оценщики предыдущего поколения содержали одну таблицу интервалов, список параметров используемых при оптимизации, стартовую и оптимизационные формы. Структура редактируемых оценщиков (Version= 7) более сложная и более гибкая. Для его работоспособности необходимо указать следующее:

  • значение (параметр) который оценивается
  • оценка данного значения (как правило редактируемый или не редактируемый интервал)
  • общая оценка камня (набор оценок различных параметров)
  • индивидуальная оценка параметров, выводимая в панели бриллианта
  • список параметров используемых в оптимизации
  • интервалы для использования в оптимизации
  • стартовая и оптимизационные формы

В качестве примера добавления огранки используем внутреннюю огранку "Princess 3s". Предыдущий оценщик содержал такой блок для работы этой огранки:

[cut]
  Name:       "Princess 3s"
  Quality:    EX VG GD FR
  Parameters: DownHeight_GIA (%) \
    DownAngleLevel0 (°) \
    GirdleHeight_GIA (%) \
    Table (%) \
    FullHeight (%) \
    GirdleRatio (.) \
    UpAngle (°) \
    UpAngleLevel1 (°) \
    UpCleanLevel1 (%) \
    VirtualCuletOffsetX (°) \
    VirtualCuletOffsetY (°) \
    DownCleanLevel1 (%) \
    UpHeight_GIA (%) \
    DownCleanLevel2 (%) \
    Unknown_33 (°)
  Optimize:   Table Table Table \
    DownAngleLevel0 DownAngleLevel0 DownAngleLevel0 \
    GirdleHeight GirdleHeight_GIA GirdleHeight_GIA \
    UpAngle UpAngle UpAngle_uHFix \
    DownAngle DownHeight_GIA DownHeight_GIA \
    GirdleRatio GirdleRatio GirdleRatio \
    UpAngleLevel0 UpAngle UpAngle \
    DownAngleLevel1 DownCleanLevel1 DownCleanLevel1 \
    Culet VirtualCuletOffsetX VirtualCuletOffsetX \
    CuletOffsetX VirtualCuletOffsetY VirtualCuletOffsetY \
    OP_1 UpAngleLevel1 UpAngleLevel1 \
    OP_2 UpCleanLevel1 UpCleanLevel1 \
    OP_3 VirtualCuletOffsetX VirtualCuletOffsetX \
    OP_4 VirtualCuletOffsetY VirtualCuletOffsetY \
    OP_5 DownCleanLevel2 DownCleanLevel2 \
    OP_6 Unknown_33 Unknown_33 \
  Mass: 0.01  100000 \
    52 63.0 55 61 1.5 3.5 66.5 72 67.0 74.0 0.980 1.040 33 45 28 40 45 55 -1.00 +1.00 -1.00 +1.00 70 80 8 13 25 40 5 10 \
    50 65.0 54 63 1.3 4.5 64.5 75 65.0 76.0 0.970 1.050 32 48 27 43 43 57 -1.02 +1.02 -1.02 +1.02 65 85 7 15 24 42 4 11 \
    48 66.0 53 64 1.1 5.5 62.5 77 63.0 78.0 0.960 1.060 31 50 26 45 41 59 -1.04 +1.04 -1.02 +1.04 60 90 6 16 23 43 3 12 \
    46 69.0 52 65 1.0 6.5 60.5 79 61.0 80.5 0.920 1.080 30 52 25 47 40 60 -1.09 +1.09 -1.04 +1.09 50 95 5 17 20 45 2 14
[end]
 
; Check 2456250 diamonds. Inside group 682500. Weights: 1.05993 1.07332 1.02597 1.12828
[fixedcut]
  Name: "Princess 3s"
  Parameters: Table (%) DownHeight_GIA UpCleanLevel1 (%) UpAngle (°) DownAngleLevel0 (°) DownCleanLevel1 (%) DownCleanLevel2 (%) GirdleAngle (°) VirtualCuletOffsetX (°) VirtualCuletOffsetY (°) GirdleHeight_GIA (%)
  OptimizationSet1: EX 71.99945100 0.60249450 52.49950050 33.00119900 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 71.99945100 0.60249450 52.49950050 33.00119900 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 71.99945100 0.52001099 50.00000000 44.99880100 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 69.07679981 0.52001099 50.00000000 42.86079851 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 2.00009950
  OptimizationSet2: EX 71.99945100 0.57500000 50.00000000 44.99880100 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
; Check 2456250 diamonds. Inside group 737500. Weights: 1.10070 1.13218 1.12642 1.20632
  OptimizationSet1: VG 74.99895100 0.61249250 53.49930050 32.00159900 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 74.99895100 0.61249250 53.49930050 32.00159900 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 66.79725341 0.50001499 50.00000000 44.92031219 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 72.37447550 0.61249250 46.50069950 47.99840100 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 1.30031900
  OptimizationSet2: VG 72.37447550 0.57500000 50.00000000 47.99840100 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
; Check 2456250 diamonds. Inside group 825625. Weights: 1.16290 1.16801 1.17259 1.26076
  OptimizationSet1: GD 76.99855100 0.65998201 50.00000000 31.00189900 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 76.99855100 0.65998201 50.00000000 31.00189900 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 66.12251648 0.48001799 50.00000000 46.19225951 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 69.75000000 0.61499100 45.50089950 49.99810100 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 1.10043900
  OptimizationSet2: GD 69.75000000 0.57000000 45.50089950 49.99810100 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
; Check 2456250 diamonds. Inside group 868375. Weights: 1.17799 1.20275 1.22186 1.32968
  OptimizationSet1: FR 78.99815100 0.68997701 50.00000000 30.00219900 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 5.12472550
  OptimizationSet2: FR 78.99815100 0.68997701 50.00000000 30.00219900 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 5.12472550
  OptimizationSet2: FR 65.55792105 0.46002299 50.00000000 47.45263260 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 6.49945100
  OptimizationSet2: FR 69.75000000 0.63248850 45.00099950 51.99780100 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 1.00054900
  OptimizationSet2: FR 69.75000000 0.57500000 45.00099950 51.99780100 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 6.49945100

  Start: [cutname]     69.25000000 0.57500000 50.00000000 39.00000000 58.00000000 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.00000000
[end]

Graded values

В качестве оцениваемых значений будет использовать параметры указанные в строке Parameters.

Grading of parameters

Для оценки выбранных параметров создадим набор редактируемых интервалов для раздела Cut.

interval : Restriction_Table               : DC_TableDiameter         : : : EX 66.5 72 VG 64.5 75 GD 62.5 77 FR 60.5 79 : (%) : "Intervals for Table"
interval : Restriction_CrownAngle          : DC_CrownAngle            : : : EX 33 45 VG 32.0 48 GD 31 50 FR 30 52 : (°) : "Intervals for Crown Angle"
interval : Restriction_CrownAngle2         : DC_CrownAngleLevel2      : : : EX 28 40 VG 27 43 GD 26 45 FR 25 47 : (°) : "Intervals for Crown Angle Level 2"
interval : Restriction_CrownCleanLevel1    : DC_CrownCleanLevel1      : : : EX 45 55 VG 43 57 GD 41 59 FR 40 60 : (%) : "Intervals for Crown Clean Level 1"
interval : Restriction_PavilionAngle1      : DC_PavilionAngleLevel1   : : : EX 55 61 VG 54 63 GD 53 64 FR 52 65 : (°) : "Intervals for Pavilion Angle Level 1"
interval : Restriction_PavilionCleanLevel1 : DC_PavilionCleanLevel1   : : : EX 70 80 VG 65 85 GD 60 90 FR 50 95 : (%) : "Intervals for Pavilion Clean Level 1"
interval : Restriction_PavilionCleanLevel2 : DC_PavilionCleanLevel2   : : : EX 25 40 VG 24 42 GD 23 43 FR 20 45 : (%) : "Intervals for Pavilion Clean Level 2"
interval : Restriction_GirdleRatio         : DC_GirdleRatio           : : : EX 0.98 1.04 VG 0.97 1.05 GD 0.96 1.06 FR 0.92 1.08 : (.) : "Intervals for Girdle Ratio"
interval : Restriction_GirdleBezel         : DC_GirdleThickness       : : : EX 1.5 3.5 VG 1.3 4.5 GD 1.1 5.5 FR 1 6.5 : (%) : "Intervals for Girdle Thickness"
interval : Restriction_VirtualCuletX       : DC_VirtualCuletOffsetX   : : : EX -1.0 1.0 VG -1.02 1.02 GD -1.04 1.04 FR -1.09 1.09 : (°) : "Intervals for Virtual Culet X"
interval : Restriction_VirtualCuletY       : DC_VirtualCuletOffsetY   : : : EX -1.0 1.0 VG -1.02 1.02 GD -1.02 1.04 FR -1.04 1.09 : (°) : "Intervals for Virtual Culet Y"
interval : Restriction_CornerBreakAngle    : DC_CornerBreakAngle      : : : EX 5 10 VG 4 11 GD 3 12 FR 2 14 : (°) : "Intervals for Corner Break Angle"
interval : Restriction_CrownHeight         : DC_CrownHeight           : : : EX 8.0 13 VG 7 15 GD 6 16 FR 5 17 : (%) : "Intervals for Crown Height"
interval : Restriction_PavilionDepthBezel  : DC_PavilionDepthBezel    : : : EX 52 63 VG 50 65 GD 48 66 FR 46 69 : (%) : "Intervals for Pavilion Depth"
interval : Restriction_TotalHeight         : DC_TotalHeight           : : : EX 67 74 VG 65 76 GD 63 78 FR 61 80.5 : (%) : "Intervals for Total Height"

Overall stone grading

По существующему соглашению, общая оценка камня состоит из оценки оценки Restrictions и Symmetry. Могут быть и дополнительные оценки, но для рассматриваемой огранки пока есть только Restrictions. Поэтому, для начала соберём все оценки выбранных параметров в оценку Restrictions

grading : Restrictions : Restriction_CornerBreakAngle Restriction_TotalHeight Restriction_CrownAngle Restriction_GirdleBezel \
  Restriction_CrownAngle2 Restriction_CrownHeight Restriction_PavilionDepthBezel Restriction_PavilionAngle1 Restriction_Table \
  Restriction_VirtualCuletX Restriction_VirtualCuletY Restriction_GirdleRatio Restriction_CrownCleanLevel1 Restriction_PavilionCleanLevel1 \
  Restriction_PavilionCleanLevel2 : Bad : 

а затем создадим финальную оценку Main, состоящую из одной Restrictions

grading : Main : Restrictions : Bad : Final

Individual grading of parameters

Для индикации в панели бриллианта индивидуальной оценки каждого параметра необходимо определить список с названием IndividualList и задать в нём соответствие параметра и его интервалов.

intervallist : IndividualList : name id : \
  Restriction_CornerBreakAngle, DC_CornerBreakAngle; \
  Restriction_TotalHeight, DC_TotalHeight; \
  Restriction_CrownAngle, DC_CrownAngle; \
  Restriction_GirdleBezel, DC_GirdleThickness; \
  Restriction_CrownAngle2, DC_CrownAngleLevel2; \
  Restriction_CrownHeight, DC_CrownHeight; \
  Restriction_PavilionDepthBezel, DC_PavilionDepthBezel; \
  Restriction_PavilionAngle1, DC_PavilionAngleLevel1; \
  Restriction_Table, DC_TableDiameter; \
  Restriction_VirtualCuletX, DC_VirtualCuletOffsetX; \
  Restriction_VirtualCuletY, DC_VirtualCuletOffsetY; \
  Restriction_GirdleRatio, DC_GirdleRatio; \
  Restriction_CrownCleanLevel1, DC_CrownCleanLevel1; \
  Restriction_PavilionCleanLevel1, DC_PavilionCleanLevel1; \
  Restriction_PavilionCleanLevel2, DC_PavilionCleanLevel2; \
  : "List for individual grading of parameters in Panel"

Optimization parameters

Список параметров, используемых в оптимизации составляется по списку Optimize исходного оценщика

Optimize: \
  DC_TableDiameter DC_TableDiameter DC_TableDiameter \
  DC_GirdleThicknessValue DC_GirdleThicknessBezel DC_GirdleThicknessBezel \
  DC_CrownAngle_Table DC_CrownAngle_Table DC_CrownAngle_CrownHeight_Fixed \
  DC_PavilionAngle DC_PavilionDepthBezel DC_PavilionDepthBezel \
  DC_GirdleRatio DC_GirdleRatio DC_GirdleRatio \
  DC_CrownAngleLevel1 DC_CrownAngle_Table DC_CrownAngle_Table \
  DC_PavilionAngleLevel1 DC_PavilionAngleLevel1 DC_PavilionAngleLevel1 \
  DC_PavilionAngleLevel2 DC_PavilionCleanLevel1 DC_PavilionCleanLevel1 \
  DC_Culet DC_VirtualCuletOffsetX DC_VirtualCuletOffsetX \
  DC_CuletX DC_VirtualCuletOffsetY DC_VirtualCuletOffsetY \
  OP_1 DC_CrownAngleLevel2 DC_CrownAngleLevel2 \
  OP_2 DC_CrownCleanLevel1 DC_CrownCleanLevel1 \
  OP_3 DC_VirtualCuletOffsetX DC_VirtualCuletOffsetX \
  OP_4 DC_VirtualCuletOffsetY DC_VirtualCuletOffsetY \
  OP_5 DC_PavilionCleanLevel2 DC_PavilionCleanLevel2 \
  OP_6 DC_CornerBreakAngle DC_CornerBreakAngle \

Optimization intervals

Необходимо явно указать наборы оптимизационных интервалов. Имена таких интервалов должны начинаться с opt_ и каждый из них должен быть связан непосредственно с идентификатором параметра огранки.

optimizationinterval : opt_ca  : DC_CornerBreakAngle             : : Restriction_CornerBreakAngle    : left : right : , : (°) : "Optimization for Corner Break Angle"
optimizationinterval : opt_th  : DC_TotalHeight                  : : Restriction_TotalHeight         : left : right : , : (%) : "Optimization for Total Height"
optimizationinterval : opt_b   : DC_CrownAngle_Table             : : Restriction_CrownAngle          : left : right : , : (°) : "Optimization for Crown Angle"
optimizationinterval : opt_gi  : DC_GirdleThicknessBezel         : : Restriction_GirdleBezel         : left : right : , : (%) : "Optimization for Girdle Thickness"
optimizationinterval : opt_b2  : DC_CrownAngleLevel2             : : Restriction_CrownAngle2         : left : right : , : (°) : "Optimization for Crown Angle Level 2"
optimizationinterval : opt_hc  : DC_CrownHeight_CrownAngle_Fixed : : Restriction_CrownHeight         : left : right : , : (%) : "Optimization for Crown Height"
optimizationinterval : opt_pdb : DC_PavilionDepthBezel           : : Restriction_PavilionDepthBezel  : left : right : , : (%) : "Optimization for Pavilion Depth"
optimizationinterval : opt_a1  : DC_PavilionAngleLevel1          : : Restriction_PavilionAngle1      : left : right : , : (°) : "Optimization for Pavilion Angle Level 1"
optimizationinterval : opt_t   : DC_TableDiameter                : : Restriction_Table               : left : right : , : (%) : "Optimization for Table"
optimizationinterval : opt_vcx : DC_VirtualCuletOffsetX          : : Restriction_VirtualCuletX       : left : right : , : (°) : "Optimization for Virtual Culet X"
optimizationinterval : opt_vcy : DC_VirtualCuletOffsetY          : : Restriction_VirtualCuletY       : left : right : , : (°) : "Optimization for Virtual Culet Y"
optimizationinterval : opt_rt  : DC_GirdleRatio                  : : Restriction_GirdleRatio         : left : right : , : (.) : "Optimization for Girdle Ratio"
optimizationinterval : opt_c1  : DC_CrownCleanLevel1             : : Restriction_CrownCleanLevel1    : left : right : , : (%) : "Optimization for Crown Clean Level 1"
optimizationinterval : opt_p1  : DC_PavilionCleanLevel1          : : Restriction_PavilionCleanLevel1 : left : right : , : (%) : "Optimization for Pavilion Clean Level 1"
optimizationinterval : opt_p2  : DC_PavilionCleanLevel2          : : Restriction_PavilionCleanLevel2 : left : right : , : (%) : "Optimization for Pavilion Clean Level 2"

Start form and optimization forms

Поскольку оценщик является редактируемым, то после изменения границ интервалов имеющиеся оптимизационные формы могут выйти за пределы нужной группы, что сильно снизит эффективность работы алгоритмов. Выход за пределы группы стартовой формы вообще сделает оптимизацию по данной огранке неработоспособной. Для пересчёта форм они должны быть заданы следующим образом.

form : "Start and optimization" : Start "DMCs\Princess 3s_Start.dmc"; \
  SetDiamond1 EX DMCs\Princess_3s_EX_Set1.dmcx, VG DMCs\Princess_3s_VG_Set1.dmcx, GD DMCs\Princess_3s_GD_Set1.dmcx, FR DMCs\Princess_3s_FR_Set1.dmcx; \
  SetDiamond2 EX DMCs\Princess_3s_EX_Set2.dmcx, VG DMCs\Princess_3s_VG_Set2.dmcx, GD DMCs\Princess_3s_GD_Set2.dmcx, FR DMCs\Princess_3s_FR_Set2.dmcx \
  : allacceptable : auto : Type1 : "Standard 10 optimization min-max forms for all grades"

В некоторых случаях автоматический пересчёт оптимизационных форм невозможен. Например, оценщик 15Sep2016 использует для огранки BrilliantF64 помимо интервальных ещё и не интервальные оценки из Facetware. В этом случае необходимо отключить автоматический пересчёт форм, заменив "... : auto : ..." на "... : fixed : ...". При этом также необходимо помнить, что после изменения интервалов этой огранки необходимо вручную заменить в оценщике dmc и dmcx файлы с формами. Редактор оценщиков в настоящее время не располагает такими возможностями. Всё что он сделает - это выведет в терминале программы предупреждение о том, что стартовая форма или "такая-то оптимизационная форма" не находится в пределах нужной группы и будет её игнорировать.

Conclusion

Настоящий пример переноса оценщика огранки из не редактируемого вида в редактируемый является фактически прямым переносом: что было в старом оценщике без изменений переносится в новый. Имеет смысл подходить к этому процессу более творчески. Например, параметр виртуального сдвига калетты скорее должен принадлежать к разделу Variation нежели Restriction.

interval : Variation_VirtualCuletX       : DC_VirtualCuletOffsetX   : : : EX 0 1.0 VG 0 1.02 GD 0 1.04 FR 0 1.09 : (°) : "Intervals for Virtual Culet X"

Тогда соответствующий оптимизационный интервал будет выглядеть вот так

optimizationinterval : opt_vcx : DC_VirtualCuletOffsetX : : Variation_VirtualCuletX : -right : right : , : (°) : "Optimization for Virtual Culet X"

Далее необходимо определить оценку Symmtery, изменить общую оценку Main и список индивидуальной оценки параметров. Скорее всего, с точки зрения оценки данной огранки нет никакой разницы между DC_VirtualCuletOffsetX и DC_VirtualCuletOffsetY. Поэтому, интервал Variation стоит определить только для одного из них, причём с нейтральным названием Variation_VirtualCulet, а вот оценку уже делать для двух разных параметров. Какие-то общие рекомендации для подобных случаев делать довольно сложно,так как они весьма специфичны для каждой огранки и оценщика. Например, обычный сдвиг калетты для огранки Brilliant подчиняется правилу "независимости" для направлений Ox и Oy (границы сдвига будут одинаковы в каждом направлении), а для огранки Emerald они уже могут быть неодинаковы.

  • No labels